swarm mode叢集搭建及簡單概念
首先了解下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:8080,http://192.168.1.102:8080,http://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
相關文章
- swarm mode叢集之service分組Swarm
- Docker Swarm 叢集搭建DockerSwarm
- Docker swarm叢集搭建教程DockerSwarm
- Docker Swarm 叢集搭建教程DockerSwarm
- Docker Swarm 叢集搭建實踐DockerSwarm
- Docker Swarm Mode簡介DockerSwarm
- Hadoop HA叢集簡單搭建Hadoop
- Redis叢集搭建與簡單使用Redis
- 使用Docker Swarm搭建分散式爬蟲叢集DockerSwarm分散式爬蟲
- Docker Swarm叢集初探DockerSwarm
- Docker Swarm modeDockerSwarm
- zookeeper叢集及kafka叢集搭建Kafka
- 095、如何建立Swarm叢集?(Swarm02)Swarm
- Windows 10環境簡單搭建ELK叢集Windows
- Terraform部署容器服務Swarm叢集及WordPress應用ORMSwarm
- 使用Docker Swarm快速搭建與部署你的服務叢集DockerSwarm
- 簡單的方式搭建k8s叢集K8S
- Zookeeper簡介與叢集搭建
- [第十五篇]——Swarm 叢集管理Swarm
- Zookeeper叢集搭建和簡介(二)
- Docker 容器搭建及 Redis 叢集原理DockerRedis
- MySQL MGR 叢集搭建(單主模式)MySql模式
- 搭建zookeeper叢集(偽叢集)
- 叢集搭建完成簡要測試叢集(效能)頻寬與IOPS
- Swirl:Docker Swarm 叢集管理的新選擇DockerSwarm
- Cassandra安裝及分散式叢集搭建分散式
- Kafka叢集搭建及必知必會Kafka
- Jedis操作單節點redis,叢集及redisTemplate操作redis叢集(一)Redis
- hadoop叢集搭建及程式設計實踐Hadoop程式設計
- Redis操作及叢集搭建以及高可用配置Redis
- linux下搭建ZooKeeper叢集(偽叢集)Linux
- Redis系列:搭建Redis叢集(叢集模式)Redis模式
- 搭建ELK叢集
- Ambari叢集搭建
- kafka叢集搭建Kafka
- Hadoop搭建叢集Hadoop
- zookeeper 叢集搭建
- 搭建 Redis 叢集Redis