欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Docker Swarm部署高可用集群的詳細(xì)步驟

 更新時(shí)間:2025年07月04日 09:01:20   作者:思靜魚(yú)  
Docker Swarm 是 Docker 原生的集群管理工具,可以輕松地將多個(gè) Docker 主機(jī)組成一個(gè)集群,實(shí)現(xiàn)服務(wù)的高可用性和負(fù)載均衡,以下是詳細(xì)的部署步驟,需要的朋友可以參考下

一、環(huán)境準(zhǔn)備

1. 服務(wù)器要求

  • 至少 3 臺(tái) Linux 服務(wù)器(建議 CentOS/Ubuntu)
  • 每臺(tái)服務(wù)器已安裝 Docker Engine(版本 19.03+)
  • 服務(wù)器之間網(wǎng)絡(luò)互通
  • 開(kāi)放的端口:2377(集群管理)、7946(節(jié)點(diǎn)通信)、4789(覆蓋網(wǎng)絡(luò))

2. 設(shè)置主機(jī)名和解析(所有節(jié)點(diǎn))

# 設(shè)置主機(jī)名
hostnamectl set-hostname node1  # 在第一臺(tái)執(zhí)行
hostnamectl set-hostname node2  # 在第二臺(tái)執(zhí)行
hostnamectl set-hostname node3  # 在第三臺(tái)執(zhí)行

# 編輯/etc/hosts添加解析
echo "
192.168.1.101 node1
192.168.1.102 node2
192.168.1.103 node3
" >> /etc/hosts

二、初始化 Swarm 集群

1. 在主節(jié)點(diǎn)(node1)上初始化 Swarm

docker swarm init --advertise-addr <node1-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 192.168.1.101:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

2. 添加工作節(jié)點(diǎn)

在其他節(jié)點(diǎn)上運(yùn)行上面輸出的加入命令:

docker swarm join --token <worker-token> <node1-IP>:2377

3. 添加管理節(jié)點(diǎn)(可選,實(shí)現(xiàn)管理高可用)

# 在主節(jié)點(diǎn)獲取管理令牌
docker swarm join-token manager

# 在其他管理節(jié)點(diǎn)運(yùn)行輸出的命令

三、驗(yàn)證集群狀態(tài)

1. 查看節(jié)點(diǎn)列表

docker node ls

輸出示例:

ID                            HOSTNAME   STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
x3y *   node1      Ready     Active         Leader           20.10.7
z4w     node2      Ready     Active         Reachable        20.10.7
a5b     node3      Ready     Active                          20.10.7

2. 檢查 Swarm 狀態(tài)

docker info | grep -i swarm

四、部署高可用服務(wù)

1. 創(chuàng)建覆蓋網(wǎng)絡(luò)

docker network create --driver overlay --attachable my-overlay

2. 部署示例服務(wù)(Nginx)

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

3. 查看服務(wù)狀態(tài)

docker service ls
docker service ps nginx

五、實(shí)現(xiàn)高可用特性

1. 服務(wù)自動(dòng)重啟

docker service update \
  --restart-condition any \
  --restart-delay 5s \
  --restart-max-attempts 3 \
  nginx

2. 設(shè)置滾動(dòng)更新策略

docker service update \
  --update-parallelism 2 \
  --update-delay 10s \
  --image nginx:1.21 \
  nginx

3. 配置健康檢查

docker service update \
  --health-cmd "curl -f http://localhost || exit 1" \
  --health-interval 5s \
  --health-retries 3 \
  --health-timeout 2s \
  nginx

六、集群管理

1. 節(jié)點(diǎn)維護(hù)

# 將節(jié)點(diǎn)設(shè)置為維護(hù)模式
docker node update --availability drain node2

# 恢復(fù)節(jié)點(diǎn)
docker node update --availability active node2

2. 備份 Swarm 配置

# 備份 Raft 日志(在管理節(jié)點(diǎn)執(zhí)行)
docker swarm ca --rotate  # 先輪換證書(shū)
tar -czvf swarm-backup.tar.gz /var/lib/docker/swarm/

3. 災(zāi)難恢復(fù)

# 在新節(jié)點(diǎn)恢復(fù)管理角色
docker swarm init --force-new-cluster --advertise-addr <new-ip>

七、監(jiān)控和日志

1. 部署監(jiān)控棧

# 創(chuàng)建監(jiān)控網(wǎng)絡(luò)
docker network create --driver overlay monitor

# 部署 Prometheus
docker service create --name prometheus \
  --network monitor \
  --publish published=9090,target=9090 \
  prom/prometheus

# 部署 Grafana
docker service create --name grafana \
  --network monitor \
  --publish published=3000,target=3000 \
  grafana/grafana

2. 集中日志收集

docker service create --name logspout \
  --mode global \
  --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \
  --network my-overlay \
  gliderlabs/logspout syslog+tls://your-log-server:514

八、安全加固

1. 啟用 TLS 加密

# 初始化 Swarm 時(shí)啟用 TLS
docker swarm init --advertise-addr <ip> --default-addr-pool 10.10.0.0/16 --data-path-port 4789 --force-new-cluster --listen-addr <ip>:2377 --cert-expiry 2160h

2. 定期輪換證書(shū)

docker swarm ca --rotate

3. 限制管理節(jié)點(diǎn)訪(fǎng)問(wèn)

iptables -A INPUT -p tcp --dport 2377 -s <trusted-ip> -j ACCEPT
iptables -A INPUT -p tcp --dport 2377 -j DROP

常見(jiàn)問(wèn)題解決

節(jié)點(diǎn)無(wú)法加入集群

  • 檢查防火墻設(shè)置
  • 驗(yàn)證令牌是否過(guò)期(默認(rèn)24小時(shí))
  • 確保所有節(jié)點(diǎn)時(shí)間同步

