问题描述

我在本地创建了3个装了centos7的虚拟机, 并初始化了swarm集群, 即1个manager节点, 2个worker节点; 三台机子的ip分别是 192.168.124.8 - (manager节点), 192.168.124.9 - (worker节点), 192.168.124.10 - (worker节点)

[root@localhost ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
j0f4up8v7epacp3vceby4exsz localhost.localdomain Ready Active 19.03.13
qeeqc10gl9e56w61pajjqle08 localhost.localdomain Ready Active 19.03.13
r5sg5m9dkwcu76t56hg0vu29t * localhost.localdomain Ready Active Leader 19.03.14

然后我通过下面的命令在swarm集群上起了一个服务

docker service create --name test-vote --replicas 2 --constraint node.role==worker --publish 8080:80  registry.cn-hangzhou.aliyuncs.com/anoy/vote

直接curl 工作者节点ip:端口 是可以拿到响应的, 但是返回的containerId一直不变, 并且如果直接访问manager节点的话是拿不到响应的, 似乎是负载均衡没有生效!

解决

经过一番搜索, 在stack overflow上找到了答案, https://stackoverflow.com/questions/48360577/docker-swarm-mode-routing-mesh-not-working

原来是防火墙的问题, 按照文档的说法, 要让 swarm mode routing mesh 生效的话, 在初始化swarm集群前必须开放7946tcp/udp端口, 4789udp端口, https://docs.docker.com/engine/swarm/ingress/

所以如果是centos可以用下面的脚本开放端口, swarm集群里的每个主机都需要开放, 图方便这两个端口的tcp和udp都开放了; 开放完端口后还需要重启一下机器

firewall-cmd --permanent --zone=public --add-port=4789/tcp && \
firewall-cmd --permanent --zone=public --add-port=7946/tcp && \
firewall-cmd --permanent --zone=public --add-port=4789/udp && \
firewall-cmd --permanent --zone=public --add-port=7946/udp && \
firewall-cmd --reload && \ # 重启
sudo reboot

最新文章

  1. MVC架构模式分析与设计(一)---简单的mvc架构
  2. MySQL数据库安装与配置详解
  3. 多线程引发OutOfMemoryException
  4. flex垂直居中
  5. App交互demo
  6. 使用IntersectionObserver更高效的监视某个页面元素是否进入了可见窗口
  7. WCF入门(三)---WCF与Web服务/Web Service
  8. configure: error: zlib library and headers are required
  9. poj 2486 Apple Tree(树形DP 状态方程有点难想)
  10. rjs 合并压缩完 js 后 js 不压缩的问题
  11. 【基础】在css中绘制三角形及相关应用
  12. Android简易实战教程--第三十九话《Chronometer实现倒计时》
  13. Floor报错原理分析
  14. select2 下拉无法显示
  15. 商品规格,自定义SKU类型
  16. 如何优雅的解决mac安装zsh不执行.bash_profile
  17. 651. 4 Keys Keyboard复制粘贴获得的最大长度
  18. Docker(二十一)-Docker Swarm集群部署
  19. UDP的socketasynceventargs
  20. [Python爬虫] 之二:Selenium 调用IEDriverServer打开IE浏览器安装配置

热门文章

  1. 1.jsp-out和response输出的区别
  2. CSS完成视差滚动效果
  3. Spring学习笔记(五):JDBCTemplate+事务管理
  4. 11. Grub 介绍
  5. Day14_80_反射机制+IO+Propreties动态创建对象
  6. IOS Widget(1):概述
  7. 基于MATLAB的手写公式识别(2)
  8. Msfvenonm生成一个后门木马
  9. PowerShell-4.API调用以及DLL调用
  10. Python数模笔记-NetworkX(3)条件最短路径