溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

docker swarm集群搭建的步驟

發布時間:2021-07-02 16:45:32 來源:億速云 閱讀:322 作者:chen 欄目:大數據
# Docker Swarm集群搭建的步驟

## 前言

Docker Swarm是Docker官方提供的容器編排工具,它允許用戶將多個Docker主機組成一個集群,統一管理容器服務。相比于Kubernetes,Swarm具有更輕量、易上手的特點,適合中小規模的應用場景。本文將詳細介紹如何從零開始搭建一個Docker Swarm集群。

---

## 一、環境準備

### 1.1 硬件要求
- 至少2臺Linux主機(物理機或虛擬機)
  - 推薦配置:2核CPU/4GB內存/20GB存儲
  - 操作系統:Ubuntu 20.04 LTS/CentOS 7+
- 網絡要求:
  - 所有節點在同一局域網
  - 開放端口:2377/tcp(管理端口)、7946/tcp+udp(節點通信)、4789/udp(覆蓋網絡)

### 1.2 軟件要求
- Docker Engine 20.10+
- 所有節點時間同步(建議安裝NTP服務)
- 主機名解析(可通過`/etc/hosts`或DNS配置)

---

## 二、基礎環境配置

### 2.1 安裝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

2.2 配置Docker守護進程

修改/etc/docker/daemon.json(如不存在則創建):

{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}

重啟Docker服務:

sudo systemctl restart docker

三、初始化Swarm集群

3.1 主節點初始化

選擇一臺作為管理節點(Manager)執行:

sudo docker swarm init --advertise-addr <MANAGER_IP>

示例輸出:

Swarm initialized: current node (xyz) is now a manager.
To add a worker to this swarm, run the following command:
    docker swarm join --token SWMTKN-1-xxx <MANAGER_IP>:2377

3.2 獲取加入令牌

查看管理令牌:

docker swarm join-token manager

查看工作節點令牌:

docker swarm join-token worker

3.3 添加工作節點

在其他節點上執行join命令:

sudo docker swarm join --token <TOKEN> <MANAGER_IP>:2377

四、集群驗證與管理

4.1 查看集群狀態

在管理節點執行:

docker node ls

示例輸出:

ID       HOSTNAME   STATUS  AVLABILITY  MANAGER STATUS
abc123   manager1   Ready   Active        Leader
def456   worker1    Ready   Active

4.2 節點角色管理

提升工作節點為管理節點:

docker node promote <NODE-ID>

降級管理節點:

docker node demote <NODE-ID>

五、網絡配置

5.1 創建覆蓋網絡

docker network create --driver overlay --subnet 10.0.9.0/24 my-overlay

5.2 驗證網絡

docker network ls

六、服務部署實戰

6.1 部署Nginx服務

docker service create \
  --name nginx \
  --replicas 3 \
  --publish published=8080,target=80 \
  --network my-overlay \
  nginx:latest

6.2 服務管理命令

命令 說明
docker service ls 查看服務列表
docker service ps <SERVICE> 查看服務詳情
docker service scale <SERVICE>=5 擴展副本數
docker service update --image nginx:alpine <SERVICE> 滾動更新

七、數據持久化方案

7.1 使用volume

創建全局volume:

docker volume create app-data

掛載volume:

docker service create \
  --mount type=volume,source=app-data,target=/app \
  --name redis \
  redis:alpine

7.2 NFS共享存儲

docker service create \
  --mount 'type=volume,src=nfsvol,dst=/app,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/path/on/nfs,"volume-opt=o=addr=<NFS_SERVER>,vers=4,soft,timeo=180,bg,tcp,rw"' \
  --name nfs-app \
  nginx

八、安全加固建議

8.1 證書配置

生成CA證書:

openssl genrsa -aes256 -out ca-key.pem 4096
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem

8.2 啟用TLS

修改daemon.json

{
  "tls": true,
  "tlscacert": "/path/to/ca.pem",
  "tlscert": "/path/to/server-cert.pem",
  "tlskey": "/path/to/server-key.pem"
}

九、常見問題排查

9.1 節點無法加入

  • 檢查防火墻規則
  • 驗證令牌有效性
  • 檢查/var/log/syslog日志

9.2 網絡通信失敗

  • 確認覆蓋網絡已創建
  • 檢查docker network inspect <NETWORK>
  • 驗證IP沖突

十、集群監控方案

10.1 部署cAdvisor

docker service create \
  --mode global \
  --name cadvisor \
  --mount type=bind,source=/,target=/rootfs,readonly=true \
  --mount type=bind,source=/var/run,target=/var/run \
  --mount type=bind,source=/sys,target=/sys,readonly=true \
  --mount type=bind,source=/var/lib/docker/,target=/var/lib/docker,readonly=true \
  google/cadvisor:latest

10.2 Prometheus集成

示例配置:

scrape_configs:
  - job_name: 'docker-swarm'
    static_configs:
      - targets: ['manager1:8080', 'worker1:8080']

結語

通過以上步驟,我們完成了Docker Swarm集群的搭建和基礎配置。Swarm的簡單易用特性使其成為容器編排的良好入門選擇。對于生產環境,建議結合CI/CD管道和監控系統構建完整的容器化平臺。后續可以進一步探索: - 服務滾動更新策略 - 配置管理(docker config) - 密鑰管理(docker secret) - 與Traefik等工具集成

注意:本文所有命令需根據實際環境修改IP地址、主機名等參數。建議在測試環境驗證后再部署到生產環境。 “`

(全文約2300字,實際字數可能因Markdown渲染略有差異)

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女