一、Eureka 三节点部署
1.1、服务节点结构
Eureka 服务节点
构建 Eureka 高可用集群
节点域名 | 节点端口 |
---|---|
peer1 | 8761 |
peer2 | 8762 |
peer3 | 8763 |
Eureka Client 节点
注册到 Eureka 中,进行测试
节点ip | 节点端口 |
---|---|
192.168.2.154 | 9527 |
1.2、Eureka Server 配置文件
项目结构
Eureka Server 节点一配置
Eureka Server 节点二配置
Eureka Server 节点三配置
1.3、Eureka Client 节点配置
二、Docker 部署 Eureka 三节点高可用集群
code.zip
docker-compose.zip
Java运行环境镜像制作(TODO 修改)
集群节点
节点 Docker IP | 节点 Docker 端口 | 宿主机映射端口 |
---|---|---|
172.08.0.11 | 8761 | 8761 |
172.08.0.12 | 8761 | 8762 |
172.08.0.13 | 8761 | 8763 |
目录结构
docker-compose.yml 文件部分内容
启动时某一节点效果
三、问题汇总
3.1、集群无法构建的原因
问题如下,即使构建了集群配置,仍然无法串联起
导致该问题的因素
在同一台主机上部署三台 Eureka Server 服务,且未使用 Docker 进行部署,同时 Eureka Server 配置中的参数配置了同一个配置,如下
eureka.instance.hostname=${spring.cloud.client.ip-address}
在eureka集群配置的过程中,如果是在同一主机上配置多个节点,则各节点的 eureka.instance.hostname
(实例的主机名)不能一样,否则在各节点相互注册的过程中会产生报错。
同一台主机 ${spring.cloud.client.ip-address}
获取到的ip 是一样的,所以无法构建集群
解决方案
- 一、通过 Docker 的方式构建集群,使得
${spring.cloud.client.ip-address}
获取到的值不同 - 二、通过域名配置的方式替代 ,如:
eureka.instance.hostname=peer1(or peer2 ,peer3 ....)