跳转到主要内容

预置剧本

如何使用预置的 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.conf
    • etcd_cert:生成 etcd TLS 证书(CA、服务器证书、私钥)
  • etcd_member:将新成员添加到现有集群(仅当 etcd_init=existing 时执行)
  • etcd_launch:启动 etcd 服务
  • etcd_auth:启用 RBAC 认证(创建 root 用户并启用认证)
  • etcd_register:将 etcd 注册到 VictoriaMetrics 监控

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_safeguard 默认是 falseetcd_rm_data 默认是 true。因此,完整执行 etcd-rm.yml 会尝试将目标退群、注销并停服,随后删除本机 Etcd 数据、配置、单元和客户端环境文件。 剧本会忽略部分退群与清理错误,也不会证明剩余成员仍有仲裁;每次都应使用精确的 -l,并核对近期备份、成员列表与剩余仲裁。


执行演示

asciicast


命令速查

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 -l 10.10.10.12                     # 退群、注销、停服并默认删除本机数据
./etcd-rm.yml -l 10.10.10.12 -e etcd_rm_data=false # 退群、注销并停服,保留本机数据与配置
./etcd-rm.yml -l 10.10.10.12 -e etcd_rm_pkg=true # 同时卸载 etcd 软件包
./etcd-rm.yml -l etcd                            # 销毁整个 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-rm.yml -l <exact-target> -e etcd_safeguard=false  # 仅在确认目标与备份后覆盖保险

无论保护开关取值如何,真实运行后都要重新检查 etcdctl member list、端点健康和剩余仲裁;任务返回成功不能替代这些运行态验收。