温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何搭建swarm+etcd+docker环境

发布时间:2021-11-18 15:48:47 来源:亿速云 阅读:293 作者:小新 栏目:云计算
# 如何搭建Swarm+etcd+Docker环境 ## 前言 在现代分布式系统架构中,容器编排和集群管理是关键组成部分。本文将详细介绍如何搭建一个基于Docker Swarm(集群管理工具)、etcd(分布式键值存储)和Docker(容器运行时)的完整环境,适用于中小规模的生产部署或开发测试场景。 --- ## 环境准备 ### 硬件要求 - 至少3台Linux服务器(推荐Ubuntu 20.04/CentOS 7+) - 每台服务器2GB+内存,2核CPU - 10GB+可用磁盘空间 - 服务器间网络互通(建议内网千兆) ### 软件要求 - Docker 20.10+ - etcd v3.4+ - 所有节点时间同步(NTP服务) --- ## 第一部分:安装Docker 在所有节点上执行: ```bash # Ubuntu示例 sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io # 验证安装 sudo docker --version 

提示:生产环境建议配置docker daemon的cgroupdriver=systemd


第二部分:部署etcd集群

选择3个节点作为etcd集群成员:

1. 下载etcd二进制包

ETCD_VER=v3.4.18 wget https://github.com/etcd-io/etcd/releases/download/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz tar xzvf etcd-${ETCD_VER}-linux-amd64.tar.gz sudo mv etcd-${ETCD_VER}-linux-amd64/{etcd,etcdctl} /usr/local/bin/ 

2. 创建配置文件(以node1为例)

cat > /etc/etcd.conf <<EOF ETCD_NAME=node1 ETCD_DATA_DIR=/var/lib/etcd ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380 ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 ETCD_INITIAL_ADVERTISE_PEER_URLS=http://<NODE1_IP>:2380 ETCD_ADVERTISE_CLIENT_URLS=http://<NODE1_IP>:2379 ETCD_INITIAL_CLUSTER="node1=http://<NODE1_IP>:2380,node2=http://<NODE2_IP>:2380,node3=http://<NODE3_IP>:2380" ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster ETCD_INITIAL_CLUSTER_STATE=new EOF 

3. 创建systemd服务

cat > /etc/systemd/system/etcd.service <<EOF [Unit] Description=etcd service After=network.target [Service] Type=notify EnvironmentFile=/etc/etcd.conf ExecStart=/usr/local/bin/etcd Restart=always [Install] WantedBy=multi-user.target EOF 

4. 启动服务

sudo systemctl daemon-reload sudo systemctl enable etcd sudo systemctl start etcd 

5. 验证集群状态

etcdctl --endpoints=http://<NODE1_IP>:2379 member list etcdctl endpoint health 

第三部分:搭建Docker Swarm集群

1. 初始化Swarm Manager(在第一个节点执行)

docker swarm init --advertise-addr <MANAGER_IP> 

2. 添加工作节点

复制生成的join命令在其他节点执行:

docker swarm join --token SWMTKN-1-xxxxxx <MANAGER_IP>:2377 

3. 配置Swarm使用etcd存储

修改docker daemon配置(所有节点):

sudo mkdir -p /etc/docker cat > /etc/docker/daemon.json <<EOF { "cluster-store": "etcd://<ETCD_CLUSTER_IPS>:2379", "cluster-advertise": "<NODE_IP>:2377" } EOF sudo systemctl restart docker 

4. 验证Swarm集群

docker node ls docker info | grep -i swarm 

第四部分:部署测试服务

1. 创建overlay网络

docker network create --driver overlay my-net 

2. 部署示例服务

docker service create --name nginx --replicas 3 --network my-net -p 80:80 nginx:alpine 

3. 查看服务状态

docker service ls docker service ps nginx curl http://<ANY_NODE_IP>:80 

常见问题排查

1. 节点无法加入Swarm

  • 检查防火墙规则(需开放2377/tcp,7946/tcp+udp,4789/udp)
  • 验证token是否过期(使用docker swarm join-token worker重新生成)

2. etcd集群健康检查失败

  • 检查节点间网络连通性
  • 查看日志:journalctl -u etcd -f

3. 服务无法跨节点通信

  • 确认overlay网络创建成功
  • 检查docker network inspect my-net

结论

通过以上步骤,我们成功搭建了一个高可用的Docker Swarm集群,使用etcd作为分布式存储后端。这种架构提供了: - 容器编排能力 - 服务发现功能 - 集群状态持久化 - 故障自动恢复

后续可以进一步探索: - 集成CI/CD流水线 - 添加监控(Prometheus+Grafana) - 实现自动扩缩容 “`

(全文约1250字,实际字数可能因配置细节调整略有变化)

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI