etcd安装

etcd有三种集群化启动的配置方案,分别为静态配置启动、etcd自身服务发现、通过DNS进行服务发现,重点讲一下静态配置启动。
根据启动环境,可以选择不同的配置方式。这也是新版etcd区别于旧版的一大特性,它摈弃了使用配置文件进行参数配置的做法,转而使用命令行参数或环境变量来配置参数。

1. 静态配置启动

比较适合于离线环境,在启动整个集群之前,如果已经预先清楚锁要配置的集群大小,以及集群上各节点的地址和端口信息,那么启动时,你就可以通过配置initial-cluster参数进行etcd集群的启动。
在每个etcd机器启动时,配置环境变量或添加启动参数的方式如下:
ETCD_INITIAL_CLUSTER="etcd0=http://10.0.1.10:2380,etcd1=http://10.0.1.11:2380,etcd2=http://10.0.1.12:2380"
ETCD_INITIAL_CLUSTER_STATE=new
参数方法:
-initial-cluster etcd0=http://10.0.1.10:2380,etcd1=http://10.0.1.11:2380,etcd2=http://10.0.1.12:2380 \
-initial-cluster-state new

-initial-cluster参数中配置的url地址必须与各个节点启动时设置的initial-advertise-peer-urls参数相同。initial-advertise-peer-urls参数表示节点监听其他节点同步信号的地址。
如果你所在的网络环境配置了多个etcd集群,为了避免意外发生,最好使用initial-cluster-token参数为每一集群单独配置一个token认证。这样就可以确保每个集群和集群的成员都拥有独特的ID。

综上所述,如果你要配置包含3个etcd节点的集群,那么你在3个机器上的启动命令分别如下所示
$ etcd -name etcd0 -initial-advertise-peer-urls http://10.0.1.10:2380 \
-listen-peer-urls http://10.0.1.10:2380 \
-initial-cluster-token etcd-cluster-1 \
-initial-cluster etcd0=http://10.0.1.10:2380,etcd=http://10.0.1.11:2380,etcd2=http://10.0.1.12:2380 \
-initial-cluster-state new

$ etcd -name etcd1 -initial-advertise-peer-urls http://10.0.1.11:2380 \
-listen-peer-urls http://10.0.1.11:2380 \
-initial-cluster-token etcd-cluster-1 \
-initial-cluster etcd0=http://10.0.1.10:2380,etcd1=http://10.0.1.11:2380,etcd2=http://10.0.1.12:2380 \
-initial-cluster-state new

$ etcd -name etcd2 -initial-advertise-peer-urls http://10.0.1.12:2380 \
-listen-peer-urls http://10.0.1.12:2380 \
-initial-cluster-token etcd-cluster-1 \
-initial-cluster etcd0=http://10.0.1.10:2380,etcd1=http://10.0.1.11:2380,etcd2=http://10.0.1.12:2380 \
-initial-cluster-state new
在初始化完成后,etcd还提供动态增、删、改etcd集群节点的功能,这个需要用到etcdctl命令进行操作。
补充常见参数的解释:
-name:本member的名字。
-initial-advertise-peer-urls:其他member使用,其他member通过该地址与本member交互信息。
-listen-peer-urls:本member侧使用,用于监听其他member发送信息的地址。
-listen-client-urls:本member侧使用,用于监听etcd客户发送信息的地址。该地址用于ASR业务访问。
-advertise-client-urls:etcd客户使用,客户通过该地址与本member交互信息,一定要保证从客户侧能可访问该地址。
-initial-cluster-state:填new。
-initial-cluster:本member侧使用。描述集群中所有节点的信息,本member根据此信息去联系其他member。
-data-dir:指定节点的数据存储目录,这些数据包括节点ID,集群ID,集群初始化配置,Snapshot文件等。

检查集群成员状态:
./etcdctl --endpoints=http://10.1.92.192:23000 member list

2. 运行时节点变更

etcde集群启动完毕后,可以在运行的过程中对集群进行重构,包括核心节点的增加、删除、迁移、替换等。
只有当集群中多数节点正常的情况下,才可以进行运行时的配置管理。因为配置更改的信息也会被etcd当成一个信息存储和同步,如果集群多数节点损坏,集群就失去了写入数据的能力。所以在配置etcd集群数量时,强烈推荐至少配置3个核心节点,配置数量越多,可用性越强。

