在2台服务器上部署,最终实现效果:
2台eureka互相注册,1台挂掉后另一台继续工作,且服务提供正常
放上配置:
eureka的yml配置
client的yml配置
其中${ADDITIONAL_EUREKA_SERVER_LIST},${EUREKA_SERVER_ADDRESS}均为启动docker service时传入
踩过的坑:
不知道为啥,我按照网上教程,用编排文件单机部署没有问题,集群部署非常不稳定,从机的服务可以连上一会,过会就和eureka断开连接了,
不知道是不是swarm的bug
所以改用命令行手敲了
#先在主机创建一个overlay类型的网络,注意要设置子网(--subnet),虽然不设置docker会帮你自动设置,不过有bug
docker network create --driver overlay --subnet 192.168.0.0/16 springcloud-overlay
#在第一台主机启动eureka
docker service create --replicas 1 --name eureka1 --constraint node.hostname==iZbp13yffzt24v6we8mg9kZ --publish 1025:1025/tcp --network=springcloud-overlay -e "ADDITIONAL_EUREKA_SERVER_LIST=http://eureka2:1025/eureka/" registry.cn-hangzhou.aliyuncs.com/xxxx/eureka:latest
#在第二台主机启动eureka
docker service create --replicas 1 --name eureka2 --constraint node.hostname==iZbp13yffzt24v6we8mg9jZ --publish 1026:1025/tcp --network=springcloud-overlay -e "ADDITIONAL_EUREKA_SERVER_LIST=http://eureka1:1025/eureka/" registry.cn-hangzhou.aliyuncs.com/xxxx/eureka:latest
client启动
docker service create --replicas 1 -e "EUREKA_SERVER_ADDRESS=http://eureka1:1025/eureka/,http://eureka2:1025/eureka" --name config --network=springcloud-overlay registry.cn-hangzhou.aliyuncs.com/xxxx/config:latest
参数说明
-replicas 副本数量
--name 服务名
在overlay网络中,可以直接根据服务名找到对应容器,不用配置host文件
--constraint 约束条件
node.hostname 在某台主机上部署
-e 启动时传入环境变量
--network 部署的网络













网友评论