Swarm介绍:
Swarm 是 Docker 官方提供的一款集群管理工具,其主要作用是把若干台 Docker 主机抽象为一个整体,并且通过一个入口统一管理这些 Docker 主机上的各种 Docker 资源。
Docker Swarm 包含两方面:一个企业级的 Docker 安全集群,以及一个微服务应用编排引擎。
Swarm 和 Kubernetes 比较类似,但是更加轻,具有的功能也较 kubernetes 更少一些。好在swarm已经被docker集成,安装docker时会自动附带swarm,使得其配置变得相当简单。两条指令便可以将集群创建出来。
文章目录
swam集群搭建:
swarm已经集成到了docker中,不需要额外下载软件包。只需要各个节点提前装好docker即可。
下面是我的docker版本。
节点服务器:
server1 | 管理节点【manager】:172.25.12.1 |
---|---|
server2 | work节点:172.25.12.2 |
server3 | work节点 :172.25.12.3 |
管理节点server1:
docker swarm init #初始化
工作节点server2和server3:
根据提示运行指令:docker swarm join --token SWMTKN-1-3trxa0o9plhvc2pakfas7ksvzi0bbrvh80cyifx0igctxtxewc-02uk1cr5jt458ipx91ybb0jqh 172.25.12.1:2377
swarm集群通过以上两条指令就搭建完成了,虽然还没有为其添加功能、服务、监控等,但是集群已经出来了。
下面我们使用nginx服务,做一个nginx集群,实现负载均衡和高可用。
1.创建nginx集群
docker service create --replicas 3 --name web -p 80:80 nginx:latest
#replicas指定创建的服务个数,-p端口映射
2.写入各个nginx节点上的默认发布文件
echo server2.2 > index.html
#将server2.2输入到index.html文件中 #这里默认发布文件中写入一个能辨别是哪台主机那个容器的内容即可
docker cp index.html 74bed491cd22:/usr/share/nginx/html
#复制Index.html文件到该ID容器的/usr/share/nginx/htnl目录中
3.访问测试:轮询得到各个节点资源
for i in {1..10};do curl http://172.25.12.1; done
#shell循环,访问10次,我是在172.25.12.1这个ip的主机上拉起的集群
4.弹性伸缩【集群数量的扩展或缩减】
docker service scale web=5
#扩展到5个nginx服务
这里要注意,正常情况docker swam集群分配服务会运行在哪台主机上时,是根据主机的使用情况,是否可运行容器,等多方面考评的。通常结果和均衡分配差不多。这里我的server1可能是使用cpu以及内存等占用较大,评比后容器就没有在server1上建立,而是被分配到了其他节点。
!!我查看过了,火墙没有问题,都是关闭的,连接良好,docker node ls查看状态也都正常,所以应该是系统资源使用情况不平衡导致的重新分配。
5.添加visualizer监控
首先需要导入visualizer镜像
运行监控服务的容器:
docker service create --name=viz --publish=8080:8080/tcp --constraint=node.role==manager --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock dockersamples/visualizer
网页浏览:
之后就可以通过页面图形方式达到监控的目的了。
大大的小小阳