Docker Swarm集群搭建
????Docker Swarm提供Docker容器集群服務,可以將多個Docker主機封裝為單個單行的虛擬Docker主機,快速打造一套容器云平臺。
????DockerSwarm提供很多新特性,如 具有容錯能力的去中心化設計、內置服務發現、負載均衡、路由網絡、動態伸縮、滾動更新、安全傳輸等。
?
必須弄清楚的幾個基本概念
節點:
????運行Docker的主機可以主動初始化一個Swarm集群或者加入一個已經存在的Swarm集群,這樣這個運行Docker的主機就成為一個Swarm集群的節點(node)
節點分為管理(manager)節點和工作(worker)節點。
管理節點用于Swarm集群的管理,docker swarm命令基本只能在管理節點上執行(節點退出集群命令docker swarm leave 可以在工作節點執行)。一個swarm集群可以有多個管理節點,但只有一個管理節點可以成為leader,leader通過raft協議實現。
工作節點是任務執行節點,管理節點將服務(service)下發至工作節點執行。管理節點默認也作為工作節點。也可以通過配置讓服務只運行在管理節點。
工作節點與管理節點的關系
?
?
服務和任務
任務(Task)是Swarm中最小的調度單位,目前來說就是一個單一的容器。
服務(Services)是指一組任務的集合,服務定義了任務的屬性。服務有兩種模式:
replicated services 按照一定規則在各個工作節點上運行指定個數的任務。
????global services 每個工作節點上運行一個任務
兩種模式通過 docker service create 的 --mode 參數指定。
?
容器、任務、服務的關系
?
創建Swarm集群(WIn10+Docker Desktop)
下面創建一個小集群,一個管理節點,兩個工作節點。
創建三個主機,并把她們加到集群中去
?
第一個主機(也是管理節點manager)
docker-machine create --driver hyperv --hyperv-virtual-switch=public-all-web?manager
docker-machine ssh manager
docker swarm init --advertise-addr 192.168.0.106
?
docker swarm join --token SWMTKN-1-1u51qcpqcjpr3swnuevd6z4k7jvayfnty2bqqrnboy00taaj4f-eg58by0j4qpfezsfmyf72002q 192.168.0.106:2377
?
第二個主機(工作節點work1)
docker-machine create --driver hyperv --hyperv-virtual-switch=public-all-web?work1
docker-machine ssh work1
?
docker swarm join --token SWMTKN-1-1u51qcpqcjpr3swnuevd6z4k7jvayfnty2bqqrnboy00taaj4f-eg58by0j4qpfezsfmyf72002q 192.168.0.106:2377
?
第三個主機(工作節點work2)
docker-machine create --driver hyperv --hyperv-virtual-switch=public-all-web?work2
docker-machine ssh work2
?
docker swarm join --token SWMTKN-1-1u51qcpqcjpr3swnuevd6z4k7jvayfnty2bqqrnboy00taaj4f-eg58by0j4qpfezsfmyf72002q 192.168.0.106:2377
?
Ok 這樣就創建好了一個最小的集群,然后登陸到管理節點上??聪虑闆r
docker node ls
?
部署服務
使用Docker service命令來管理Swarm集群中的服務,該命令只能在管理節點運行。
?
在上面創建的一個Swarm集群中運行一個nginx的服務。
docker service create --replicas 3 -p 80:80 --name nginx nginx:1.13.7-alpine
如果沒有問題的話,集群里這三臺訪問任何一個IP都應該可以看到服務
?
在管理者節點上通過docker service ls 來看Swarm集群運行的服務詳情
用docker node ls 來看個節點詳情
?
?
使用 docker service ps 來查看某個服務的詳情。
docker service ps nginx
?
docker service logs 看服務日志
docker service logs nginx
?
服務伸縮
可以使用 docker service scale 對一個服務運行的容器數量進行伸縮
當業務處于高峰期時,我們需要擴展服務運行的容器數量
docker service scale nginx=5
當業務平穩時,我們需要減少服務運行的容器數量
docker service scale nginx=2
刪除服務
使用 docker service rm 來從 Swarm 集群移除某個服務。
docker service rm nginx
?
獲取Join管理節點的token
docker swarm join-token manager
?
獲取加入工作節點的token
docker swarm join-token worker
?
?
總結
以上是生活随笔為你收集整理的Docker Swarm集群搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker Machine-Windo
- 下一篇: Docker Swarm删除节点