一、Eureka 三节点部署

1.1、服务节点结构

Eureka 服务节点

构建 Eureka 高可用集群

节点域名 节点端口
peer1 8761
peer2 8762
peer3 8763

Eureka Client 节点

注册到 Eureka 中,进行测试

节点ip 节点端口
192.168.2.154 9527

1.2、Eureka Server 配置文件

项目结构

00.png

Eureka Server 节点一配置

01.png

Eureka Server 节点二配置

02.png

Eureka Server 节点三配置

03.png

1.3、Eureka Client 节点配置

04.png

二、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

目录结构

06.png

docker-compose.yml 文件部分内容

07.png

启动时某一节点效果

08.png

三、问题汇总

3.1、集群无法构建的原因

问题如下,即使构建了集群配置,仍然无法串联起

05.png

导致该问题的因素

在同一台主机上部署三台 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 ....)