5.4.4. 扩展 etcd
您可以通过在 etcd 主机中添加更多资源或通过添加更多 etcd 主机来纵向扩展 etcd 集群。
由于 etcd 使用的投票系统,集群必须始终包含奇数个成员数。
拥有奇数 etcd 主机的集群可考虑容错。etcd 主机数量为奇数不会改变仲裁所需的数量,但会增加故障的容错能力。例如,对于包含三个成员的群集,仲裁为 2,保留一个失败容错能力。这可确保集群在两个成员健康时继续运行。
建议具有三个 etcd 主机的生产环境级别的集群。
新主机需要一个全新的 Red Hat Enterprise Linux 7 专用主机。etcd 存储应位于 SSD 磁盘上,以实现最佳性能和在 /var/lib/etcd
中挂载的专用磁盘上。
先决条件
- 在添加新的 etcd 主机前,备份 etcd 配置和数据以防止数据丢失。
检查当前的 etcd 集群状态,以避免添加新主机到不健康的集群。运行这个命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在运行
scaleup
playbook 前,请确保新主机已注册到正确的红帽软件频道:Copy to Clipboard Copied! Toggle word wrap Toggle overflow etcd 托管在
rhel-7-server-extras-rpms
软件频道中。确保从 etcd 集群中删除所有未使用的 etcd 成员。这必须在运行
scaleup
playbook 之前完成。列出 etcd 成员:
etcdctl --cert="/etc/etcd/peer.crt" --key="/etc/etcd/peer.key" \ --cacert="/etc/etcd/ca.crt" --endpoints=ETCD_LISTEN_CLIENT_URLS member list -w table
# etcdctl --cert="/etc/etcd/peer.crt" --key="/etc/etcd/peer.key" \ --cacert="/etc/etcd/ca.crt" --endpoints=ETCD_LISTEN_CLIENT_URLS member list -w table
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 复制未使用的 etcd 成员 ID(如果适用)。
通过使用以下命令指定其 ID 来删除未使用的成员:
etcdctl --cert="/etc/etcd/peer.crt" --key="/etc/etcd/peer.key" \ --cacert="/etc/etcd/ca.crt" --endpoints=ETCD_LISTEN_CLIENT_URL member remove UNUSED_ETCD_MEMBER_ID
# etcdctl --cert="/etc/etcd/peer.crt" --key="/etc/etcd/peer.key" \ --cacert="/etc/etcd/ca.crt" --endpoints=ETCD_LISTEN_CLIENT_URL member remove UNUSED_ETCD_MEMBER_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在当前 etcd 节点上升级 etcd 和 iptables:
yum update etcd iptables-services
# yum update etcd iptables-services
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 为 etcd 主机备份 /etc/etcd 配置。
- 如果新的 etcd 成员也是 OpenShift Container Platform 节点,将所需的主机数量添加到集群中。
- 此流程的其余部分假定您添加了一台主机,但是如果您添加多个主机,请在每个主机上执行所有步骤。
5.4.4.1. 使用 Ansible 添加新 etcd 主机 复制链接链接已复制到粘贴板!
流程
在 Ansible 清单文件中,创建一个名为
[new_etcd]
的新组,再添加新主机。然后,将new_etcd
组添加为[OSEv3]
组的子组:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意将旧的
etcd 主机
条目替换为清单文件中的新etcd
主机条目。在替换旧的etcd 主机
时,必须创建一个/etc/etcd/ca/
目录的副本。另外,您可以在扩展etcd 主机
前重新部署 etcd ca 和 certs。在安装 OpenShift Container Platform 并托管 Ansible 清单文件的主机中,切换到 playbook 目录并运行 etcd
scaleup
playbook:cd /usr/share/ansible/openshift-ansible ansible-playbook playbooks/openshift-etcd/scaleup.yml
$ cd /usr/share/ansible/openshift-ansible $ ansible-playbook playbooks/openshift-etcd/scaleup.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 playbook 运行后,通过将新 etcd 主机从
[new_etcd]
组移到[etcd]
组来修改清单文件,使其反映当前的状态:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果使用 Flannel,修改位于
/etc/sysconfig/flanneld
主机上的flanneld
服务配置,使其包含新的 etcd 主机:FLANNEL_ETCD_ENDPOINTS=https://master-0.example.com:2379,https://master-1.example.com:2379,https://master-2.example.com:2379,https://etcd0.example.com:2379
FLANNEL_ETCD_ENDPOINTS=https://master-0.example.com:2379,https://master-1.example.com:2379,https://master-2.example.com:2379,https://etcd0.example.com:2379
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启
flanneld
服务:systemctl restart flanneld.service
# systemctl restart flanneld.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow