swarm mode叢集搭建及簡單概念

lightTrace發表於2018-08-27

首先了解下swarm幾個元件的基本概念,這還是相當重要的:

Manager nodes:用於控制編排、叢集管理和任務分配。
Worker nodes:其唯一的功能就是執行由Manager Node所分配的容器和服務。
Services:描述了您希望單個容器將如何在不同節點之間分發。如果您想建立服務,請在普通Docker執行時指定確切的資訊,再新增好新的引數(如:容器的副本數量)。
Tasks:是Swarm的基本單位。Manager Node根據在服務描述中設定的副本數量把任務分配該Worker Nodes。一旦一個任務被分配給了某個節點,它就不能被移到其他節點上。

1.環境搭建
準備三臺虛擬機器,當然有實體機更好,我這裡是:

192.168.1.101 ubuntu01
192.168.1.102 ubuntu02
192.168.1.103 ubuntu03

分別安裝docker

在101機器上執行

docker swarm init --advertise-addr 192.168.1.101

該命令執行後會彈出加入該管理節點的命令,如下:
在102,103上分別執行:

docker swarm join --token SWMTKN-1-6dem74efarrcbio5ryknz6ypry0hrw30uk1r20fl7a236sq93w-cvllbr6h19sht6z47eg6aaaiq 192.168.1.101:2377

2.叢集資訊
在101機器上執行

docker network ls

會發現多了一個ingress的overlay網路

執行docker node ls
會發現叢集資訊,ubuntu01是manager節點
這裡寫圖片描述

我們可以通過提升ubuntu02和ubuntu03的級別達到高可用:

docker node promote ubuntu02
docker node promote ubuntu03

這裡寫圖片描述

可以發現ubuntu02和ubuntu03的MANAGER STATUS狀態都變成reachable了,達到了高可用狀態

3.執行一個簡單的服務
執行一個小的alpine 系統ping www.baidu.com

docker service create --name test1 alpine ping www.baidu.com
docker service ls  #檢視我們的所有service
docker service inspect test1 #檢視test1的service所有資訊
docker service log test1 #檢視test1的logs 會發現ping百度的資訊

4.建立一個nginx服務

  • 建立nginx服務
docker service  create --name nginx nginx
  • 開放埠
docker service update --publish-add 8080:80 nginx

訪問http://192.168.1.101:8080http://192.168.1.102:8080http://192.168.1.103:8080/都可以開啟nginx首頁

請注意這裡並不是高可用,只是ingress網路生效後訪問101,102,103節點後任意一個被分配的工作節點都可以訪問

  • 服務高可用
docker service scale nginx=3

建立三個nginx的service例項同時執行
通過docker service ls 檢視

這裡就設定了三個副本,Manager Node根據在服務描述中設定的副本數量把任務分配該Worker Nodes。一旦一個任務被分配給了某個節點,它就不能被移到其他節點上。

  • 自建網路
docker network create -d overlay myself-overlay

建立自己的網路,然後將建立的服務附加到這個網路上,就可以直接實現容器與容器間的直接通訊(容器直接訪問的話使用服務名+內部埠)

docker service create --network myself-overlay --name nginx  #在這之前需要把服務都關掉(docker service rm nginx test1)
  • 服務不開放給外部使用
    通過dnsrr的方式實現:
 docker service create  --name nginx-b --endpoint-mode dnsrr

新增網路到nginx-b

docker service update --network-add myself-overlay nginx-b

相關文章