分享:docker swarm集群搭建
2018-03-30 16:38 墨叶凌枫 阅读(307) 评论(0) 编辑 收藏 举报[Y_H]实践原创
三台虚拟机:1台centOS , 2台ubuntu。
网上有用docker-machine创建虚拟机做的例子。
这里直接用VMware创建这三台虚拟机,然后用xshell连接三台虚拟机。作为理解之后的例子实践。
坑:
1.利用镜像swarm,搭建swarm集群,创立了连接,但是节点不能识别,报错较多,且不易解决。
2.在建立好manager管理节点后,其他机器在执行docker swarm join命令时会报错:
Error response from daemon: rpc error: code = Unavailable desc = grpc: the connection is unavailable,
这个错误的原因是manager上的节点的防火墙处于打开状态,这个连接的端口其他机器无法访问。
1.创建swarm集群,manager(centOS)上执行操作如下:
[root@krdevd ~]# docker swarm init --advertise-addr 192.168.43.130:2377 Swarm initialized: current node (i4msay5uw65sl7v0vkrvkh2kz) is now a manager.
显示类似下面的内容:
To add a worker to this swarm, run the following command: docker swarm join \ --token SWMTKN-1-2hvx4y34iizsl7nineenmv9zqaqh954mgcgus1leu8125dgppo-agpddu8kx7k1anyxnjx47vhfr \ 192.168.43.130:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
2.关闭manager(centOS)上的防火墙(应对坑2):
[root@krdevd ~]# firewall-cmd --state running [root@krdevd ~]# systemctl stop firewalld.service [root@krdevd ~]# firewall-cmd --state not running
3.将另外两台ubuntu机器加入集群:
加入worker1:
root@ubuntu:~# docker swarm join \ --token SWMTKN-1-2hvx4y34iizsl7nineenmv9zqaqh954mgcgus1leu8125dgppo-agpddu8kx7k1anyxnjx47vhfr \ 192.168.43.130:2377 This node joined a swarm as a worker.
同样的操作在另一台ubuntu上执行该命令。加入worker2.
4.查看docker node运行情况
[root@krdevd ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS i4msay5uw65sl7v0vkrvkh2kz * krdevd Ready Active Leader jxktyger0gylzeytub81cb4ay ubuntu Ready Active znyj4k5kfjs562nd6x7ho7ji7 ubuntu Ready Active
5.开启nginx服务测试集群,可以在三台虚拟机的80端口访问nginx的起始页。
[root@krdevd ~]# docker service create --replicas 3 -p 80:80 --name nginx nginx:1.13.7-alpine 107y9n9ikbuzj1mo5lzrv6ljw [root@krdevd ~]# docker service ls ID NAME MODE REPLICAS IMAGE 107y9n9ikbuz nginx replicated 3/3 nginx:1.13.7-alpine