docker swarm部署dubbo集群(生产可用)

纯干货

废话不多说,直接实操,当初上生产也踩了不少坑

构建swarm

前提

开启TCP/UDP端口7946 用于容器网络发现
开启UDP端口4789 用于容器覆盖网络
开启TCP/UDP端口2377 用于swarm调度管理

或者关闭防火墙

温馨提示

主从服务器都需要开启端口。部分云厂商4789端口可能被屏蔽,可能会导致集群不同。端口可以自定义,我这边使用的是5789端口参考腾讯云

上代码

# 云主机看需求指定--advertise-addr,否则使用的是内网ip 
# --data-path-port如果需要自定义容器覆盖网络的端口,必须指定对应
docker swarm init --advertise-addr 192.168.1.10 --data-path-port 5789

# 创建一个swarm器群容器运行的网段
docker network create -d overlay --gateway 10.0.1.1 --subnet 10.0.1.0/24 --attachable mynet

# worker子节点加入管理节点manager
# 如果manager节点有指定--advertise-addr,则从节点加入时也必须指定,否则集群容器ip会ping不通
docker swarm join --token xxxx --advertise-addr 192.168.1.10:2377

环境compose.yml

我这边使用的nacos、seata、rabbitmq、redis、sentinel都是单节点,dubbo服务部署的是集群,mysql使用的云

先部署nacos相关,因为像seata、sentinel,我这边是有注册到nacos的,如果同时部署会导致失败进行重试。所以环境相关的分俩个compose文件部署before-docker-compose.yml、after-docker-compose.yml

before-docker-compose.yml

# before-docker-compose.yml
version: '3.3'

services:
  bld-redis:
    image: redis:6.2.6
    ports:
      - 6379:6379
    environment:
      TZ: Asia/Shanghai
      LANG: en_US.UTF-8
    volumes:
      - /opt/docker/env/redis/conf/redis.conf:/etc/redis.conf
      - /opt/docker/env/redis/data:/data
    command:
      # 运行自己的redis配置
      redis-server /etc/redis.conf
    networks:
      - mynet
    deploy:
      mode: global  #replicated
      placement:
        constraints: [node.role == manager]
      #replicas: 1


  bld-rabbitmq:
    # 这里是我自定义的延时插件镜像
    image: rabbitmq-delayed:3.10.6
    ports:
      - 5672:5672
      - 15672:15672
    networks:
      - mynet
    environment:
      TZ: Asia/Shanghai
      RABBITMQ_DEFAULT_USER: admin
      RABBITMQ_DEF
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值