docker stack deploy多服务集群堆栈搭建详细指南
本文详细解释了使用docker搭建stack集群步骤,节点可伸缩,自动路由负载,高可用docker集群搭建
1、环境
docker安装、机器4台、网络之间能联通
重要的事情说三遍
云服务器防火墙要提前打通
- 检查云平台安全组(如果是云服务器)
| 端口 | 协议 | 用途 | 方向 |
| 4789 | UDP |VXLAN|(Overlay 网络)|入站 & 出站
| 7946 | TCP |Swarm 节点发现|入站 & 出站
| 7946 |UDP|Swarm 节点发现|入站 & 出站
|2377 | TCP | Swarm 管理端口|入站 & 出站
四个端口 两个协议必须开通 否则节点之间内部无法连通
不能自动路由负载问题排查了一天,血泪教训!!!
修改机器名字,加入集群后标识节点名
修改主机名:
sudo hostnamectl set-hostname <新主机名>
重启docker生效
2、创建集群
2.1 说到集群,就不得不说容器间的连通网络
bridge网络模式
在单个宿主机内部,bridge网络提供了一个网桥,使得所有容器通过veth-pair技术连接到网桥,通过网桥彼此之间通信,容器之间并不能直接通信
overlay网络模式(包括 ingress 、 docker_gwbridge)
那么我们在多个宿主机之间搭建集群,bridge显然不能支持跨机器互通网络,overlay网络使用VXLAN技术封装原始数据包通过4789端口UDP协议负责分发,各节点间路由复杂由gossip协议寻找服务路由节点,使用7946端口( 通过 gossip 协议在节点间传播路由信息, 每个节点维护路由表,知道如何到达其他节点上的容器)
ingress (暴漏端口时默认使用,无需显示指定)
Ingress 网络是 Docker Swarm 自动创建的一种特殊 Overlay 网络,专门用于处理从集群外部到服务的入口流量,当服务发布端口时(如 -p 8080:80),Swarm 会在所有节点上监听 8080 端口,流量到达任何节点的 8080 端口后,会被路由到服务任务(容器),使用路由网格(Routing Mesh)技术实现流量的智能路由。
docker_gwbridge 网络
一种特殊的桥接网络,用于连接 Overlay 网络和主机网络。提供容器到外部网络的连接,处理 Overlay 网络的出口流量,默认创建但可自定义
在任意一台机器创建集群
IP用内网ip 容器之间访问更快 初始化一个节点 即为manager 端口默认2377
docker swarm init --advertise-addr=106.52.182.178
[root@VM-8-10-centos docker