ITPub博客

首页 > 数据库 > 数据库开发技术 > etcd集群离线部署秘籍:打造高效Docker容器集群网络基石

etcd集群离线部署秘籍:打造高效Docker容器集群网络基石

原创 数据库开发技术 作者:shuchaoyang 时间:2024-10-23 06:00:00 0 删除 编辑

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集群成员

Docker容器集群网络架构:二、etcd集群离线部署

2.1 准备工作

以docker01节点为例,其它节点以此执行。

2.1.1 上传etcd
[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]#
2.1.2 解压etcd
[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]#
2.1.3 拷贝文件到/usr/local/bin
[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]#
2.1.4 创建相关目录并赋权
[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]#

2.2 创建etcd集群

2.2.1 创建etcd配置文件
  • 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
2.2.2 配置etcd服务文件

以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]#
2.2.3 启动ectd服务

以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]#

2.3 查看etcd集群

2.3.1 查看etcd集群健康状态
  • 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]#
2.3.2 查看etcd集群成员
  • 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私房菜;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
专注于IT系统集成、运维、架构二十年的IT职场老兵,拥有CCNA、OCA、OCP、PGCA、PGCE认证证书,公众号:超哥的IT私房菜,知识星球:超哥的IT私房菜,目前是多家IT厂商的咨询顾问。

注册时间:2021-08-27

  • 博文量
    552
  • 访问量
    303451