swarm mode集群搭建及简单概念
1.环境搭建准备三台虚拟机,当然有实体机更好,我这里是:192.168.1.101ubuntu01192.168.1.102ubuntu02192.168.1.103ubuntu03分别安装docker在101机器上执行docker swarm init --advertise-addr 192.168.1.101该命令执行后会弹出加入该管理节点的命令...
首先了解下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
更多推荐
所有评论(0)