使用Docker Swarm快速搭建與部署你的服務叢集
初始化叢集
準備了對應的機器(兩個虛擬機器),基本資訊如下
IP | 主機名 | 備註 |
---|---|---|
192.168.1.8 | ubuntu-1 | 主 |
192.168.1.5 | ubuntu-1 | 從 |
注意:最好保持每個節點的docker版本號為最新且是相同的
在主節點(manager)上執行
root@ubuntu:/home/wangxc# docker swarm init --advertise-addr 192.168.1.8
結果
Swarm initialized: current node (oqela4wtpa9m7e8a6zi9k9rbl) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-03md8tqw24sd0tbxkyqxmiay5nixniax9c301f49qjorhsj069-44eeph3lldj3lopzk7tiiv1ve 192.168.1.8:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
然後在其他子節點執行
docker swarm join --token SWMTKN-1-03md8tqw24sd0tbxkyqxmiay5nixniax9c301f49qjorhsj069-44eeph3lldj3lopzk7tiiv1ve 192.168.1.8:2377
注意埠號是否開放,可以把防火牆全部關掉,正常的結果如下
This node joined a swarm as a worker.
說明兩個節點已經建立關係,而且manager為192.168.1.8,我們在主節點輸入命令
docker node ls
就能看到所有的節點資訊
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
x2n8p4qly9xkhpul49b96bx60 * ubuntu-1 Ready Active Leader 18.06.1-ce
b0p8o0vee21pf9nijcvoy0g72 ubuntu-2 Ready Active 18.06.1-ce
帶星號的額就是主節點了,很方便看。
部署
我事先準備了一個映象,一個簡單的python flask 服務,在指定映象的時候,最好把repo的地址寫上,因為每個節點不一定有該映象,需要到指定的repo去pull,如果不指定repo的話,有時可能會失敗
docker service create --replicas 5 --name hellos vector4wang/python-flask
很好理解docker service create
等價於 docker run
,replicas
就是部署幾個服務,等待部署成功,如下
uo3u4w6zxglgxjo1i7njxaqru
overall progress: 5 out of 5 tasks
1/5: running [==================================================>]
2/5: running [==================================================>]
3/5: running [==================================================>]
4/5: running [==================================================>]
5/5: running [==================================================>]
verify: Service converged
忘記做埠對映,我們做一下調整
docker service update --publish-add published=5000,target=5000 hellos
理解下。
通過執行docker service ps hellos
來檢視每個節點的服務數和執行情況,如下
我們可以看到剛剛的update就是把之前服務殺掉,然後重親啟動,兩個節點均有部署而且執行著該服務,我們可以隨便使用docker stop [container id]
來殺死一個服務,但是swarm會自動啟動一個。
測試
我們通過檢視日誌來測試請求是否會落在這五個節點上,我們請求主節點對應ip服務5次
docker service logs -f hellos
結果很巧,正好落在五個節點上如下
hellos.3.jvtq4su8blia@ubuntu-1 | 10.255.0.2 - - [20/Jan/2019 15:27:15] "GET / HTTP/1.1" 200 -
hellos.5.atflo3ownjb7@ubuntu-2 | 10.255.0.2 - - [20/Jan/2019 15:27:16] "GET / HTTP/1.1" 200 -
hellos.4.vyn5bpypjvm7@ubuntu-2 | 10.255.0.2 - - [20/Jan/2019 15:27:18] "GET / HTTP/1.1" 200 -
hellos.1.m67symamsj02@ubuntu-2 | 10.255.0.2 - - [20/Jan/2019 15:27:19] "GET / HTTP/1.1" 200 -
hellos.2.srhlzn6trgri@ubuntu-1 | 10.255.0.2 - - [20/Jan/2019 15:27:19] "GET / HTTP/1.1" 200 -
停止服務
我們在主機點使用下面命令和停止對應服務
docker service rm hellos
或
docker service scale hellos=0
通過swarm我們可以再多個節點很容易的去部署和簡單管理服務。
暫時的完結
最近也是公司準備用容器化來部署服務,所以我就把Docker以前沒有玩到的地方玩了下,到此,Docker的介紹、使用、編排、叢集化部署等就介紹完了,如果後期應用於工作上,可能會有更深入的見解與博文。希望大家持續關注哈~
學習Docker之Docker初體驗—SpringBoot整合Docker的部署、釋出與應用
學習Docker之Docker、容器和映象的簡介和常用命令
學習Docker之10張圖帶你深入理解Docker容器和映象
學習Docker之Dockerfile的命令
學習Docker之使用docker-compose編配一整套服務
學習Docker之使用Docker構建服務之部署和備份jekyll網站
學習Docker之使用Docker Swarm快速搭建與部署你的服務叢集
相關文章
- Docker Swarm 叢集搭建DockerSwarm
- Docker Swarm 叢集搭建教程DockerSwarm
- Docker swarm叢集搭建教程DockerSwarm
- Docker Swarm 叢集搭建實踐DockerSwarm
- 使用Docker Swarm搭建分散式爬蟲叢集DockerSwarm分散式爬蟲
- Terraform部署容器服務Swarm叢集及WordPress應用ORMSwarm
- Docker Swarm叢集初探DockerSwarm
- 用 Docker swarm 快速部署分散式圖資料庫 Nebula Graph 叢集DockerSwarm分散式資料庫
- 使用 Docker 快速搭建單機版的 Kubernetes 叢集Docker
- 用 Docker 快速搭建 Kafka 叢集DockerKafka
- 使用containerd搭建MinIO叢集服務AI
- 使用docker部署hadoop叢集DockerHadoop
- 基於Docker + Consul + Registrator的服務註冊與發現叢集搭建Docker
- 使用docker 搭建rabbitmq 叢集DockerMQ
- Swirl:Docker Swarm 叢集管理的新選擇DockerSwarm
- Kubernetes部署叢集Mysql服務MySql
- 使用 Ansible 快速部署 HBase 叢集
- 『中級篇』在docker-swarm叢集裡透過serivce部署worDockerSwarm
- swarm mode叢集搭建及簡單概念Swarm
- Elasticsearch使用系列-Docker搭建Elasticsearch叢集ElasticsearchDocker
- docker部署mysql叢集DockerMySql
- Docker部署ElasticSearch叢集DockerElasticsearch
- (精華)2020年10月3日 微服務 Docker-叢集(swarm)微服務DockerSwarm
- 在滴滴雲快速搭建自己的簡易服務叢集[入門版]
- RabbitMQ系列(五)使用Docker部署RabbitMQ叢集MQDocker
- docker搭建consul叢集Docker
- Docker 搭建叢集 MongoDBDockerMongoDB
- docker搭建mysql叢集DockerMySql
- Docker搭建ELK叢集Docker
- Docker搭建Redis叢集DockerRedis
- Docker Swarm + Harbor + Portainer 打造高可用,高伸縮,叢集自動化部署,更新。DockerSwarmAI
- 基於Docker快速搭建Gitlab與Gitlab CI/CD服務DockerGitlab
- 快速搭建Jenkins叢集Jenkins
- 使用 Kind 搭建你的本地 Kubernetes 叢集
- 使用 Docker 一步搞定 ZooKeeper 叢集的搭建Docker
- 【技術解析】如何用Docker實現SequoiaDB叢集的快速部署Docker
- 用Docker搭建RabbitMq的普通叢集和映象叢集DockerMQ
- 使用 TensorFlow Serving 和 Docker 快速部署機器學習服務Docker機器學習