# 如何搭建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
選擇3個節點作為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/
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
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
sudo systemctl daemon-reload
sudo systemctl enable etcd
sudo systemctl start etcd
etcdctl --endpoints=http://<NODE1_IP>:2379 member list
etcdctl endpoint health
docker swarm init --advertise-addr <MANAGER_IP>
復制生成的join命令在其他節點執行:
docker swarm join --token SWMTKN-1-xxxxxx <MANAGER_IP>:2377
修改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
docker node ls
docker info | grep -i swarm
docker network create --driver overlay my-net
docker service create --name nginx --replicas 3 --network my-net -p 80:80 nginx:alpine
docker service ls
docker service ps nginx
curl http://<ANY_NODE_IP>:80
docker swarm join-token worker重新生成)journalctl -u etcd -fdocker network inspect my-net通過以上步驟,我們成功搭建了一個高可用的Docker Swarm集群,使用etcd作為分布式存儲后端。這種架構提供了: - 容器編排能力 - 服務發現功能 - 集群狀態持久化 - 故障自動恢復
后續可以進一步探索: - 集成CI/CD流水線 - 添加監控(Prometheus+Grafana) - 實現自動擴縮容 “`
(全文約1250字,實際字數可能因配置細節調整略有變化)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。