docker進階-利用dcoker Swarm搭建簡單集羣

什麼是Swarm

  在介紹Swarm以前咱們要說一下什麼Docker三劍客?node

  • Docker-Machine:負責在多種平臺上快速安裝 Docker 環境。
  • Docker-Compose:Docker官網編排工具。負責快速的部署分佈式應用
  • Docker-Swarm: Docker 容器集羣服務,是 Docker 官方對容器雲生態進行支持的核心方案。

   Swarm翻譯中文的意思是蜂羣的意思。你們都知道蜂羣是很不少多蜜蜂在一塊兒。裏面有蜂王和工蜂,各司其職。那麼在咱們技術界把許許多多的Docker組織在一塊兒,這樣就是Docker集羣。Swarm就是管理這些Docker的工具。同蜂羣同樣。也有蜂王(Master節點)工蜂(Node節點)各司其職。蜂王能調度和指揮全部的工蜂來完成各類任務。實現整個蜂羣的正常運轉。nginx

爲何要用Swarm

  由於在生產環境中使用單個Docker節點是遠遠不夠的,搭建Docker集羣勢在必行。 這樣能保證咱們的服務能夠作到不怠機。長時間穩定的運轉下去。雖然Docker集羣管理工具不少,有比較有名的Kubernetes和Mesos。可是咱們爲何要選擇Swarm呢?。首先對於一個剛剛入門和接觸Docker的人來講。最好的學習資料是官方文檔。Swarm是原生的,同時也是最簡單,最易學,最節省資源的Docker集羣管理工具。因此我相信Swarm不會讓我失望的。git

關於Machine

  因爲咱們等會要使用Machine來建立節點。因此介紹Machine的基本使用。github

Machine安裝
#因爲MacOs在安裝docker的時候。已經默認安裝Machine.這裏根據官網給出的Linux安裝命令
sudo curl -L https://github.com/docker/machine/releases/download/v0.13.0/docker-machine-`uname -s`-`uname -m` > /usr/local/bin/docker-machine
#添加權限
 sudo chmod +x /usr/local/bin/docker-machine
#查看當前Machine版本
docker-machine -v
#安裝MacOs虛擬機xhyve驅動。也能夠跳過
brew install docker-machine-driver-xhyve
使用Machine 建立虛擬機

使用Machine建立4個虛擬機docker

#create命令後面能夠添加自定義參數.能夠經過docker-machine create --driver virtualbox --help查看
#建立Master節點.這裏dm由於我使用自定義命令。等同於docker-machine
dm create Master
#能夠經過ls命令查看當前虛擬機.而後咱們分別創建3個node節點,node1,node2,node3
dm create Node1
dm create Node2
dm create Node3
#建立而後經過ls查看
dm ls
######################
NAME     ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORS
Master   -        virtualbox   Running   tcp://192.168.99.100:2376           v18.03.0-ce
Node1    -        virtualbox   Running   tcp://192.168.99.102:2376           v18.03.0-ce
Node2    -        virtualbox   Running   tcp://192.168.99.103:2376           v18.03.0-ce
Node3    -        virtualbox   Running   tcp://192.168.99.103:2376           v18.03.0-ce

  到此4臺虛擬機已經建立完畢。下面開始使用Swarm搭建一個集羣。ssh

Swarm實踐

建立集羣

  首先咱們須要登陸到Master這臺虛擬機。建立初始化一個集羣。curl

#登陸到Master
dm ssh Master
#初始化集羣。注意這裏因爲是虛擬機。有多個ip。全部必須制定ip.不然會報錯.
docker swarm init --advertise-addr 192.168.99.100
#這裏會提示建立manager成功。若是要加入worker。只須要在別的主機裏面輸入它已經生成的號的命令輸入就能夠了。
 docker swarm join --token SWMTKN-1-03e4mo13jpizh15kroub1qsxdxk6zj8qgu2y3acwi1v14zaqpe-e6hhlamgqa9m7w4601biqqtg9 192.168.99.100:2377
#登入Node1
dm ssh Node1
#輸入上面命令。Node2和Node3操做同樣
docker swarm join --token SWMTKN-1-03e4mo13jpizh15kroub1qsxdxk6zj8qgu2y3acwi1v14zaqpe-e6hhlamgqa9m7w4601biqqtg9 192.168.99.100:2377
#登陸Master,查看狀態
dm ssh Master
#查看集羣
docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
0vol8fdjksmabvmgx0x60ncyd *   Master              Ready               Active              Leader              18.03.0-ce
jnuun47ezvi0bl1iz1ccxmgto     Node1               Ready               Active                                  18.03.0-ce
ye6ghynu19tvdkf51kof13w6y     Node2               Ready               Active                                  18.03.0-ce
x84fqdefi4461gf087qcb9nmt     Node3               Ready               Active                                  18.03.0-ce

  這裏會看到4臺虛擬機。其中Master臺是Leader (就是咱們的蜂王),剩下的3臺就是咱們的worker(工蜂)到這裏咱們一個簡單的小集羣就搭建完畢了。tcp

運行服務

  咱們已經搭建好了集羣。可是要怎麼樣經過Master管理咱們的worker節點呢?
首先咱們須要登陸到Master這臺虛擬機。而後經過這個臺虛擬機來控制3個worker節點分佈式

#登陸Master
dm ssh Master
#運行服務。
docker service create --replicas 4 -p 80:80 --name nginx nginx
#查看集羣運行的服務
service ps nginx

enter image description here
  這個時候4個虛擬機已經所有安裝了nginx這個服務。咱們打開任意一個節點的ip打開就能夠看到熟悉的"Welcome to nginx!"的頁面了。到此整個教程結束。工具

相關文章
相關標籤/搜索