2.1 节点迁移、替换

当你节点所在的机器出现硬件故障,或节点出现如数据目录损坏等问题,导致节点永久性的不可恢复时,就需要对节点进行迁移或替换。当一个节点失效以后,必须尽快修复,因为etcd集群正常运行的必要条件是集群中多数节点都正常工作。迁移一个节点需要进行4个步骤:
(1)暂停正在运行着的节点程序进程
(2)把数据目录从现有机器拷贝到新机器
(3)使用API更新etcd中对应节点指向机器的url记录更新为新机器的IP
(4)使用同样的配置项和数据目录,在新的机器上启动etcd

2.2 节点增加

增加节点可以让etcd的高可用性更强。如果有3个节点,那么最多允许1个节点失效;如果有5个节点,就可以允许有2个节点失效。同时,增加节点还可以让etcd集群具有更好的读性能。因为etcd的节点都是实时同步的,每个节点上都存储了所有的信息,所以增加节点可以从整体上提升读的吞吐量。
增加一个节点需要进行两步操作:
(1)在集群中增加这个节点的url记录,同时获得集群的信息
(2)使用获得的集群信息启动新etcd节点
实例操作:

其中endpoints是整个etcd集群的leader地址,-initial-cluster-state设置为existing。现在利用命令把节点信息加入集群./etcdctl --endpoints=http://10.31.10.19:13000 member add http://10.31.10.19.53001。

2.3 节点移除

有时你不得不在提高etcd的写性能和增加集群高可用性上进行权衡。Leader节点在提交一个写记录时,会吧这个信息同步到每个节点上,当得到多数节点的同意反馈后,才会真正写入数据。所以节点越多,写入性能越差。在节点过多时,你可能需要移除其中的一个或多个。移除节点非常简单,只需要一步操作,就是把集群中这个节点的记录删除,则对应机器上的该节点就会自动停止。

实例操作:

其中endpoints是整个etcd集群的leader地址./etcdctl --endpoints=http://10.31.10.19:13000 member remove 17d2d3fed8c2dda7

注意:执行member remove对应节点etcd的进程会自动销毁,不需要再去停止线程。

 

转载于:https://www.cnblogs.com/lujiango/p/11088716.html

### Windows 上安装配置 etcd 教程 #### 一、准备工作 为了在 Windows 系统上顺利安装并配置 etcd,需先确认已安装必要的工具和环境。建议使用具备 Unix 风格命令行功能的软件如 Git Bash 或者 WSL (Windows Subsystem for Linux),这有助于简化操作流程[^5]。 #### 二、下载 Etcd 访问官方 GitHub 发布页面获取最新版本的 etcd 安装包。对于 Windows 用户而言,应选择带有 `.zip` 后缀的压缩文件进行下载。解压后可获得 `etcd.exe` 和其他辅助程序文件[^2]。 #### 三、设置环境变量 为了让系统能够识别到 etcd 命令,在完成上述步骤之后还需要将 etcd 的路径添加至系统的 PATH 环境变量中去。这样就可以直接通过命令提示符或者 PowerShell 来调用 etcd 而不必每次都指定其完整路径了。 #### 四、验证安装情况 打开一个新的命令窗口输入如下指令来检验是否成功安装以及查看当前使用的 etcd 版本号: ```powershell .\etcd --version ``` #### 五、启动单节点实例 创建一个简单的配置文件用于定义集群参数(如果只需要测试的话可以省略此步),接着利用之前提到的方法之一开启服务端口监听等待客户端连接请求。例如可以通过下面这条语句实现基本的功能演示: ```bash .\etcd.exe --data-dir=data.etcd ``` 注意这里指定了数据目录的位置以便后续管理和维护工作更加方便快捷[^1]。 #### 六、停止服务进程 当不再需要运行时可通过任务管理器结束对应的 etcd 进程;也可以发送 SIGTERM 信号给目标 PID 实现优雅关闭的效果。具体做法是在另一个终端里执行 kill -SIGTERM ${PID} (适用于类 UNIX 平台下的模拟环境中)或者是 taskkill /F /IM etcd.exe (针对原生 Win32 应用场景)。不过在此之前最好确保所有未保存的信息都已经妥善处理完毕以免造成不必要的损失。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值