004.etcd集群部署-动态发现
程序员文章站
2022-04-13 15:35:06
一 etcd发现简介 1.1 需求背景 在实际环境中,集群成员的ip可能不会提前知道。如使用dhcp自动获取的情况,在这些情况下,使用自动发现来引导etcdetcd集群,而不是指定静态配置,这个过程被称为“发现”。 etcd Discovery 使用已有的 etcd cluster 来注册和启动 D ......
一 etcd发现简介
1.1 需求背景
在实际环境中,集群成员的ip可能不会提前知道。如使用dhcp自动获取的情况,在这些情况下,使用自动发现来引导etcdetcd集群,而不是指定静态配置,这个过程被称为“发现”。
- etcd discovery
使用已有的 etcd cluster 来注册和启动
- dns发现
使用 dns 启动。
1.2 实现机制
discovery service protocol帮助新的etcd成员使用共享url在集群引导阶段发现所有其他成员。
该协议使用新的发现令牌来引导一个唯一的etcd集群。一个发现令牌只能代表一个etcd集群。只要此令牌上的发现协议启动,即使它中途失败,也不能用于引导另一个etcd集群。
提示:discovery service protocol仅用于集群引导阶段,不能用于运行时重新配置或集群监视。
1.3 协议工作流程
discovery protocol是使用内部etcd集群来协调新集群的引导程序。首先,所有新成员都与发现服务交互,并帮助生成预期的成员列表。然后,每个新成员使用此列表引导其服务器,该列表执行与--initial-cluster标志相同的功能,即设置所有集群的成员信息。
二 集群部署-etcd自带发现
2.1 环境准备
ntp配置:略 #建议配置ntp服务,保证时间一致性
etcd版本:v3.3.9
防火墙及selinux:关闭防火墙和selinux
1 # hostnamectl set-hostname etcd1.example.com 2 # hostnamectl set-hostname etcd2.example.com 3 # hostnamectl set-hostname etcd3.example.com 4 # vi /etc/hosts 5 #…… 6 172.24.8.71 etcd1.example.com 7 172.24.8.72 etcd2.example.com 8 172.24.8.73 etcd3.example.com
提示:centos6.x则修改/etc/sysconfig/network,以上为建议配置项。
2.2 安装etcd
1 # etcd_ver=v3.3.9 2 # github_url=https://github.com/coreos/etcd/releases/download 3 # download_url=${github_url} 4 # rm -f /tmp/etcd-${etcd_ver}-linux-amd64.tar.gz 5 # rm -rf /tmp/etcd-download-test 6 # mkdir -p /tmp/etcd-download-test #创建下载保存目录 7 # curl -l ${download_url}/${etcd_ver}/etcd-${etcd_ver}-linux-amd64.tar.gz -o /tmp/etcd-${etcd_ver}-linux-amd64.tar.gz 8 # tar xzvf /tmp/etcd-${etcd_ver}-linux-amd64.tar.gz -c /tmp/etcd-download-test --strip-components=1 9 # cp /tmp/etcd-download-test/etcd /usr/local/bin/ 10 # cp /tmp/etcd-download-test/etcdctl /usr/local/bin/ 11 # rm -f /tmp/etcd-${etcd_ver}-linux-amd64.tar.gz 12 13 # rm -rf /tmp/etcd-download-test/ 14 # etcdctl_api=3 15 # etcd --version 16 # etcdctl --version #查看已安装版本
提示:所有节点均需要安装etcd。
2.3 启动前准备
1 # mkdir -p /var/log/etcd/ #建议创建etcd日志保存目录 2 # mkdir -p /data/etcd #建议创建单独的etcd数据目录
2.4 创建集群发现
1 [root@etcd1 ~]# curl https://discovery.etcd.io/new?size=3 #使用公共etcd发现服务 2 https://discovery.etcd.io/c41a8c03922c32eaa4be1e7bcf6332a8
提示:size为集群节点数量,若未指定数量,则默认位3。
2.5 启动集群
1 [root@etcd1 ~]# etcd --name etcd1 --data-dir /data/etcd \ 2 --initial-advertise-peer-urls http://172.24.8.71:2380 \ 3 --listen-peer-urls http://172.24.8.71:2380 \ 4 --listen-client-urls http://172.24.8.71:2379,http://127.0.0.1:2379 \ 5 --advertise-client-urls http://172.24.8.71:2379 \ 6 --discovery https://discovery.etcd.io/c41a8c03922c32eaa4be1e7bcf6332a8 7 8 [root@etcd2 ~]# etcd --name etcd2 --data-dir /data/etcd \ 9 --initial-advertise-peer-urls http://172.24.8.72:2380 \ 10 --listen-peer-urls http://172.24.8.72:2380 \ 11 --listen-client-urls http://172.24.8.72:2379,http://127.0.0.1:2379 \ 12 --advertise-client-urls http://172.24.8.72:2379 \ 13 --discovery https://discovery.etcd.io/c41a8c03922c32eaa4be1e7bcf6332a8 14 15 [root@etcd3 ~]# etcd --name etcd3 --data-dir /data/etcd \ 16 --initial-advertise-peer-urls http://172.24.8.73:2380 \ 17 --listen-peer-urls http://172.24.8.73:2380 \ 18 --listen-client-urls http://172.24.8.73:2379,http://127.0.0.1:2379 \ 19 --advertise-client-urls http://172.24.8.73:2379 \ 20 --discovery https://discovery.etcd.io/c41a8c03922c32eaa4be1e7bcf6332a8
提示:每个成员必须指定不同的名称标志,否则发现将因重复的名称而失败。
2.6 集群检测
1 [root@etcd1 ~]# etcdctl member list 2 [root@etcd1 ~]# etcdctl cluster-health
三 集群部署-dns发现
略
参考官方文档:
https://github.com/etcd-io/etcd/blob/master/documentation/op-guide/configuration.md