[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--2hvx4y34iizsl7nineenmv9zqaqh954mgcgus1leu8125dgppo-agpddu8kx7k1anyxnjx47vhfr \
192.168.43.130: 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--2hvx4y34iizsl7nineenmv9zqaqh954mgcgus1leu8125dgppo-agpddu8kx7k1anyxnjx47vhfr \
192.168.43.130:
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 -p : --name nginx nginx:1.13.-alpine
107y9n9ikbuzj1mo5lzrv6ljw
[root@krdevd ~]# docker service ls
ID NAME MODE REPLICAS IMAGE
107y9n9ikbuz nginx replicated / nginx:1.13.-alpine