统信uos部署etcd集群问题多因监听地址、权限、环境变量或防火墙导致;推荐三种方法:一、apt安装单节点(快速验证);二、二进制部署三节点ha集群(生产首选);三、docker容器化部署(隔离灵活)。

如果您在统信UOS系统上部署Etcd集群时遇到节点无法加入、客户端连接拒绝或etcdctl命令静默失败等问题,则很可能是由于默认监听地址、权限缺失、环境变量未生效或防火墙策略导致。以下是针对统信UOS平台的多种可行部署方法:
一、使用apt包管理器安装并配置单节点基础集群
统信UOS基于Debian/Ubuntu生态,可直接通过apt安装etcd官方维护包,适合快速验证与开发测试环境。该方式自动处理依赖、服务注册与基础配置,但版本可能略滞后于GitHub最新稳定版。
1、更新软件源并安装etcd:
sudo apt update && sudo apt install -y etcd
2、修改默认配置文件 /etc/default/etcd,取消注释并设置以下关键项:
ETCD_NAME=etcd1
ETCD_DATA_DIR="/var/lib/etcd"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://127.0.0.1:2379"
ETCD_LISTEN_PEER_URLS="http://127.0.0.1:2380"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://127.0.0.1:2380"
ETCD_INITIAL_CLUSTER="etcd1=http://127.0.0.1:2380"
ETCD_INITIAL_CLUSTER_STATE="new"
3、为etcd用户赋予数据目录完整权限:
sudo chown -R etcd:etcd /var/lib/etcd
4、启用并启动服务:
sudo systemctl daemon-reload && sudo systemctl enable etcd && sudo systemctl start etcd
5、验证监听状态:
sudo ss -tlnp | grep ':2379',确认输出中包含 *:2379 而非 127.0.0.1:2379
二、二进制方式部署三节点高可用集群(推荐生产环境)
此方法完全控制版本、路径与启动参数,适配统信UOS的国产化内核与安全加固策略。所有节点需预先完成主机名解析、时间同步、SSH免密及防火墙放行(2379/2380端口)。
1、在每台节点(如uos-node1/uos-node2/uos-node3)下载v3.5.4稳定版:
wget https://github.com/etcd-io/etcd/releases/download/v3.5.4/etcd-v3.5.4-linux-amd64.tar.gz
2、解压并复制二进制文件到系统路径:
tar -xvf etcd-v3.5.4-linux-amd64.tar.gz && cd etcd-v3.5.4-linux-amd64 && sudo cp etcd etcdctl /usr/local/bin/
3、为二进制文件添加执行权限:
sudo chmod +x /usr/local/bin/etcd /usr/local/bin/etcdctl
4、创建etcd专用用户与目录:
sudo useradd -r -c "etcd user" -d /var/lib/etcd -s /sbin/nologin etcd
sudo mkdir -p /var/lib/etcd /etc/etcd
5、设置环境变量(写入/etc/profile):
echo 'export ETCDCTL_API=3' | sudo tee -a /etc/profile && source /etc/profile
6、按节点分别编写systemd服务文件 /etc/systemd/system/etcd.service,其中uos-node1示例内容如下:
[Unit]
Description=etcd
After=network.target
[Service]
Type=notify
User=etcd
ExecStart=/usr/local/bin/etcd \
--name=etcd1 \
--data-dir=/var/lib/etcd \
--listen-client-urls=http://0.0.0.0:2379 \
--advertise-client-urls=http://192.168.183.10:2379 \
--listen-peer-urls=http://192.168.183.10:2380 \
--initial-advertise-peer-urls=http://192.168.183.10:2380 \
--initial-cluster=etcd1=http://192.168.183.10:2380,etcd2=http://192.168.183.11:2380,etcd3=http://192.168.183.12:2380 \
--initial-cluster-token=etcd-cluster-1 \
--initial-cluster-state=new
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
7、同步配置后,在全部节点依次执行:
sudo systemctl daemon-reload && sudo systemctl enable etcd && sudo systemctl start etcd
8、集群健康检查(任一节点执行):
etcdctl --endpoints=http://192.168.183.10:2379,http://192.168.183.11:2379,http://192.168.183.12:2379 endpoint health --command-timeout=5s,所有输出必须含 is healthy
三、容器化部署(基于统信UOS内置Docker)
利用Docker在统信UOS上隔离运行etcd实例,避免宿主系统污染,便于版本滚动与资源限制。要求已安装并启用Docker服务(uos-docker或社区版均可)。
1、拉取官方etcd镜像(注意架构匹配):
docker pull quay.io/coreos/etcd:v3.5.4
2、为三节点集群创建独立网络:
docker network create etcd-net
3、启动第一个节点(uos-node1): 4、启动第二、三节点(分别替换--name和--advertise-client-urls为etcd2/etcd3及对应IP): 5、在宿主机安装etcdctl v3.5.4二进制,并设置endpoint指向容器网络:
docker run -d \
--name etcd1 \
--network etcd-net \
--publish 2379:2379 \
docker run -d --name etcd2 --network etcd-net --publish 23791:2379 --publish 23801:2380 --volume /opt/etcd2:/etcd-data --restart always quay.io/coreos/etcd:v3.5.4 etcd --name etcd2 --data-dir /etcd-data --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://etcd2:2379 --listen-peer-urls http://0.0.0.0:2380 --initial-advertise-peer-urls http://etcd2:2380 --initial-cluster etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380 --initial-cluster-token etcd-cluster-1 --initial-cluster-state new
etcdctl --endpoints=http://etcd1:2379,http://etcd2:2379,http://etcd3:2379 endpoint status,成功返回即表明容器集群就绪,且各节点Member ID应互不相同










