etcd集群部署
1. 概述
这是一个序列总结文档。
- 第1节 安装etcd 中,在CentOS7上面安装etcd。
- 第2节 单节点运行etcd 在单节点上面运行etcd。
- 第3节 三节点部署etcd集群 在三节点上面部署etcd集群,并为etcd配置了一些快捷命令。
- 第4节 etcd TLS集群部署 在三节点上面部署etcd集群,并开启TLS协议的加密通讯。
- 第5节 etcd角色权限控制 在三节点上面部署etcd TLS集群的基础上,开启角色控制。详细可参考 https://etcd.io/docs/v3.5/demo/ 。
- 第6节 etcd证书过期处理,在etcd证书过期后,etcd相关命令行都操作不了,讲解如何处理这个问题。
- 第7节 etcd配置文件, 通过etcd配置文件来配置相关参数,然后启动etcd服务。
- 第8节 etcd可视化工具, 介绍一款好用的etcd可视化工具etcd-workbench。
- 第9节 etcd的关键配置initial-cluster-state, 介绍
initial-cluster-state设置成new和existing的区别。 - 第10节 集群ID和成员ID的不同显示方式, 介绍etcd集群ID和成员ID的不同显示方式,以及ID值如何在十六进制和十进制间进行转换。
- 第11节 etcd compaction压缩, 介绍etcd compaction压缩相关说明,如何修改压缩配置等。
1.1 VirtualBox虚拟机信息记录
学习etcd时,使用以下几个虚拟机:
| 序号 | 虚拟机 | 主机名 | IP | CPU | 内存 | 说明 |
|---|---|---|---|---|---|---|
| 1 | ansible-master | ansible | 192.168.56.120 | 2核 | 4G | Ansible控制节点 |
| 2 | ansible-node1 | etcd-node1 | 192.168.56.121 | 2核 | 2G | Ansible工作节点1 |
| 3 | ansible-node2 | etcd-node2 | 192.168.56.122 | 2核 | 2G | Ansible工作节点2 |
| 4 | ansible-node3 | etcd-node3 | 192.168.56.123 | 2核 | 2G | Ansible工作节点3 |
后面会编写使用ansible部署etcd集群的剧本。
操作系统说明:
| |
2. 三服务器部署etcd集群
参考官方文档How to Set Up a Demo etcd Cluster
- ectd端口中是 2379 用于客户端连接,提供HTTP API服务,供客户端交互。而 2380 用于伙伴通讯。
由于是在三个服务器上部署etcd集群,我们可以直接使用默认端口,我们先规划一下:
| 序号 | 节点名称 | 节点运行目录 | IP | 通讯端口 | 客户端端口 |
|---|---|---|---|---|---|
| 1 | node1 | /srv/etcd/node | 192.168.56.121 | 2380 | 2379 |
| 2 | node2 | /srv/etcd/node | 192.168.56.121 | 2380 | 2379 |
| 3 | node2 | /srv/etcd/node | 192.168.56.121 | 2380 | 2379 |
参考单节点部署etcd服务,配置不同的启动脚本。
查看第1个启动脚本:
| |
查看第2个启动脚本:
| |
查看第3个启动脚本:
| |
三个节点分别执行启动脚本:
| |
查看etcd进程和端口监听:
| |
3. 查看集群信息
将以下信息写入到~/.bashrc配置文件中:
| |
然后使用source ~/.bashrc使配置生效。
3.1 查看集群成员列表
生效后,查看集群成员列表信息:
| |
3.2 查看集群状态信息
| |
在三个节点查看到信息应该是一样的,类似如下所示:
| |

可以看到,节点node1是Leader。
3.3 查看集群健康状态
| |
在三个节点查看到信息应该是一样的,类似如下所示:
| |
可以看到,三个节点健康都是true正常的。
3.4 集群的数据读写
在节点1上写入数据:
| |
然后在三个节点上获取数据:
| |
三个节点都正常获取到数据了。
3.5 设置快捷命令
每次都使用etcdctl --endpoints=$ENDPOINTS --write-out=table endpoint status之类的命令实在太麻烦了,下面使用alias配置快捷命令。
将以下信息写入到~/.bashrc配置文件中:
| |
然后使用source ~/.bashrc使配置生效。
测试快捷命令:
| |

可以看到,快捷命令正常工作!
