# Docker部署SuccBI集群

SuccBI同样支持在Docker下部署集群,具体步骤如下:

# 初始化Docker集群

使当前Docker节点成为整个Docker集群服务的管理机,便于创建管理服务

运行如下命令:

docker swarm init

# 拉取镜像

拉取集群需要的镜像,参考拉取SuccBI镜像

docker pull registry.cn-hangzhou.aliyuncs.com/succbi/succbi:v4

docker pull registry.cn-hangzhou.aliyuncs.com/succbi/traefik:latest

# 创建集群通讯网络

集群节点间通讯需要处在同一网络下,我们选择使用Docker内置的Overlay网络来实现,Overlay用于连接不同机器上的Docker容器,允许容器间相互通信

创建Overlay网络并指定内部网段为10.10.10.0

docker network create --driver=overlay traefik-net --subnet=10.10.10.0/24

# 部署反向代理和负载均衡

集群需要配置反向代理和负载均衡,我们选择Traefik来实现,与Nginx相比,Traefik更适用于微服务化的场景,了解更多请访问官方手册 (opens new window)

# 创建Traefik配置文件

创建Traefik配置文件,路径为/docker/others/traefik/traefik.yml,内容如下:

api:
  insecure: true
  dashboard: true
providers:
  docker:
    watch: true
    swarmMode: true

# 创建Traefik服务

运行如下代码创建Traefik服务

docker service create --name traefik \
--constraint 'node.role == manager' \
--network traefik-net -p 8020:8080 -p 9988:80 \
--mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
--mount type=bind,src=/docker/others/traefik/traefik.yml,dst=/etc/traefik/traefik.yml \
--mode=global registry.cn-hangzhou.aliyuncs.com/succbi/traefik:latest \
--docker --docker.swarmMode --docker.watch --web --loglevel=DEBUG

提示

-p 9988:80:9988即为集群访问地址端口

# 部署SuccBI服务

创建SuccBI服务,并通过生成运行SuccBI服务副本的方式创建集群节点

# 创建挂载目录

参考创建挂载目录,在宿主机创建如下内容:

  • /docker/cluster4/clusters-share/
  • /docker/cluster4/conf/
  • /docker/cluster4/dockerenv.sh

提示

需要在dockerenv.sh配置export JAVA_OPTS="$JAVA_OPTS -Dsucc.clusterBindAddressPrefix=10.10.10"指定集群绑定地址前缀,与集群通讯网络一致

# 创建SuccBI服务

运行如下代码创建SuccBI服务

docker service create --name cluster4 \
--mount type=bind,src=/docker/cluster4/clusters-share,dst=/opt/workdir/clusters-share \
--mount type=bind,src=/docker/cluster4/conf,dst=/opt/workdir/conf \
--mount type=bind,src=/docker/cluster4/dockerenv.sh,dst=/opt/docker/dockerenv.sh \
--replicas 0 --network traefik-net -p 10001:8080 registry.cn-hangzhou.aliyuncs.com/succbi/succbi:v4

参数注释:

  • --name:服务名称为cluster4
  • --mount:将宿主机文件挂载到容器中,参考创建挂载目录
  • -replicas:运行该服务的副本数,即集群节点数量,先设置为0,服务配置完成后再生成副本
  • --network:网络设置,此处使用前面创建的Overlay网络
  • -p:将运行该服务的容器的8080端口映射到宿主机10001端口
  • succbi/succbi:容器运行所使用的镜像

# 对SuccBI服务配置Traefik

给已创建的SuccBI服务启用Treafik服务,并配置路径前缀、负载均衡、cookie会话保持

docker service update \
--label-add 'traefik.enable=true' \
--label-add 'traefik.docker.network=traefik-net' \
--label-add 'traefik.http.routers.my-container.rule=PathPrefix(`/`)' \
--label-add 'traefik.http.services.cluster4.loadBalancer.server.port=8080' \
--label-add 'traefik.http.services.cluster4.loadBalancer.sticky.cookie=true' \
--label-add 'traefik.http.services.cluster4.loadbalancer.server.scheme=http' \
--label-add 'traefik.http.services.cluster4.loadbalancer.healthcheck.interval=2s' \
--label-add 'traefik.http.services.cluster4.loadbalancer.healthcheck.timeout=3' \
--label-add 'traefik.http.services.cluster4.loadbalancer.healthcheck.path=/api/sys/server-info' \
cluster4

# 创建集群节点

运行如下命令修改cluster4的服务副本为2,即该集群节点数为2

docker service update --replicas 2 cluster4

运行后在服务列表可以看到cluster4的REPLICAS为2

docker service ls

服务列表

# 配置完成

完成以上步骤后,在正在运行的容器列表中可以看到运行cluster4服务的2个容器及运行Traefik的1个容器

docker ps

容器列表

至此,Docker下SuccBI集群部署已完成,访问http://宿主机ip:9988 即可进入SuccBI,访问http://宿主机ip:9988/syssettings/cluster进入集群监控界面,查看该集群运行状态。

# 常见问题

# 已创建的SuccBI服务如何升级镜像

运行如下命令后,cluster4服务会以最新的SuccBI镜像重新启动

docker service update --image registry.cn-hangzhou.aliyuncs.com/succbi/succbi:v4 cluster4
是否有帮助?
0条评论
评论