etcd 集群
| 服务器IP | 主机角色 |
|---|---|
| 192.168.10.31 | etcd Node01 |
| 192.168.10.32 | etcd Node02 |
| 192.168.10.33 | etcd Node03 |
etcd Node01
-
下载 etcd 安装包
- 服务器支持访问互联网
- 服务器不支持访问互联网
wget https://pdpublic.mingdao.com/private-deployment/offline/common/etcd-v3.6.11-linux-amd64.tar.gz# etcd 安装包文件下载链接,下载完成后上传到部署服务器https://pdpublic.mingdao.com/private-deployment/offline/common/etcd-v3.6.11-linux-amd64.tar.gz -
创建 etcd 运行用户
useradd -M -s /sbin/nologin etcd -
解压 etcd 安装包并安装二进制
mkdir -p /usr/local/etcd/bintar -zxf etcd-v3.6.11-linux-amd64.tar.gzcp etcd-v3.6.11-linux-amd64/etcd /usr/local/etcd/bin/cp etcd-v3.6.11-linux-amd64/etcdctl /usr/local/etcd/bin/cp etcd-v3.6.11-linux-amd64/etcdutl /usr/local/etcd/bin/chmod +x /usr/local/etcd/bin/etcd*chown -R etcd:etcd /usr/local/etcd -
创建数据目录和日志目录
mkdir -p /data/etcdmkdir -p /data/logs/etcdchown -R etcd:etcd /data/etcd /data/logs/etcd -
修改 etcd 配置文件
cat > /usr/local/etcd/etcd.conf.yml <<'EOF'name: etcd-01data-dir: /data/etcdlisten-client-urls: http://192.168.10.31:2379,http://127.0.0.1:2379advertise-client-urls: http://192.168.10.31:2379listen-peer-urls: http://192.168.10.31:2380initial-advertise-peer-urls: http://192.168.10.31:2380listen-metrics-urls: http://192.168.10.31:2381,http://127.0.0.1:2381initial-cluster: etcd-01=http://192.168.10.31:2380,etcd-02=http://192.168.10.32:2380,etcd-03=http://192.168.10.33:2380initial-cluster-token: hap-milvus-etcdinitial-cluster-state: newauto-compaction-mode: periodicauto-compaction-retention: 10hquota-backend-bytes: 8589934592snapshot-count: 100000max-snapshots: 5max-wals: 5strict-reconfig-check: truepre-vote: trueenable-v2: falsemetrics: basiclogger: zaplog-level: infolog-outputs:- /data/logs/etcd/etcd.logenable-log-rotation: truelog-rotation-config-json: '{"maxsize":100,"maxage":180,"maxbackups":0,"localtime":true,"compress":true}'EOFlisten-client-urls和advertise-client-urls中的 IP 请替换为实际部署服务器的 IP。
-
配置 systemd 管理 etcd-01
cat > /etc/systemd/system/etcd-01.service <<'EOF'[Unit]Description=etcd member etcd-01Documentation=https://etcd.io/docs/After=network-online.targetWants=network-online.target[Service]Type=simpleUser=etcdGroup=etcdExecStart=/usr/local/etcd/bin/etcd --config-file=/usr/local/etcd/etcd.conf.ymlRestart=on-failureRestartSec=5sLimitNOFILE=65536LimitNPROC=65536OOMScoreAdjust=-999[Install]WantedBy=multi-user.targetEOF -
启动 etcd-01 并加入开机自启动
systemctl daemon-reloadsystemctl start etcd-01systemctl enable etcd-01 -
服务状态检查
systemctl status etcd-01 --no-pager -
查看运行日志
journalctl -u etcd-01 -n 100 -l --no-pager
etcd Node02
-
下载 etcd 安装包
- 服务器支持访问互联网
- 服务器不支持访问互联网
wget https://pdpublic.mingdao.com/private-deployment/offline/common/etcd-v3.6.11-linux-amd64.tar.gz# etcd 安装包文件下载链接,下载完成后上传到部署服务器https://pdpublic.mingdao.com/private-deployment/offline/common/etcd-v3.6.11-linux-amd64.tar.gz -
创建 etcd 运行用户
useradd -M -s /sbin/nologin etcd -
解压 etcd 安装包并安装二进制
mkdir -p /usr/local/etcd/bintar -zxf etcd-v3.6.11-linux-amd64.tar.gzcp etcd-v3.6.11-linux-amd64/etcd /usr/local/etcd/bin/cp etcd-v3.6.11-linux-amd64/etcdctl /usr/local/etcd/bin/cp etcd-v3.6.11-linux-amd64/etcdutl /usr/local/etcd/bin/chmod +x /usr/local/etcd/bin/etcd*chown -R etcd:etcd /usr/local/etcd- 安装验证
/usr/local/etcd/bin/etcd --version/usr/local/etcd/bin/etcdctl version/usr/local/etcd/bin/etcdutl version -
创建数据目录和日志目录
mkdir -p /data/etcdmkdir -p /data/logs/etcdchown -R etcd:etcd /data/etcd /data/logs/etcd -
修改 etcd 配置文件
cat > /usr/local/etcd/etcd.conf.yml <<'EOF'name: etcd-02data-dir: /data/etcdlisten-client-urls: http://192.168.10.32:2379,http://127.0.0.1:2379advertise-client-urls: http://192.168.10.32:2379listen-peer-urls: http://192.168.10.32:2380initial-advertise-peer-urls: http://192.168.10.32:2380listen-metrics-urls: http://192.168.10.32:2381,http://127.0.0.1:2381initial-cluster: etcd-01=http://192.168.10.31:2380,etcd-02=http://192.168.10.32:2380,etcd-03=http://192.168.10.33:2380initial-cluster-token: hap-milvus-etcdinitial-cluster-state: newauto-compaction-mode: periodicauto-compaction-retention: 10hquota-backend-bytes: 8589934592snapshot-count: 100000max-snapshots: 5max-wals: 5strict-reconfig-check: truepre-vote: trueenable-v2: falsemetrics: basiclogger: zaplog-level: infolog-outputs:- /data/logs/etcd/etcd.logenable-log-rotation: truelog-rotation-config-json: '{"maxsize":100,"maxage":180,"maxbackups":0,"localtime":true,"compress":true}'EOFlisten-client-urls和advertise-client-urls中的 IP 请替换为实际部署服务器的 IP。
-
配置 systemd 管理 etcd-02
cat > /etc/systemd/system/etcd-02.service <<'EOF'[Unit]Description=etcd member etcd-02Documentation=https://etcd.io/docs/After=network-online.targetWants=network-online.target[Service]Type=simpleUser=etcdGroup=etcdExecStart=/usr/local/etcd/bin/etcd --config-file=/usr/local/etcd/etcd.conf.ymlRestart=on-failureRestartSec=5sLimitNOFILE=65536LimitNPROC=65536OOMScoreAdjust=-999[Install]WantedBy=multi-user.targetEOF -
启动 etcd-02 并加入开机自启动
systemctl daemon-reloadsystemctl start etcd-02systemctl enable etcd-02 -
服务状态检查
systemctl status etcd-02 --no-pager -
查看运行日志
journalctl -u etcd-02 -n 100 -l --no-pager
etcd Node03
-
下载 etcd 安装包
- 服务器支持访问互联网
- 服务器不支持访问互联网
wget https://pdpublic.mingdao.com/private-deployment/offline/common/etcd-v3.6.11-linux-amd64.tar.gz# etcd 安装包文件下载链接,下载完成后上传到部署服务器https://pdpublic.mingdao.com/private-deployment/offline/common/etcd-v3.6.11-linux-amd64.tar.gz -
创建 etcd 运行用户
useradd -M -s /sbin/nologin etcd -
解压 etcd 安装包并安装二进制
mkdir -p /usr/local/etcd/bintar -zxf etcd-v3.6.11-linux-amd64.tar.gzcp etcd-v3.6.11-linux-amd64/etcd /usr/local/etcd/bin/cp etcd-v3.6.11-linux-amd64/etcdctl /usr/local/etcd/bin/cp etcd-v3.6.11-linux-amd64/etcdutl /usr/local/etcd/bin/chmod +x /usr/local/etcd/bin/etcd*chown -R etcd:etcd /usr/local/etcd- 安装验证
/usr/local/etcd/bin/etcd --version/usr/local/etcd/bin/etcdctl version/usr/local/etcd/bin/etcdutl version -
创建数据目录和日志目录
mkdir -p /data/etcdmkdir -p /data/logs/etcdchown -R etcd:etcd /data/etcd /data/logs/etcd -
修改 etcd 配置文件
cat > /usr/local/etcd/etcd.conf.yml <<'EOF'name: etcd-03data-dir: /data/etcdlisten-client-urls: http://192.168.10.33:2379,http://127.0.0.1:2379advertise-client-urls: http://192.168.10.33:2379listen-peer-urls: http://192.168.10.33:2380initial-advertise-peer-urls: http://192.168.10.33:2380listen-metrics-urls: http://192.168.10.33:2381,http://127.0.0.1:2381initial-cluster: etcd-01=http://192.168.10.31:2380,etcd-02=http://192.168.10.32:2380,etcd-03=http://192.168.10.33:2380initial-cluster-token: hap-milvus-etcdinitial-cluster-state: newauto-compaction-mode: periodicauto-compaction-retention: 10hquota-backend-bytes: 8589934592snapshot-count: 100000max-snapshots: 5max-wals: 5strict-reconfig-check: truepre-vote: trueenable-v2: falsemetrics: basiclogger: zaplog-level: infolog-outputs:- /data/logs/etcd/etcd.logenable-log-rotation: truelog-rotation-config-json: '{"maxsize":100,"maxage":180,"maxbackups":0,"localtime":true,"compress":true}'EOFlisten-client-urls和advertise-client-urls中的 IP 请替换为实际部署服务器的 IP。
-
配置 systemd 管理 etcd-03
cat > /etc/systemd/system/etcd-03.service <<'EOF'[Unit]Description=etcd member etcd-03Documentation=https://etcd.io/docs/After=network-online.targetWants=network-online.target[Service]Type=simpleUser=etcdGroup=etcdExecStart=/usr/local/etcd/bin/etcd --config-file=/usr/local/etcd/etcd.conf.ymlRestart=on-failureRestartSec=5sLimitNOFILE=65536LimitNPROC=65536OOMScoreAdjust=-999[Install]WantedBy=multi-user.targetEOF -
启动 etcd-03 并加入开机自启动
systemctl daemon-reloadsystemctl start etcd-03systemctl enable etcd-03 -
服务状态检查
systemctl status etcd-03 --no-pager -
查看运行日志
journalctl -u etcd-03 -n 100 -l --no-pager
etcd 集群验证
-
设置集群端点
export ETCD_ENDPOINTS=http://192.168.10.31:2379,http://192.168.10.32:2379,http://192.168.10.33:2379 -
检查集群健康状态
/usr/local/etcd/bin/etcdctl --endpoints=${ETCD_ENDPOINTS} endpoint health -w table -
查看集群状态
/usr/local/etcd/bin/etcdctl --endpoints=${ETCD_ENDPOINTS} endpoint status -w table -
查看 Member 列表
/usr/local/etcd/bin/etcdctl --endpoints=${ETCD_ENDPOINTS} member list -w table -
执行写入、读取与删除测试
/usr/local/etcd/bin/etcdctl --endpoints=${ETCD_ENDPOINTS} put /etcd-test/hello world/usr/local/etcd/bin/etcdctl --endpoints=${ETCD_ENDPOINTS} get /etcd-test/hello/usr/local/etcd/bin/etcdctl --endpoints=${ETCD_ENDPOINTS} del /etcd-test/hello
开启认证
任意一台节点均可执行。
-
设置变量
export ETCD_ENDPOINTS=http://192.168.10.31:2379,http://192.168.10.32:2379,http://192.168.10.33:2379export ETCD_ROOT_PASSWORD='请替换成_root_强密码'ETCD_ENDPOINTS指定集群的三个访问端点,后续所有认证相关命令都通过它操作。ETCD_ROOT_PASSWORD指定 root 用户密码,正式部署时请替换为强口令。
-
确认 root 密码变量已设置
test -n "$ETCD_ROOT_PASSWORD" && echo "ETCD_ROOT_PASSWORD 已设置" || echo "ETCD_ROOT_PASSWORD 未设置"- 检查 root 密码变量是否已设置,避免后续执行时使用空密码。
-
创建 root 用户
/usr/local/etcd/bin/etcdctl --endpoints=${ETCD_ENDPOINTS} user add "root:${ETCD_ROOT_PASSWORD}"user add用于创建root用户并设置密码。
-
授予 root 角色
/usr/local/etcd/bin/etcdctl --endpoints=${ETCD_ENDPOINTS} user grant-role root rootuser grant-role root root用于给root用户授予root角色,确保其拥有管理员权限。
-
查看 root 用户信息
/usr/local/etcd/bin/etcdctl --endpoints=${ETCD_ENDPOINTS} user get rootuser get root用于查看root用户信息,确认用户已创建成功。
-
启用认证功能
/usr/local/etcd/bin/etcdctl --endpoints=${ETCD_ENDPOINTS} auth enableauth enable用于开启 etcd 认证功能,开启后访问服务必须携带用户凭据。
-
认证验证
/usr/local/etcd/bin/etcdctl --endpoints=${ETCD_ENDPOINTS} --user="root:${ETCD_ROOT_PASSWORD}" auth status/usr/local/etcd/bin/etcdctl --endpoints=${ETCD_ENDPOINTS} --user="root:${ETCD_ROOT_PASSWORD}" endpoint health -w table/usr/local/etcd/bin/etcdctl --endpoints=${ETCD_ENDPOINTS} --user="root:${ETCD_ROOT_PASSWORD}" endpoint status -w table/usr/local/etcd/bin/etcdctl --endpoints=${ETCD_ENDPOINTS} --user="root:${ETCD_ROOT_PASSWORD}" member list -w tableauth status用于查看当前认证开关状态,确认认证是否已启用。endpoint health -w table用于检查当前端点健康状态,确认认证开启后服务仍可正常访问。endpoint status -w table用于查看端点详细状态,确认集群运行正常。member list -w table用于查看成员列表,确认集群成员信息完整。