当前位置: 代码迷 >> 综合 >> ETCD 集群部署
  详细解决方案

ETCD 集群部署

热度:75   发布时间:2024-01-24 23:17:52.0

0.测试环境
Linux(ubuntu18.04)*3  etcd 3.x
192.168.0.104   节点1
192.168.0.107   节点2
192.168.0.108   节点3

1.安装,可以直接下载二进制,也可以直接apt安装,这里直接apt安装(三个节点都要安装)

apt-get update       //更新apt
apt install etcd     //安装etcd
export ETCDCTL_API=3 //etcdctl默认2.x的版本操作,这里声明用3.x版本操作
etcdctl version      //确认安装成功

2.创建配置文件etcd.conf 目录自己定,我是放在 /etc/etcd3/etcd.conf
三个节点的内容如下(三个节点都要配置)(替换成自己的IP和路径)

name: etcd-1
data-dir: /etc/etcd3/data
listen-client-urls: http://0.0.0.0:2379,http://127.0.0.1:2379
advertise-client-urls: http://192.168.0.104:2379
listen-peer-urls: http://0.0.0.0:2380
initial-advertise-peer-urls: http://192.168.0.104:2380
initial-cluster: etcd-1=http://192.168.0.104:2380,etcd-2=http://192.168.0.107:2380,etcd-3=http://192.168.0.108:2380
initial-cluster-token: etcd-cluster-my
initial-cluster-state: new


name: etcd-2
data-dir: /etc/etcd3/data
listen-client-urls: http://0.0.0.0:2379
advertise-client-urls: http://192.168.0.107:2379
listen-peer-urls: http://0.0.0.0:2380
initial-advertise-peer-urls: http://192.168.0.107:2380
initial-cluster: etcd-1=http://192.168.0.104:2380,etcd-2=http://192.168.0.107:2380,etcd-3=http://192.168.0.108:2380
initial-cluster-token: etcd-cluster-my
initial-cluster-state: exist


name: etcd-3
data-dir: /etc/etcd3/data
listen-client-urls: http://0.0.0.0:2379
advertise-client-urls: http://192.168.0.108:2379
listen-peer-urls: http://0.0.0.0:2380
initial-advertise-peer-urls: http://192.168.0.108:2380
initial-cluster: etcd-1=http://192.168.0.104:2380,etcd-2=http://192.168.0.107:2380,etcd-3=http://192.168.0.108:2380
initial-cluster-token: etcd-cluster-my
initial-cluster-state: exist


字段说明
name:本member的名称
data-dir:存储的数据目录
listen-client-urls:用于监听客户端etcdctl或者curl连接;0.0.0.0表示监听本机所有地址
listen-peer-urls:用于监听集群中其它member的连接;0.0.0.0表示监听本机所有地址
advertise-client-urls: 本机地址, 用于通知客户端,客户端通过此IPs与集群通信
initial-advertise-peer-urls:本机地址,用于通知集群member,与member通信
initial-cluster:描述集群中所有节点的信息,描述每个节点名称、ip、端口,集群静态启动使用,本member根据此信息去联系其他member
initial-cluster-token:集群唯一标示
initial-cluster-state:集群状态,新建集群时候设置为new,若是想加入某个已经存在的集群设置为existing

4.启动执行(替换成自己的路径)
etcd --config-file /etc/etcd3/etcd.conf

5.查看集群状态
看下节点列表
etcdctl member list
结果
5eda8a03ef4ff59e, started, etcd-3, http://192.168.0.108:2380, http://192.168.0.108:2379
882a1d2f17c73e06, started, etcd-1, http://192.168.0.104:2380, http://192.168.0.104:2379
9cac2257803e1d3d, started, etcd-2, http://192.168.0.107:2380, http://192.168.0.107:2379

看下健康状态(每台机器都可以单独执行查看)
etcdctl endpoint health 
结果    
127.0.0.1:2379 is healthy: successfully committed proposal: took = 4.595363ms

PS:要关防火墙,不然在数据同步或者选举的时候一直提示超时。ubuntu关闭防火墙直接执行 sudo ufw disable

6.测试
找一个节点执行put一下,找另一个节点get一下,看看数据能不能同步过来就行了。

最后:
ETCD集群是支持HTTPS安全配置的,之后会把这个补充上,同时还有很多细节可以自行研究,比如说
export ETCDCTL_API=3 这个是版本,每次打开bash的时候都要设置,可以直接
echo 'export ETCDCTL_API=3' >>  ~/.bashrc 一次性配置。
在比如说etcd通常是要开机自启动的,可以配置服务来做。等等。
后期还会整理补充一些原理性的东西,比如选举算法。节点坏掉会怎么样,还有就是很重要的一个 etcd分布式锁的部分。