使用docker stack部署微服务遇到的坑

  1. WARNING: IPv4 forwarding is disabled. Networking will not work.
    在使用docker stack构建启动微服务的时候,所有的从节点机器项目全部启动失败,错误信息是服务无法注册到远程的nacos服务器上,但是我单独在
    从节点上又可以ping通远程的nacos,搞得一脸蒙蔽,又把问题归结到是不是docker swarm集群的问题,创建的容器是不是连接不到远程的nacos,但是
    主节点上的服务又可以,没办法最后把服务单独拿到其中一个从节点上启动,最后看到这个WARNING: IPv4 forwarding is disabled. Networking will not work.
    报错。
    解决方法:
         a: vi /etc/sysctl.conf
         b: net.ipv4.ip_forward=1  #添加这段代码
         c: #重启network服务
             systemctl restart network && systemctl restart docker
  2. 服务启动都正常,但是网关无法将请求路由到指定的服务,不使用网关单独访问子服务都是ok的

    原因就是我们在docker-compose.yml中定义swarm服务发现的模式问题:
    我们在定义网关的时候使用的是deploy.endpoint_mode=vip,这个是没问题的 ,但是在定义网关后面的
    子服务的时候就需要使用deploy.endpoint_mode=dnsrr这个模式了,因为我们是个集群,每个子服务存在
    好几个副本,在网关路由的时候是通过服务名称去发现子服务的,而vip是通过ip地址发现的,所以需要使用dnsrr模式
  3. InvalidArgument desc = EndpointSpec: port published with ingress mode can't be used with dnsrr mode
    在服务使用deploy.endpoint_mode=dnsrr模式后不能使用如下方式暴露端口:

    需要这样定义:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值