服務(wù)無(wú)法啟動(dòng)

  • 檢查資源限制 docker service inspect --pretty <service>
  • 查看日志 docker service logs <service>

網(wǎng)絡(luò)連接問(wèn)題

  • 驗(yàn)證覆蓋網(wǎng)絡(luò) docker network inspect <network>
  • 檢查 IP 地址池是否沖突

通過(guò)以上步驟,您已經(jīng)成功部署了一個(gè)高可用的 Docker Swarm 集群。這種架構(gòu)可以自動(dòng)處理節(jié)點(diǎn)故障、服務(wù)擴(kuò)展和負(fù)載均衡,適合生產(chǎn)環(huán)境使用。

以上就是使用Docker Swarm部署高可用集群的詳細(xì)步驟的詳細(xì)內(nèi)容,更多關(guān)于Docker Swarm部署高可用集群的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Docker 鏡像國(guó)內(nèi)加速的方法匯總(收藏版)

    Docker 鏡像國(guó)內(nèi)加速的方法匯總(收藏版)

    本文介紹了在國(guó)內(nèi)使用Docker時(shí)遇到的加速和優(yōu)化方法,針對(duì)國(guó)內(nèi)下載速度慢和斷線(xiàn)問(wèn)題,可以使用國(guó)內(nèi)可用的DockerRegistryMirrors或自建DockerRegistryMirror/Proxy,針對(duì)沒(méi)有公共鏡像庫(kù)賬號(hào)導(dǎo)致的限流問(wèn)題,可以注冊(cè)各個(gè)鏡像庫(kù)賬號(hào)并登錄,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • Docker使用編寫(xiě)dockerfile啟動(dòng)node.js應(yīng)用

    Docker使用編寫(xiě)dockerfile啟動(dòng)node.js應(yīng)用

    這篇文章主要介紹了Docker使用編寫(xiě)dockerfile啟動(dòng)node.js應(yīng)用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • Docker可視化工具Portainer的具體使用

    Docker可視化工具Portainer的具體使用

    Portainer是Docker的可視化工具,可提供一個(gè)交互界面顯示Docker的詳細(xì)信息供用戶(hù)操作,本文主要介紹了Docker可視化工具Portainer的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • 基于Docker+Selenium Grid的測(cè)試技術(shù)應(yīng)用示例代碼

    基于Docker+Selenium Grid的測(cè)試技術(shù)應(yīng)用示例代碼

    Selenium Grid允許我們?cè)诙嗯_(tái)計(jì)算機(jī)上并行運(yùn)行測(cè)試,并集中管理不同的瀏覽器版本和瀏覽器配置。這篇文章給大家介紹基于Docker+Selenium Grid的測(cè)試技術(shù)應(yīng)用示例代碼,需要的朋友參考下吧
    2021-08-08
  • jenkins中通過(guò)Publish Over SSH插件將項(xiàng)目部署到遠(yuǎn)程機(jī)器上的講解說(shuō)明

    jenkins中通過(guò)Publish Over SSH插件將項(xiàng)目部署到遠(yuǎn)程機(jī)器上的講解說(shuō)明

    今天小編就為大家分享一篇關(guān)于jenkins中通過(guò)Publish Over SSH插件將項(xiàng)目部署到遠(yuǎn)程機(jī)器上的講解說(shuō)明,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • docker容器增加或者修改容器映射端口的實(shí)現(xiàn)方法

    docker容器增加或者修改容器映射端口的實(shí)現(xiàn)方法

    在只有使用docker安裝的容器,沒(méi)有使用docker-compose或者其他客戶(hù)端工具,如果要增加或者修改容器端口,也是可以增加或者修改容器端口映射,本文給大家介紹了docker容器增加或者修改容器映射端口的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2025-01-01
  • Docker從0到1實(shí)現(xiàn)項(xiàng)目編排部署

    Docker從0到1實(shí)現(xiàn)項(xiàng)目編排部署

    Docker編排是管理和協(xié)調(diào)多個(gè)Docker容器的工具和技術(shù),目的是簡(jiǎn)化容器的部署、擴(kuò)展和管理流程,本文主要介紹了Docker從0到1實(shí)現(xiàn)項(xiàng)目編排部署,感興趣的可以了解一下
    2025-03-03
  • Docker啟動(dòng)PostgreSQL時(shí)創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)的解決方案

    Docker啟動(dòng)PostgreSQL時(shí)創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)的解決方案

    這篇文章主要介紹了Docker啟動(dòng)PostgreSQL時(shí)創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)的解決方案,重點(diǎn)給大家介紹如何把shell/sql腳本放入/docker-entrypoint-initdb.d/目錄中,讓容器啟動(dòng)的時(shí)候自動(dòng)執(zhí)行創(chuàng)建
    2021-06-06
  • Docker的MySQL容器時(shí)區(qū)問(wèn)題修改

    Docker的MySQL容器時(shí)區(qū)問(wèn)題修改

    這篇文章主要給大家介紹了關(guān)于Docker的MySQL容器時(shí)區(qū)問(wèn)題修改的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • docker搭建nginx實(shí)現(xiàn)負(fù)載均衡的示例代碼

    docker搭建nginx實(shí)現(xiàn)負(fù)載均衡的示例代碼

    本隨著互聯(lián)網(wǎng)應(yīng)用規(guī)模不斷擴(kuò)大,原有的單一服務(wù)器已經(jīng)無(wú)法滿(mǎn)足高并發(fā)和高可用性的要求,本文就來(lái)介紹docker搭建nginx實(shí)現(xiàn)負(fù)載均衡的示例代碼,感興趣的可以了解一下
    2023-12-12

最新評(píng)論