话不多说,首先咋们来说一下为什么要使用Docker Swarm。
现在一般大公司都是使用k8s,这玩意儿是真的好用,但是学习成本太高,动不动就需要2c4g的服务器2台及以上,一般都是舍不得花费这么多钱的(至少我舍不得)。
然后一般小作坊都是使用单机,通过shell脚本部署jar文件,这样对于微服务架构来说,重复操作的步骤太多了,非常的费时费力。
所以我们可以使用Docker Swarm来解决这个事情,Docker Swarm是什么呢?
Docker Swarm是管理跨节点容器的编排工具,相较于Docker Compose而言,Compose只能编排单节点上的容器,Swarm将一群Docker节点虚拟化为一个主机,使得用户只要在单一主机上操作就能完成对整个容器集群的管理工作。如果下载的是最新版的Docker,那么Swarm就已经被包含在内了,无需再安装。
Docker Swarm架构包含两种角色,manager和node,前者是Swarm Daemon工作的节点,包含了调度器、路由、服务发现等功能,负责接收客户端的集群管理请求,然后调度Node进行具体的容器工作,比如容器的创建、扩容与销毁等。 manager本身也是一个node。
介绍完了,直接开干,部署集群。
首先我们准备两台机器
ip1:192.168.0.4
ip1:192.168.0.5
开放防火墙端口(集群需要)
2377:用于集群管理通信的TCP端口
7946:TCP和UDP的端口,用于节点间通信
4789:UDP端口,用于覆盖网络流量。
我们首先在ip1的机器上面执行初始化操作。
docker swarm init --advertise-addr 192.168.0.4
执行完成过后我们执行
docker node ls
出现上述图片就说明集群初始化完毕。
现在开始添加集群节点
我们可以使用以下命令获取加入集群的命令
增加一个工作节点:docker swarm join-token worker
增加一个管理节点:docker swarm join-token manager
注意:这里如果是云服务器,请注意内网ip和公网ip。
如果都在同一个内网,直接直接使用join-token后提示的命令就行。
但是如果他们内网不互通。就可以稍微改造一下。
docker swarm join --advertise-addr 本机公网ip --token xxxxxx 管理节点公网ip:2377
当执行完以上命令时,我们可以在管理节点上面再次执行
docker node ls
当出现以上图片就说明集群完毕了,可以开心的部署应用了。