# 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