Docker集群管理(三)—— docker swarm mode基礎教程


docker從1.12版(及后續版本)集成了swarmkit。可以方便的實現docker集群。它有哪些特點呢:

  • 集成了集群功能
  • 分散設計:manager和worker兩種節點。
  • 聲明式服務模式
  • 可伸縮
  • 達到期望值——當某些有節點崩潰的時候,會在其他節點創建相應容器。
  • 跨主機網絡——采用overlay網絡,docker可在不同的主機間通訊。
  • 服務發現——內置服務發現功能,不需要額外使用etcd、consul、zookeeper.
  • 負載均衡
  • 安全通信
  • 安全回滾

docker命令概覽
從命令 docker -h 可以清楚的看到一些新的管理命令,這些管理命令下面還有子命令。
docker container
docker image
docker network
docker node
docker plugin
docker secret
docker service
docker stack
docker swarm
docker system
docker volume
例如:docker swarm init 初始化一個集群,其他命令直接 -h 查看命令就可以了。

本篇按docker官方教程順序大致介紹一下,也將一下自己的體驗過程中遇到的問題和解決辦法分享出來。

創建集群

本節的目標:

*創建一個集群
*添加節點到集群
*部署服務到swarm集群中
*管理集群

准備工作

*在vmware中的虛擬機(這里是centos 7.3 )
192.168.139.128(manager1)
192.168.139.129(manager2)
192.168.139.130(manager3)
192.168.139.131(worker)
*安裝docker1.12或以后的版本(這里是docker 1.13.1)
*設置虛擬機IP
虛擬機中的共享主機IP,在docker swarm創建了overaly網絡后,可能引起IP變化,可修改 /etc/sysconfig/network-scripts/ifcfg-ens33來固定IP。
*開啟防火牆端口
2377/tcp 、7946/tcp/udp,4789/udp端口

創建集群(swarm mode)

在一台128 manager上執行:

# docker swarm init --advertise-addr=192.168.139.128:2377

 Swarm initialized: current node (htqmmiiiw8z4cww3c4n1mkbkz) is now a manager.
 To add a worker to this swarm, run the following command:
     docker swarm join \
    --token SWMTKN-1-1xl2p1wd6r2ak0ekqtzmw0lf2fc78glrsgqm02wdqmxqap9yjv-8tezcdr89dgsv3byjxm90yvhv \
    192.168.139.128:2377
 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

此時128就是集群的manager節點(同時也是集群的worker節點),根據返回的信息,我們可以方便的添加一些worker節點,作為集群要考慮單點問題,故我們需要多添加幾台作為manager節點。添加之前可以查看一下當前集群中的節點情況:

# docker node ls

ID                           HOSTNAME        STATUS  AVAILABILITY  MANAGER STATUS
m7vv962jgkvjn5padsem5cbmz *  swarm.node1_m1  Ready   Active        Leader

然后執行:

docker swarm join-token manager

返回信息:

To add a manager to this swarm, run the following command:
docker swarm join
--token SWMTKN-1-6191qy3f6xkj39cg51gka40mgpq9c7o5tvyu19h3b1o0thh0e4-2kvhkye3194i7mxg3okjdqlog
192.168.139.128:2377
順便說一下docker swarm join-token 就是查看如何添加manager或worker節點的token

這里打算再添加1個manager節點,在129上執行

docker swarm join \
    --token SWMTKN-1-1xl2p1wd6r2ak0ekqtzmw0lf2fc78glrsgqm02wdqmxqap9yjv-ai5q09y6ogmfct4v5xhgsfmga \
    192.168.139.128:2377

將130,131作為worker節點,執行

docker swarm join \
    --token SWMTKN-1-6191qy3f6xkj39cg51gka40mgpq9c7o5tvyu19h3b1o0thh0e4-e1urle7qhwwvyufdqri4fre4s \
    192.168.139.128:2377

現在可以在每一個manager節點上查看一下所有的節點(docker node ls):

9bwmkfxz0fgflp4zu6luequaa swarm.node3-m3 Ready Active
hntv80xrlm22x17i792cdr2j3 swarm.node2_m2 Ready Active Reachable
m7vv962jgkvjn5padsem5cbmz * swarm.node1_m1 Ready Active Leader
yiyz9v3huqd7m0kgjvdu5vppt swarm.node4 Ready Active

可以看到多了一個reachable的管理節點,如果leader掛了,那么reachable節點就會提升為leader。這里面有一些具體的關於raft算法的不在累述。

到此,我們的簡易集群已經創建好了,看起來是不是太easy了?

可能會遇到的坑:

  • 沒開防火牆的2377/tcp 、7946/tcp/udp,4789/udp端口。
  • 虛擬機中的共享主機IP,在docker swarm創建了overaly網絡后,可能引起IP變化,可修改 /etc/sysconfig/network-scripts/ifcfg-ens33來固定IP。


免責聲明!

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



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