http://ask.loongnix.org/?/article/91
本教程将指导完成如下工作:
- 初始化一个Docker swarm集群;
- 添加节点到swarm;
- 部署swarm服务;
- 管理swarm。
准备工作:
- 三台Linux系统的主机(可以是物理机、虚拟机或者docker容器,本文选择了三台龙芯3A3000+Loongnix(Fedora21-20170927));
- 每台主机安装Docker Engine且版本为1.12及以上;
- 其中一台主机作为管理节点,需知道其IP地址;
- 主机彼此之间开放下面几个端口:
- TCP 端口2377用于集群管理通信,
- TCP/UDP端口7946用于节点间通信,
- UDP端口4789用于overlay网络通信。
默认情况这些端口都是开放的,如果不确定可以执行下面的命令打开这3个端
iptables -A INPUT -p tcp --dport 2377 -j ACCEPTiptables -A INPUT -p tcp --dport 7946 -j ACCEPTiptables -A INPUT -p udp --dport 7946 -j ACCEPTiptables -A INPUT -p udp --dport 4789 -j ACCEPT
初始化一个Docker swarm集群首先确认各主机的Docker deamon已经启动:
如果服务状态不是active(running),执行命令service docker start来启动Docker deamon。接下来就可以正式开始了。1.选择一台主机作为管理节点(manager1),获取到主机IP为10.20.42.45。终端输入命令docker swarm init 初始化swarm。
[root@worker1 ~]# docker swarm init --advertise-addr 10.20.42.45Swarm initialized: current node (892ozqeoeh6fugx5iao3luduk) is now a manager. To add a worker to this swarm, run the following command: docker swarm join \ --token SWMTKN-1-5vs5ndm8k5idcxeckprr61kg6a7h90dp3uihdhr3kwl1ejwtwg-58jqj86p1nqfh225t51p5h8lp \ 10.20.42.45:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
--advertise-addr 配置管理节点的广播地址为10.20.42.45,其他的节点要想加入集群需要能够访问该地址。输出信息显示了其他节点分别作为管理节点和工作节点加入该集群的方法。2.输入命令docker info查看当前状态的swarm信息,截取部分关键信息如下:
[root@worker1 ~]# docker infoContainers: 10 Running: 0 Paused: 0 Stopped: 10Images: 22Server Version: 1.12.2... ...Swarm: active NodeID: 250tj9l3mnrrtprdd0990b2t3 Is Manager: true ClusterID: atrevada8k0amn83zdiig6qkb Managers: 1 Nodes: 1 Orchestration: Task History Retention Limit: 5... ...
3.输入命令docker node ls查看节点信息:
[root@localhost loongson]# docker node lsID HOSTNAME STATUS AVAILABILITY MANAGER STATUS250tj9l3mnrrtprdd0990b2t3 * manager1 Ready Active Leader
*表示你连接到的节点ID。添加两个节点到swarm另外选择一台主机作为工作节点(worker1),第三台主机也作为工作节点(worker2)。1.worker1上打开终端。上文我们在创建swarm时,输出提示信息展示了如何作为工作节点加入swarm:
[root@worker1 ~]# docker swarm join /--token SWMTKN-1-5vs5ndm8k5idcxeckprr61kg6a7h90dp3uihdhr3kwl1ejwtwg-58jqj86p1nqfh225t51p5h8lp /10.20.42.45:2377This node joined a swarm as a worker.
如果你丢失了上面命令的信息,可以在manager1上执行docker swarm join-token worker重新获取。2.worker2上重复worker1的步骤,作为工作节点加入swarm。3.回到管理节点mgnager1,输入命令docker node ls查看swarm内所有节点状态:
[root@manager1 ~]# docker node lsID HOSTNAME STATUS AVAILABILITY MANAGER STATUS250tj9l3mnrrtprdd0990b2t3 * manager1 Ready Active Leadera24i9nu2943niy8eq239bbpwv worker1 Ready Active e0lh6c2zb57qg8db7usvg17r6 worker2 Ready Active
*显示本机连接到的节点,MANAGERSTATUS一栏为Leader表示该节点为管理节点,空表示为工作节点。 部署一个服务到swarm为了更直观的观察集群的服务编排,我们在管理节点启动portainer,其中swarm visualizer模块能直观地看到每个节点的服务详情。portainer 下载:
[root@manager1 ~]# docker pull jiangxinshang/portainer
启动portainer(9000端口不要被其他应用占用):
[root@manager1 ~]# docker run -t -i -p 9000:9000