<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Docker三劍客之Docker Swarm

          共 7876字,需瀏覽 16分鐘

           ·

          2024-05-16 19:55

           

          一、環(huán)境

          docker安裝:

          sudo apt install docker.io

          主機(jī)分配:

          操作系統(tǒng) 主機(jī)名 主機(jī)IP docker版本
          debian 12 (bookworm) fs3(管理節(jié)點(diǎn)) 192.168.1.95 v20.10.24
          debian 12 (bookworm) fs1(工作節(jié)點(diǎn)) 192.168.1.91 v20.10.24
          debian 12 (bookworm) fs0(工作節(jié)點(diǎn)) 192.168.1.92 v20.10.24

          開(kāi)放端口:

          2377/tcp:集群管理通信

          7946/tcp、7946/udp:集群中各節(jié)點(diǎn)之間的通信

          4789/udp:overlay網(wǎng)絡(luò)使用

          二、創(chuàng)建集群

          2.1 創(chuàng)建管理節(jié)點(diǎn)

          在管理節(jié)點(diǎn)fs3上創(chuàng)建集群,使用命令如下:

          sudo docker swarm init --advertise-addr 192.168.1.95
          其中--advertise-addr用于配置一個(gè)IP地址,集群中其它節(jié)點(diǎn)使用此IP地址與管理節(jié)點(diǎn)通信,執(zhí)行命令后輸出如下:
          # 輸出Swarm initialized: current node (vjs13uolge09ts9xpzm3tx09p) is now a manager.
          To add a worker to this swarm, run the following command:
          docker swarm join --token SWMTKN-1-0jn2zp2301z0gbw4ihtlf476rib4nn5nogfiqoe8kp2r7au8wo-7dow28c4qtrpjjdzg67p6aerj 192.168.1.95:2377
          To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.


           2.2 將工作節(jié)點(diǎn)加入集群

          分別在fs1和fs0工作節(jié)點(diǎn)上執(zhí)行下列指令:

          sudo docker swarm join --token SWMTKN-1-0jn2zp2301z0gbw4ihtlf476rib4nn5nogfiqoe8kp2r7au8wo-7dow28c4qtrpjjdzg67p6aerj 192.168.1.95:2377

          如果要加入管理節(jié)點(diǎn),則使用下列指令:

          sudo docker swarm join-token manager --token SWMTKN-1-0jn2zp2301z0gbw4ihtlf476rib4nn5nogfiqoe8kp2r7au8wo-7dow28c4qtrpjjdzg67p6aerj 192.168.1.95:2377

           注意:該token有效期為24小時(shí)。如果token已過(guò)期,則可以使用一下命令重新獲?。?/p>

          docker swarm join-token worker

           可使用docker info 查看當(dāng)前集群的詳細(xì)信息

           使用docker node ls 查看當(dāng)前集群中各節(jié)點(diǎn)信息:

           其中*表示當(dāng)前位于此節(jié)點(diǎn)。

           2.3 集群網(wǎng)絡(luò)

          當(dāng)在管理節(jié)點(diǎn)使用docker swarm init初始化一個(gè)docker集群時(shí),docker默認(rèn)會(huì)創(chuàng)建兩個(gè)網(wǎng)絡(luò):

          • overlay驅(qū)動(dòng)的網(wǎng)絡(luò):名稱為ingress,該網(wǎng)絡(luò)用于處理集群中各個(gè)服務(wù)之間的控制與數(shù)據(jù)傳輸(當(dāng)創(chuàng)建網(wǎng)絡(luò)服務(wù)service時(shí),如果沒(méi)有指定自定義的overlay網(wǎng)絡(luò),則默認(rèn)使用ingress網(wǎng)絡(luò))。

          • bridge驅(qū)動(dòng)的網(wǎng)絡(luò):名稱為docker_gwbridge,該網(wǎng)絡(luò)用于維護(hù)集群中各個(gè)節(jié)點(diǎn)之間的連接。

          可以使用docker network ls查看集群網(wǎng)絡(luò)

           

          三、集群管理可視化

           集群搭建好之后,我們使用portainer實(shí)現(xiàn)docker可視化管理界面。

          portainer分兩種部署模式:?jiǎn)螜C(jī)部署和集群部署

          3.1 單機(jī)部署

          我們可以將portainer部署在docker集群的管理節(jié)點(diǎn)中。此時(shí),portainer可以通過(guò)管理節(jié)點(diǎn)的docker進(jìn)程實(shí)現(xiàn)對(duì)docker集群的可視化。具體步驟為:


          #在管理節(jié)點(diǎn)拉去portainer鏡像docker pull portainer/portainer-ce:latest
          #啟動(dòng)portainer容器
          docker run \ -p 8000:8000 \ -p 9443:9443 \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ --name my-portainer \ -d \ --privileged=true \ --restart=always \ portainer/portainer-ce:latest
          # --privileged=true用于賦予該容器root權(quán)限


          當(dāng)然也可以嘗試使用docker-compose編排一個(gè)容器。這里不再贅述。

          在瀏覽器中輸入https://192.168.1.2:9443,進(jìn)入portainer環(huán)境創(chuàng)建頁(yè)面。

          3.2 集群部署

          • 在管理節(jié)點(diǎn)下載部署文件

          curl -L https://downloads.portainer.io/ce2-19/portainer-agent-stack.yml -o portainer-agent-stack.yml
          文件內(nèi)容如下:
          version: '3.2'
          services: agent: image: portainer/agent:2.19.4 volumes: - /var/run/docker.sock:/var/run/docker.sock - /var/lib/docker/volumes:/var/lib/docker/volumes networks: - agent_network deploy: mode: global placement: constraints: [node.platform.os == linux]
          portainer: image: portainer/portainer-ce:2.19.4 command: -H tcp://tasks.agent:9001 --tlsskipverify ports: - "9443:9443" - "9000:9000" - "8000:8000" volumes: - portainer_data:/data networks: - agent_network deploy: mode: replicated replicas: 1 placement: constraints: [node.role == manager]
          networks: agent_network: driver: overlay attachable: true
          volumes: portainer_data:


          此時(shí)需要對(duì)agent部分增加一個(gè)端口掛載配置,否則后面創(chuàng)建環(huán)境時(shí)會(huì)因?yàn)檫B接失敗導(dǎo)致無(wú)法創(chuàng)建環(huán)境:


          version: '3.2'
          services: agent: image: portainer/agent:2.19.4 volumes: - /var/run/docker.sock:/var/run/docker.sock - /var/lib/docker/volumes:/var/lib/docker/volumes ports: - "9001:9001" networks: - agent_network deploy: mode: global placement: constraints: [node.platform.os == linux]
          portainer: image: portainer/portainer-ce:2.19.4 command: -H tcp://tasks.agent:9001 --tlsskipverify ports: - "9443:9443" - "9000:9000" - "8000:8000" volumes: - portainer_data:/data networks: - agent_network deploy: mode: replicated replicas: 1 placement: constraints: [node.role == manager]
          networks: agent_network: driver: overlay attachable: true
          volumes: portainer_data:


          •  在管理節(jié)點(diǎn)部署portainer集群

          docker stack deploy -c portainer-agent-stack.yml portainer

           可以看到創(chuàng)建了一個(gè)網(wǎng)絡(luò)和兩個(gè)服務(wù)器:

          1. portainer_agent_network

          2. portainer_agent

          3. portainer_portainer

           在集群中任意節(jié)點(diǎn)查看網(wǎng)絡(luò),可以看到所有節(jié)點(diǎn)上都創(chuàng)建了一個(gè)overlay驅(qū)動(dòng)的網(wǎng)絡(luò)portainer_agent_network。也就是在集群的各個(gè)節(jié)點(diǎn)創(chuàng)建該網(wǎng)絡(luò)portainer_agent_network。

          •  在管理節(jié)點(diǎn)查看服務(wù)

          docker service ls

          •  在管理節(jié)點(diǎn)查看容器

          docker ps

          •  在工作節(jié)點(diǎn)查看容器

           注意:

            與管理節(jié)點(diǎn)不同的是,工作簡(jiǎn)單值創(chuàng)建了portainer/agent容器,它是由管理節(jié)點(diǎn)在集群中創(chuàng)建的副本容器。

          • 在瀏覽器中輸入https://192.168.1.95:9443,進(jìn)入portainer界面

           與單機(jī)部署模式不同的是,在選擇環(huán)境類型時(shí),我們應(yīng)該選擇集群模式。即,勾選Docker Swarm 選項(xiàng)卡:

           然后選擇agent方式配置環(huán)境連接。當(dāng)然默認(rèn)情況,系統(tǒng)默認(rèn)創(chuàng)建一個(gè)portainer集群環(huán)境:

          •  進(jìn)入該環(huán)境查看詳細(xì)信息

          •  進(jìn)入集群頁(yè)面,可以看到我們?cè)诠芾砉?jié)點(diǎn)上部署的portainer容器根據(jù)服務(wù)的副本配置,在工作節(jié)點(diǎn)上也建立了相同的portainer容器副本。

           

           

          3.3 portainer密碼重置

          查看portainer是否正常遠(yuǎn)行:

          docker ps

           停止docker容器:

          docker stop 5ca33ade99b4

           查看portainer容器掛載信息:

          docker inspect 5ca33ade99b4

          找到容器掛載路徑

           進(jìn)入到該路徑下查看內(nèi)容:

           執(zhí)行下列命令,重置管理員密碼:

          docker run --rm -v /var/lib/docker/volumes/portainer_data/_data:/data portainer/helper-reset-password

           啟動(dòng)docker后,使用上圖輸出密碼即可正常登錄portainer管理界面。

           

          四、部署容器集群

          以創(chuàng)建busybox鏡像容器為例,創(chuàng)建docker容器集群

           4.1 拉去鏡像

          在管理節(jié)點(diǎn)中使用命令拉拉取鏡像。

          docker pull busybox

          4.2創(chuàng)建網(wǎng)絡(luò)

          在管理節(jié)點(diǎn)創(chuàng)建一個(gè)overlay驅(qū)動(dòng)的網(wǎng)絡(luò)。

          docker network create -d overlay --attachable busybox_overlay_network

          注意:

             在集群環(huán)境創(chuàng)建overlay驅(qū)動(dòng)網(wǎng)絡(luò)時(shí),一定要帶參數(shù) --attachable,方便集群容器或單機(jī)容器與運(yùn)行在其它節(jié)點(diǎn)中的容器建立通信。

          4.3 創(chuàng)建服務(wù)器

          在管理節(jié)點(diǎn)中創(chuàng)建服務(wù)

          docker service create -td --name busybox_service --network busybox_overlay_network --replicas=2 busybox
          • --replicas=2表示需要?jiǎng)?chuàng)建兩個(gè)busybox容器的副本。

          • --network busybox_overlay_network表示使用我們?cè)谏厦鎰?chuàng)建的網(wǎng)絡(luò)。

           4.4 進(jìn)入portainer查看busybox集群

           在容器列表頁(yè)面可以看到busybox容器集群??梢钥吹絻蓚€(gè)busybox容器分別位于dedian-fs0和debian-fs1節(jié)點(diǎn),IP地址分別為10.0.2.3和10.0.2.4。

           

           4.5 不同節(jié)點(diǎn)間容器通信

          對(duì)應(yīng)busybox容器集群的情況如下

          主機(jī) 容器IP地址
          debian-fs0 10.0.2.4
          debian-fs1 10.0.2.3

           進(jìn)入到debian-fs0主機(jī)的busybox容器,ping位于debian-fs1主機(jī)中的busybox容器,可以ping通,反之相同。

           4.6 集群擴(kuò)展

          前面在創(chuàng)建busybox容器集群是,設(shè)置其副本數(shù)量為2 --replicas=2,現(xiàn)在通過(guò)portainer將副本數(shù)量修改為3。

           五、集群之負(fù)載均衡

          5.1 無(wú)狀態(tài)服務(wù)負(fù)載均衡

          以nginx為例,實(shí)現(xiàn)無(wú)狀態(tài)服務(wù)負(fù)載均衡。

          • 拉取nginx鏡像

          docker pull nginx
          • 被nginx服務(wù)創(chuàng)建overlay驅(qū)動(dòng)的網(wǎng)絡(luò)

          docker network create -d overlay --attachable nginx_overlay_network
          • 創(chuàng)建服務(wù)

          docker service create -td --name nginx_service --network nginx_overlay_network --replicas=3 -p 8080:80 nginx

          執(zhí)行命令后等3分鐘,再進(jìn)portainer查看,發(fā)現(xiàn)nginx服務(wù)中三個(gè)節(jié)點(diǎn)已經(jīng)處于runing狀態(tài)。

          •  查看三臺(tái)主機(jī)節(jié)點(diǎn)的nginx服務(wù)默認(rèn)發(fā)布頁(yè)面

           

           

           

          •  驗(yàn)證負(fù)載均衡功能

          分別修改節(jié)點(diǎn)中的index.html頁(yè)面方便區(qū)分來(lái)自不同容器的響應(yīng)。

          echo "server 192.168.1.95" > index.html
          在物理機(jī)上驗(yàn)證負(fù)載均衡功能

          鏈接:https://www.cnblogs.com/zhongqifeng/p/18108887

          (版權(quán)歸原作者所有,侵刪)

          瀏覽 147
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产黄色性爱视频 | 无码-ThePorn | 夜夜操综合| 国产91深喉口爆在线观看 | 最新草比视频网站 |