欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

ETCD(3):多节点集群部署

最编程 2024-05-03 12:50:28
...

0. 引入

在实际生产环境中,为了整个集群的高可用,etcd通常都会以集群方式部署,以避免单点故障。

etcd构建自身高可用集群主要有三种形式:

  • 静态配置:预先已知etcd集群中有哪些节点,在启动时通过--initial-cluster参数直接指定好各节点地址
  • etcd动态发现:静态配置前提是在搭建集群之前已经提前知道各节点的信息,而实际应用中可能存在预先并不知道各节点ip的情况,这时可通过已经搭建的etcd来辅助搭建新的etcd集群。通过已有的etcd集群作为数据交互点,在扩展新的集群时,通过已有集群进行服务发现的机制。
  • DNS动态发现:通过DNS查询方式获取其他节点地址信息

以下内容都是在三台虚拟机上运行

name ip
infra1 192.168.99.131
infra2 192.168.99.132
infra3 192.168.99.133

1. 静态配置

#etcd1

 etcd --name infra1 --listen-client-urls http://192.168.99.131:2379 --advertise-client-urls http://192.168.99.131:2379 --listen-peer-urls http://192.168.99.131:2380 --initial-advertise-peer-urls http://192.168.99.131:2380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'infra1=http://192.168.99.131:2380,infra2=http://192.168.99.132:2380,infra3=http://192.168.99.133:2380' --initial-cluster-state new            
         
#etcd2
 etcd --name infra2 --listen-client-urls http://192.168.99.132:2379 --advertise-client-urls http://192.168.99.132:2379 --listen-peer-urls http://192.168.99.132:2380 --initial-advertise-peer-urls http://192.168.99.132:2380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'infra1=http://192.168.99.131:2380,infra2=http://192.168.99.132:2380,infra3=http://192.168.99.133:2380' --initial-cluster-state new   

#etcd3
 etcd --name infra3 --listen-client-urls http://192.168.99.133:2379 --advertise-client-urls http://192.168.99.133:2379 --listen-peer-urls http://192.168.99.133:2380 --initial-advertise-peer-urls http://192.168.99.133:2380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'infra1=http://192.168.99.131:2380,infra2=http://192.168.99.132:2380,infra3=http://192.168.99.133:2380' --initial-cluster-state new   

访问任意一个etcd server获取集群member信息

etcdctl --endpoints=192.168.99.131:2379 member list

image.png

2. etcd动态发现

使用已有的 etcd cluster 来注册和启动

实现机制

Discovery Service Protocol 帮助新的Etcd成员使用共享URL在集群引导阶段发现其他成员。该协议使用新的发现令牌来引导一个唯一的etcd集群,一个发现令牌只能代表一个etcd集群,只要此令牌上的发现协议启动,即使它中途失败,也不能用于引导另一个etcd集群。

协议的工作流程

Discovery protocol 使用内部etcd集群来协调新集群的引导程序。首先,所有新成员都与发现服务交互,并帮助生成预期的成员列表。然后每个新成员使用此列表引导其服务器,该列表执行与--initial-cluster标志相同的功能,即设置所有集群的成员信息。

Discovery service protocol 仅用于集群引导阶段,不能用于运行时重新配置或集群监视。

先使用公共etcd发现服务生成url

$ curl https://discovery.etcd.io/new?size=3

https://discovery.etcd.io/21c592d56701d2d081f78277348e87b8
#etcd1

 etcd --name infra1 --listen-client-urls http://192.168.99.131:2379,http://127.0.0.1:2379 --advertise-client-urls http://192.168.99.131:2379 --listen-peer-urls http://192.168.99.131:2380 --initial-advertise-peer-urls http://192.168.99.131:2380 --discovery https://discovery.etcd.io/21c592d56701d2d081f78277348e87b8
         
#etcd2
 etcd --name infra2 --listen-client-urls http://192.168.99.132:2379,http://127.0.0.1:2379 --advertise-client-urls http://192.168.99.132:2379 --listen-peer-urls http://192.168.99.132:2380 --initial-advertise-peer-urls http://192.168.99.132:2380  --discovery https://discovery.etcd.io/21c592d56701d2d081f78277348e87b8

#etcd3
 etcd --name infra3 --listen-client-urls http://192.168.99.133:2379,http://127.0.0.1:2379 --advertise-client-urls http://192.168.99.133:2379 --listen-peer-urls http://192.168.99.133:2380 --initial-advertise-peer-urls http://192.168.99.133:2380  --discovery https://discovery.etcd.io/21c592d56701d2d081f78277348e87b8

获取节点列表,由于我们在listen-client-urls中添加了127.0.0.1,所以不用添加endpoints

etcdctl member list

3.DNS动态发现

推荐阅读