1. 程式人生 > >Docker(九) - Swarm服務(service)與負載均衡

Docker(九) - Swarm服務(service)與負載均衡

需要準備的:

  1. 一臺管理節點主機(可虛擬)和倆臺worker工作節點主機(可虛擬)。
  2. 實驗的機器都需要存在你要執行的映象。

進入管理節點終端

格式:docker service create --replicas 數量 -p 訪問埠:容器埠 --name 服務名 映象名:標籤
例子:

# docker service create --replicas 3 -p 80:80 --name nginx nginx:1.13.7-alpine

service create:建立服務
--replicas:多少個副本,就是啟用多少個節點。節點啟動會自動啟動容器。
-p

:外部訪問埠
--name:服務名稱,這個使用# docker service ps 服務名稱 檢視開啟的服務資訊。

檢視所有服務

# docker service ls

伸縮服務

這個伸縮服務是嘛意思呢?就是擴充套件和收縮,根據你伺服器的壓力進行伸縮。
在這裡插入圖片描述
我現在是開啟了倆個副本。

新增一個副本

# docker service scale 服務名稱=3

在這裡插入圖片描述

刪除服務

# docker service rm 服務名稱

負載均衡

要實現docker自帶的負載均衡就得讓所有的容器連上同一個網路。

建立網路

 # docker network create --driver overlay test

建立服務

# docker service create --replicas 3 --network test  -p xx:xx --name 服務名 映象名

# docker network inspect test

重點在於 --network test test就是上面你建立的網路名稱。此時所有的服務節點都會連上。

預設採用的是 vip 負載均衡模式,vip模式,就是docker swarm為每一個啟動的service分配一個vip,並在DNS中將service name解析為該vip,發往該vip的請求將被自動分發到service下面的諸多active task上(down掉的task將被自動從vip均衡列表中刪除)。

測試負載均衡

# for i in {1..10}; do curl ip地址;done

在終端中負載均衡是實現了,但是你用瀏覽器去訪問的話,會發現重新整理沒有效果。其實是有效果的,等幾十秒吧。

或者模擬繁忙
在輸出之前使用PHP的sleep(1),就是延遲一秒,快速按F5重新整理倆次,就能看到效果了。

圖形化介面檢視各節點

# docker service create \
  --name=viz \
  --publish=8080:8080/tcp \
  --constraint=node.role==manager \
  --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
  dockersamples/visualizer

瀏覽器訪問這個容器,埠8080

ip地址(或域名):8080