预置剧本
如何使用预置的 ansible 剧本来管理 Etcd 集群,常用管理命令速查。
Etcd 模块提供了两个核心剧本:etcd.yml 用于安装与配置 Etcd 集群,etcd-rm.yml 用于移除 Etcd 集群或成员。
架构变化:Pigsty v3.6+
自 Pigsty v3.6 起,etcd.yml 剧本专注于集群安装和成员添加,所有移除操作已迁移至独立的 etcd-rm.yml 剧本和 etcd_remove 角色。
etcd.yml
剧本原始文件:etcd.yml
执行本剧本,将会在硬编码的固定分组 etcd 上安装配置 Etcd 集群,并启动 etcd 服务。
在 etcd.yml 中,提供了以下是可用的任务子集:
etcd_assert:验证 etcd 身份参数(etcd_seq必须定义且为非负整数)etcd_install:安装 etcd 软件包etcd_dir:创建 etcd 数据和配置目录etcd_config:生成 etcd 配置etcd_conf:生成 etcd 主配置文件/etc/etcd/etcd.confetcd_cert:生成 etcd TLS 证书(CA、服务器证书、私钥)
etcd_member:将新成员添加到现有集群(仅当etcd_init=existing时执行)etcd_launch:启动 etcd 服务etcd_auth:启用 RBAC 认证(创建 root 用户并启用认证)etcd_register:将 etcd 注册到 VictoriaMetrics/Prometheus 监控
etcd-rm.yml
剧本原始文件:etcd-rm.yml
用于移除 Etcd 集群或单个成员的专用剧本。在 etcd-rm.yml 中,提供了以下可用的任务子集:
etcd_safeguard:检查防误删保险,如果启用则中止执行etcd_pause:暂停 3 秒,允许用户使用 Ctrl-C 中止执行etcd_deregister:从 VictoriaMetrics 监控目标中移除 etcd 注册etcd_leave:在清理前尝试优雅地离开 etcd 集群etcd_svc:使用 systemd 停止并禁用 etcd 服务etcd_data:移除 etcd 数据(可通过etcd_rm_data=false禁用)etcd_pkg:卸载 etcd 软件包(需通过etcd_rm_pkg=true显式启用)
移除剧本使用 etcd_remove 角色,支持以下可配置参数:
etcd_safeguard:设置为true时阻止意外移除etcd_rm_data:控制是否删除 ETCD 数据(默认:true)etcd_rm_pkg:控制是否卸载 ETCD 软件包(默认:false)
执行演示
命令速查
Etcd 安装与配置:
./etcd.yml # 初始化 etcd 集群
./etcd.yml -t etcd_launch # 重启整个 etcd 集群
./etcd.yml -t etcd_conf # 使用最新状态刷新 /etc/etcd/etcd.conf
./etcd.yml -t etcd_cert # 重新生成 etcd TLS 证书
./etcd.yml -l 10.10.10.12 -e etcd_init=existing # 扩容节点:添加新成员到现有集群
Etcd 移除与清理:
./etcd-rm.yml # 移除整个 etcd 集群
./etcd-rm.yml -l 10.10.10.12 # 移除单个 etcd 成员
./etcd-rm.yml -e etcd_safeguard=false # 覆盖防误删保险强制移除
./etcd-rm.yml -e etcd_rm_data=false # 仅停止服务,保留数据
./etcd-rm.yml -e etcd_rm_pkg=true # 同时卸载 etcd 软件包
便捷脚本:
bin/etcd-add <ip> # 向现有集群添加新成员(推荐)
bin/etcd-rm <ip> # 从集群中移除指定成员(推荐)
bin/etcd-rm # 移除整个 etcd 集群
保护机制
出于防止误删的目的,Pigsty 的 ETCD 模块提供了防误删保险,由 etcd_safeguard 参数控制,默认为 false,即默认不打开防误删保护。
对于生产环境已经初始化好的 etcd 集群,建议打开防误删保护,避免误删现有的 etcd 实例:
etcd:
hosts:
10.10.10.10: { etcd_seq: 1 }
10.10.10.11: { etcd_seq: 2 }
10.10.10.12: { etcd_seq: 3 }
vars:
etcd_cluster: etcd
etcd_safeguard: true # 打开防误删保护
当 etcd_safeguard 设置为 true 时,etcd-rm.yml 剧本会检测到存活的 etcd 实例并主动中止,避免误删。您可以使用命令行参数来覆盖这一行为:
./etcd-rm.yml -e etcd_safeguard=false # 强制覆盖防误删保险
除非您清楚地知道自己在做什么,我们并不建议用户随意清理 Etcd 集群。