当前位置: 首页 > news >正文

Linux 下 ETCD 安装、配置与命令使用总结

在这里插## 标题入图片描述

大家好,我是程序员小羊!

前言:

Linux 下 ETCD 安装、配置与命令使用总结

ETCD 是一个分布式键值存储系统,广泛用于服务发现、分布式锁、配置管理等场景,特别是在 Kubernetes 集群中发挥着至关重要的作用。ETCD 的高可用性和一致性使其成为分布式系统的关键组件。在 Linux 下安装、配置 ETCD 并掌握常用命令对系统管理员和 DevOps 工程师至关重要。本文将详细介绍如何在 Linux 上安装 ETCD、进行基本配置,并使用常用命令进行管理,下面是关于在 Linux 系统上安装、配置 ETCD 以及常用命令的详细总结。


1. ETCD 简介

ETCD 是由 CoreOS 开发的开源分布式键值存储系统,使用 Raft 共识算法确保数据一致性。它主要用于服务发现、配置管理和分布式锁等场景。ETCD 保证了高可用性和数据一致性,非常适合需要强一致性的应用场景。


在这里插入图片描述

2. 安装 ETCD

2.1 安装准备

在开始安装之前,确保系统满足以下要求:

  • 操作系统:ETCD 支持大多数主流 Linux 发行版,如 Ubuntu、CentOS 和 Debian。
  • 工具:需要 wgetcurl 用于下载 ETCD 的二进制包,tar 用于解压缩。
2.2 下载 ETCD

访问 ETCD 的 GitHub 发布页面,获取最新版本的下载链接。以 v3.5.9 为例,使用以下命令下载:

wget https://github.com/etcd-io/etcd/releases/download/v3.5.9/etcd-v3.5.9-linux-amd64.tar.gz

curl -L https://github.com/etcd-io/etcd/releases/download/v3.5.9/etcd-v3.5.9-linux-amd64.tar.gz -o etcd-v3.5.9-linux-amd64.tar.gz
2.3 解压缩和安装

解压下载的文件并将二进制文件移动到系统路径中:

tar -xvf etcd-v3.5.9-linux-amd64.tar.gz
sudo mv etcd-v3.5.9-linux-amd64/etcd /usr/local/bin/
sudo mv etcd-v3.5.9-linux-amd64/etcdctl /usr/local/bin/
2.4 验证安装

检查 ETCD 是否安装成功:

etcd --version

成功的话会显示 ETCD 的版本信息。


3. 配置 ETCD

在这里插入图片描述

3.1 基本配置

ETCD 的基本配置可以通过环境变量设置。创建一个配置文件 /etc/etcd/etcd.conf,包括以下内容:

# ETCD 配置
ETCD_DATA_DIR="/var/lib/etcd"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379"
  • ETCD_DATA_DIR:ETCD 存储数据的目录。
  • ETCD_LISTEN_CLIENT_URLS:ETCD 监听客户端请求的地址。
  • ETCD_ADVERTISE_CLIENT_URLS:ETCD 广播给客户端的地址。
3.2 配置系统服务

为了使 ETCD 成为系统服务,可以创建一个服务文件 /etc/systemd/system/etcd.service

sudo nano /etc/systemd/system/etcd.service

添加以下内容:

[Unit]
Description=etcd key-value store
Documentation=https://github.com/etcd-io/etcd
After=network.target[Service]
Type=notify
EnvironmentFile=/etc/etcd/etcd.conf
ExecStart=/usr/local/bin/etcd \--data-dir=${ETCD_DATA_DIR} \--listen-client-urls=${ETCD_LISTEN_CLIENT_URLS} \--advertise-client-urls=${ETCD_ADVERTISE_CLIENT_URLS}
Restart=always[Install]
WantedBy=multi-user.target
3.3 启动 ETCD 服务

重新加载 systemd 配置并启动 ETCD 服务:

sudo systemctl daemon-reload
sudo systemctl start etcd
sudo systemctl enable etcd

检查 ETCD 服务状态:

sudo systemctl status etcd

4. ETCD 常用命令

ETCD 提供了 etcdctl 工具用于操作和管理 ETCD。以下是一些常用的 etcdctl 命令。

4.1 基本操作
  1. 设置键值

    etcdctl put mykey "myvalue"
    
  2. 获取键值

    etcdctl get mykey
    
  3. 删除键值

    etcdctl del mykey
    
  4. 列出所有键

    etcdctl get "" --prefix
    
4.2 高级操作
  1. 获取键值并设置 TTL(过期时间)

    etcdctl put mykey "myvalue" --ttl=60
    
  2. 查看键的详细信息

    etcdctl get mykey --print-value-only
    
  3. 列出键值并使用分隔符

    etcdctl get "" --prefix --keys-only
    
  4. 监控键的变化

    etcdctl watch mykey
    
  5. 使用事务

    etcdctl txn
    

    可以在 ETCD 中执行复杂的事务操作,例如原子性地执行多个命令。

4.3 备份与恢复
  1. 备份 ETCD 数据

    etcdctl snapshot save snapshot.db
    
  2. 恢复 ETCD 数据

    etcdctl snapshot restore snapshot.db
    

    恢复后需要重新配置 ETCD。


5. ETCD 集群配置

ETCD 支持集群模式,以提高可靠性和可用性。以下是配置 ETCD 集群的基本步骤:

  1. 配置每个节点的 etcd.conf 文件,指定不同的 ETCD_LISTEN_PEER_URLSETCD_INITIAL_ADVERTISE_PEER_URLS

  2. 启动每个 ETCD 节点

    etcd --name node1 --initial-advertise-peer-urls http://localhost:2380 \--listen-peer-urls http://localhost:2380 \--listen-client-urls http://localhost:2379 \--advertise-client-urls http://localhost:2379 \--initial-cluster token=etcd-cluster \--initial-cluster-state new
    
  3. 验证集群状态

    etcdctl member list
    
  4. 添加/删除集群成员

    etcdctl member add <member-name> --peer-urls=<peer-urls>
    etcdctl member remove <member-id>
    

6. 监控和故障排除

  1. 监控 ETCD 状态

    etcdctl endpoint status
    
  2. 查看 ETCD 日志

    journalctl -u etcd
    
  3. 故障排除

    • 网络问题:检查防火墙设置和网络连接。
    • 磁盘问题:确保 ETCD 数据目录有足够的磁盘空间。
    • 配置错误:检查 ETCD 配置文件的语法和内容。

结尾

ETCD 是一个功能强大且稳定的分布式键值存储系统。通过上述步骤,你可以在 Linux 上顺利安装、配置和管理 ETCD。掌握 ETCD 的基本命令和高级操作将帮助你高效地管理分布式系统中的配置和服务发现需求。定期备份和监控 ETCD 数据是确保系统可靠性和数据安全的重要措施。

今天这篇文章就到这里了,大厦之成,非一木之材也;大海之阔,非一流之归也。

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Spark集群部署系列二】Spark StandAlone模式介绍和搭建以及使用
  • Docker运行Cassandra集群
  • 如何选择工厂模式或策略模式:Java设计模式实践指南
  • mmdebstrap:创建 Debian 系统 chroot 环境的利器 ️
  • LeetCode138-随机链表的复制--经典OJ题
  • 视频循环存储的实现
  • 嵌入式学习笔记十三——C语言指针变量、一维数组的指针、快速排序
  • 25考研计算机组成原理复习·3.3主存储器与CPU的连接·3.4外部存储器
  • Web前端开发环境搭建
  • 后台数据库与Excel互联操作
  • 基于大数据的气象数据分析与可视化系统设计与实现【爬虫海量数据,LSTM预测】
  • SSRS rdlc报表 九 在.net core中使用RDLC报表
  • Linux 下查看 CPU 使用率
  • 达梦数据库 逻辑备份还原
  • SQL注入第一关-Less1
  • 【个人向】《HTTP图解》阅后小结
  • Akka系列(七):Actor持久化之Akka persistence
  • CentOS 7 防火墙操作
  • echarts的各种常用效果展示
  • E-HPC支持多队列管理和自动伸缩
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • in typeof instanceof ===这些运算符有什么作用
  • markdown编辑器简评
  • Object.assign方法不能实现深复制
  • SpiderData 2019年2月25日 DApp数据排行榜
  • SQLServer之索引简介
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 用quicker-worker.js轻松跑一个大数据遍历
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 在Unity中实现一个简单的消息管理器
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • 浅谈sql中的in与not in,exists与not exists的区别
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • # dbt source dbt source freshness命令详解
  • ###C语言程序设计-----C语言学习(3)#
  • #14vue3生成表单并跳转到外部地址的方式
  • (2)MFC+openGL单文档框架glFrame
  • (js)循环条件满足时终止循环
  • (JS基础)String 类型
  • (阿里云万网)-域名注册购买实名流程
  • (笔记)M1使用hombrew安装qemu
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (三)uboot源码分析
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (一)基于IDEA的JAVA基础1
  • (一一四)第九章编程练习
  • (转)EOS中账户、钱包和密钥的关系
  • (转)LINQ之路
  • .NET Core 成都线下面基会拉开序幕
  • .net 调用php,php 调用.net com组件 --
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .net知识和学习方法系列(二十一)CLR-枚举
  • @RequestParam,@RequestBody和@PathVariable 区别