Docker容器集群网络架构:二、etcd集群离线部署2.1 准备工作2.1.1 上传etcd2.1.2 解压etcd2.1.3 拷贝文件到/usr/local/bin2.1.4 创建相关目录并赋权2.2 创建etcd集群2.2.1 创建etcd配置文件2.2.2 配置etcd服务文件2.2.3 启动ectd服务2.3 查看etcd集群2.3.1 查看etcd集群健康状态2.3.2 查看etcd集群成员
以docker01节点为例,其它节点以此执行。
[root@docker01 ~]# cd /opt
[root@docker01 opt]# ls
containerd docker-19.03.15-stable docker-19.03.15-stable.tar.gz etcd-v3.0.12-linux-amd64.tar.gz rh
[root@docker01 opt]#
[root@docker01 opt]# tar xzf etcd-v3.0.12-linux-amd64.tar.gz
[root@docker01 opt]#
[root@docker01 opt]# ls
containerd docker-19.03.15-stable.tar.gz etcd-v3.0.12-linux-amd64.tar.gz
docker-19.03.15-stable etcd-v3.0.12-linux-amd64 rh
[root@docker01 opt]#
[root@docker01 opt]# cd etcd-v3.0.12-linux-amd64
[root@docker01 etcd-v3.0.12-linux-amd64]#
[root@docker01 etcd-v3.0.12-linux-amd64]# cp etcd etcdctl /usr/local/bin/
[root@docker01 etcd-v3.0.12-linux-amd64]#
[root@docker01 etcd-v3.0.12-linux-amd64]# mkdir -p /opt/etcd/data
[root@docker01 etcd-v3.0.12-linux-amd64]#
[root@docker01 etcd-v3.0.12-linux-amd64]# chmod 755 /opt/etcd
[root@docker01 etcd-v3.0.12-linux-amd64]#
[root@docker01 etcd-v3.0.12-linux-amd64]# mkdir /etc/etcd
[root@docker01 etcd-v3.0.12-linux-amd64]#
[root@docker01 etcd-v3.0.12-linux-amd64]# mkdir -p /opt/etcd/data
[root@docker01 etcd-v3.0.12-linux-amd64]#
[root@docker01 etcd-v3.0.12-linux-amd64]# chmod 755 /opt/etcd
[root@docker01 etcd-v3.0.12-linux-amd64]#
[root@docker01 etcd-v3.0.12-linux-amd64]# mkdir /etc/etcd
[root@docker01 etcd-v3.0.12-linux-amd64]#
docker01:
[root@docker01 etcd-v3.0.12-linux-amd64]# echo '#[Member]
ETCD_NAME="docker01"
ETCD_DATA_DIR="/opt/etcd/data"
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.0.121:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.0.121:2379,http://192.168.0.121:4001"
ETCD_INITIAL_CLUSTER="docker01=http://192.168.0.121:2380,docker02=http://192.168.0.122:2380,docker03=http://192.168.0.123:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"' > /etc/etcd/etcd.conf
docker02:
[root@docker01 etcd-v3.0.12-linux-amd64]# echo '#[Member]
ETCD_NAME="docker02"
ETCD_DATA_DIR="/opt/etcd/data"
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.0.122:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.0.122:2379,http://192.168.0.122:4001"
ETCD_INITIAL_CLUSTER="docker01=http://192.168.0.121:2380,docker02=http://192.168.0.122:2380,docker03=http://192.168.0.123:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"' > /etc/etcd/etcd.conf
docker03:
[root@docker01 etcd-v3.0.12-linux-amd64]# echo '#[Member]
ETCD_NAME="docker03"
ETCD_DATA_DIR="/opt/etcd/data"
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.0.123:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.0.123:2379,http://192.168.0.123:4001"
ETCD_INITIAL_CLUSTER="docker01=http://192.168.0.121:2380,docker02=http://192.168.0.122:2380,docker03=http://192.168.0.123:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"' > /etc/etcd/etcd.conf
以docker01节点为例,其它节点以此执行。
[root@docker01 etcd-v3.0.12-linux-amd64]# echo '[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
User=root
Type=notify
EnvironmentFile=-/etc/etcd/etcd.conf
ExecStart=/usr/local/bin/etcd
Restart=on-failure
RestartSec=10s
LimitNOFILE=40000
[Install]
WantedBy=multi-user.target' > /etc/systemd/system/etcd.service
[root@docker01 etcd-v3.0.12-linux-amd64]#
以docker01节点为例,其它节点以此执行。
使etcd.service文件修改生效
[root@docker01 etcd-v3.0.12-linux-amd64]# systemctl daemon-reload
[root@docker01 etcd-v3.0.12-linux-amd64]#
设置etcd.service随系统自动启动
[root@docker01 etcd-v3.0.12-linux-amd64]# systemctl enable etcd
[root@docker01 etcd-v3.0.12-linux-amd64]#
启动etcd服务
[root@docker01 etcd-v3.0.12-linux-amd64]# systemctl start etcd
[root@docker01 etcd-v3.0.12-linux-amd64]#
查看服务状态
[root@docker01 etcd-v3.0.12-linux-amd64]# systemctl status etcd
● etcd.service - Etcd Server
Loaded: loaded (/etc/systemd/system/etcd.service; disabled; vendor preset: disabled)
Active: active (running) since 四 2024-10-03 16:30:03 CST; 6s ago
Main PID: 25120 (etcd)
Tasks: 7
Memory: 11.4M
CGroup: /system.slice/etcd.service
└─25120 /usr/local/bin/etcd
10月 03 16:30:03 docker01 etcd[25120]: published {Name:docker01 ClientURLs:[http://127.0.0.1:2379 http://192.168....7a03a5
10月 03 16:30:03 docker01 etcd[25120]: ready to serve client requests
10月 03 16:30:03 docker01 etcd[25120]: serving insecure client requests on 127.0.0.1:2379, this is strongly discouraged!
10月 03 16:30:03 docker01 etcd[25120]: ready to serve client requests
10月 03 16:30:03 docker01 etcd[25120]: serving insecure client requests on 192.168.0.121:2379, this is strongly d...raged!
10月 03 16:30:03 docker01 systemd[1]: Started Etcd Server.
10月 03 16:30:03 docker01 etcd[25120]: established a TCP streaming connection with peer 1b48f6b7ad694df1 (stream ...riter)
10月 03 16:30:03 docker01 etcd[25120]: established a TCP streaming connection with peer 1b48f6b7ad694df1 (stream ...riter)
10月 03 16:30:03 docker01 etcd[25120]: established a TCP streaming connection with peer 9110cc6981d65e50 (stream ...riter)
10月 03 16:30:03 docker01 etcd[25120]: established a TCP streaming connection with peer 9110cc6981d65e50 (stream ...riter)
Hint: Some lines were ellipsized, use -l to show in full.
[root@docker01 etcd-v3.0.12-linux-amd64]#
docker01:
[root@docker01 etcd-v3.0.12-linux-amd64]# etcdctl cluster-health
member 1b48f6b7ad694df1 is healthy: got healthy result from http://192.168.0.123:2379
member 87ef0a454df755ba is healthy: got healthy result from http://192.168.0.121:2379
member 9110cc6981d65e50 is healthy: got healthy result from http://192.168.0.122:2379
cluster is healthy
[root@docker01 etcd-v3.0.12-linux-amd64]#
docker02:
[root@docker02 etcd-v3.0.12-linux-amd64]# etcdctl cluster-health
member 1b48f6b7ad694df1 is healthy: got healthy result from http://192.168.0.123:2379
member 87ef0a454df755ba is healthy: got healthy result from http://192.168.0.121:2379
member 9110cc6981d65e50 is healthy: got healthy result from http://192.168.0.122:2379
cluster is healthy
[root@docker02 etcd-v3.0.12-linux-amd64]#
docker03:
[root@docker03 etcd-v3.0.12-linux-amd64]# etcdctl cluster-health
member 1b48f6b7ad694df1 is healthy: got healthy result from http://192.168.0.123:2379
member 87ef0a454df755ba is healthy: got healthy result from http://192.168.0.121:2379
member 9110cc6981d65e50 is healthy: got healthy result from http://192.168.0.122:2379
cluster is healthy
[root@docker03 etcd-v3.0.12-linux-amd64]#
docker01:
[root@docker01 etcd-v3.0.12-linux-amd64]# etcdctl member list
1b48f6b7ad694df1: name=docker03 peerURLs=http://192.168.0.123:2380 clientURLs=http://127.0.0.1:2379,http://192.168.0.123:2379 isLeader=false
87ef0a454df755ba: name=docker01 peerURLs=http://192.168.0.121:2380 clientURLs=http://127.0.0.1:2379,http://192.168.0.121:2379 isLeader=false
9110cc6981d65e50: name=docker02 peerURLs=http://192.168.0.122:2380 clientURLs=http://127.0.0.1:2379,http://192.168.0.122:2379 isLeader=true
[root@docker01 etcd-v3.0.12-linux-amd64]#
docker02:
[root@docker02 etcd-v3.0.12-linux-amd64]# etcdctl member list
1b48f6b7ad694df1: name=docker03 peerURLs=http://192.168.0.123:2380 clientURLs=http://127.0.0.1:2379,http://192.168.0.123:2379 isLeader=false
87ef0a454df755ba: name=docker01 peerURLs=http://192.168.0.121:2380 clientURLs=http://127.0.0.1:2379,http://192.168.0.121:2379 isLeader=false
9110cc6981d65e50: name=docker02 peerURLs=http://192.168.0.122:2380 clientURLs=http://127.0.0.1:2379,http://192.168.0.122:2379 isLeader=true
[root@docker02 etcd-v3.0.12-linux-amd64]#
docker03:
[root@docker01 etcd-v3.0.12-linux-amd64]# etcdctl member list
1b48f6b7ad694df1: name=docker03 peerURLs=http://192.168.0.123:2380 clientURLs=http://127.0.0.1:2379,http://192.168.0.123:2379 isLeader=false
87ef0a454df755ba: name=docker01 peerURLs=http://192.168.0.121:2380 clientURLs=http://127.0.0.1:2379,http://192.168.0.121:2379 isLeader=false
9110cc6981d65e50: name=docker02 peerURLs=http://192.168.0.122:2380 clientURLs=http://127.0.0.1:2379,http://192.168.0.122:2379 isLeader=true
[root@docker01 etcd-v3.0.12-linux-amd64]#
[root@docker02 etcd-v3.0.12-linux-amd64]# etcdctl member list
1b48f6b7ad694df1: name=docker03 peerURLs=http://192.168.0.123:2380 clientURLs=http://127.0.0.1:2379,http://192.168.0.123:2379 isLeader=false
87ef0a454df755ba: name=docker01 peerURLs=http://192.168.0.121:2380 clientURLs=http://127.0.0.1:2379,http://192.168.0.121:2379 isLeader=false
9110cc6981d65e50: name=docker02 peerURLs=http://192.168.0.122:2380 clientURLs=http://127.0.0.1:2379,http://192.168.0.122:2379 isLeader=true
[root@docker02 etcd-v3.0.12-linux-amd64]#
[root@docker03 etcd-v3.0.12-linux-amd64]# etcdctl member list
1b48f6b7ad694df1: name=docker03 peerURLs=http://192.168.0.123:2380 clientURLs=http://127.0.0.1:2379,http://192.168.0.123:2379 isLeader=false
87ef0a454df755ba: name=docker01 peerURLs=http://192.168.0.121:2380 clientURLs=http://127.0.0.1:2379,http://192.168.0.121:2379 isLeader=false
9110cc6981d65e50: name=docker02 peerURLs=http://192.168.0.122:2380 clientURLs=http://127.0.0.1:2379,http://192.168.0.122:2379 isLeader=true
[root@docker03 etcd-v3.0.12-linux-amd64]#
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!
PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我吧!

原文作者:超哥的IT私房菜;如有侵权,请联系管理员删除。