首先了解下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:8080http://192.168.1.102:8080http://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
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