Docker Swarm Mode 學習筆記(聊聊 replicas)


在 Swarm 集群中, 創建服務時可以通過設置 --replicas 參數來指定此服務在工作節點上運行的任務數。

示例

這里我們來創建一個 nginx 服務作為示例:

version: '3'

services: 
  nginx:
    image: nginx:latest
    deploy:
      replicas: 3
    ports: 
      - "80:80"
    networks: 
      - net
  visualizer:
    image: dockersamples/visualizer:stable
    ports: 
      - "8080:8080"
    volumes: 
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints: [node.role == manager]
    networks: 
      - net

networks: 
  net:

在文件所在目錄執行 docker stack deploy -c docker-compose.yml nginx 來創建服務,由於我這里只准備了一台 Docker 主機, 所以在這個 Swarm 集群中情況如圖所示:

nginx示例服務visualizer

可以看到我們的 nginx 服務創建了 3個 nginx_nginx 任務, 1個visualizer 服務。

docker ps 查看所有容器

docker exec -it <container id> /bin/bash 依次進入到3個 nginx_nginx 任務所對應的容器中

cd /usr/share/nginx/html 找到 index.html 文件

將3個容器中 index.html 的內容分別改為 nginx.1, nginx.2, nginx.3

echo nginx.1 > index.html

...

然后我們訪問 http://127.0.0.1 , 即可看到相對應的修改頁面。 這里我們多嘗試幾次,會發現,有時候出現的是 nginx.1, 也會出現 nginx.2, nginx.3 。 這就是 Docker Swarm 集群模式中自帶的負載均衡帶來的效果。

下面,我們來收縮或者拓展在一台工作節點上執行的任務量:

收縮:

docker service scale nginx_nginx=2

拓展

docker service scale nginx_nginx=5

可通過 docker service ls 來查看服務概況。

總結

服務的部署模式有兩種:

  • global : 每個工作節點上都會運行一個服務
  • replicated: 每個工作節點會運行 replicas 個服務

Docker Swarm 集群內置的負載均衡,在同一個工作節點上, 多個相同的任務(容器)會由 Swarm 集群的負載均衡來命中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM