企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
* 将实验 14 中所使用的 Eureka-Server 项目拷贝过来: ~~~bash wget https://labfile.oss.aliyuncs.com/courses/1360/microservice-eureka-server-14.zip unzip microservice-eureka-server-14.zip cd microservice-eureka-server ~~~ Eureka Server 同时也是 Eureka Client。多个 Eureka Server 实例,互相之间通过增量复制的方式,来实现服务注册表中数据的同步。因此,我们需要在 /src/main/resources 目录下找到并修改`application.yml`来添加配置,让不同 Eureka 节点都互相知道对方。 ~~~yaml spring: application: name: microservice-eureka-server-ha --- spring: profiles: peer1 # 指定profile=peer1 server: port: 8761 eureka: instance: hostname: peer1 client: serviceUrl: defaultZone: ${EUREKA_URL:http://peer2:8761/eureka/} # 将自己注册到peer2这个Eureka上面去 --- spring: profiles: peer2 server: port: 8762 eureka: instance: hostname: peer2 client: serviceUrl: defaultZone: ${EUREKA_URL:http://peer1:8761/eureka/} ~~~ 从上面的配置可以看出,部署不同的节点则是使用不同的`profiles`,比如`peer1`、`peer2`。 * 构建 Eureka 镜像 ~~~bash mvn clean package -DskipTests && mvn dockerfile:build ~~~ * 接着我们在根目录开始编写`docker-compose.yml`文件: ~~~yml version: '3.3' services: peer1: image: microservice-eureka-server:0.0.1-SNAPSHOT container_name: eureka-server-peer1 restart: always hostname: peer1 ports: - 8761:8761 environment: spring.profiles.active: peer1 EUREKA_URL: http://peer2:8762/eureka peer2: image: microservice-eureka-server:0.0.1-SNAPSHOT container_name: eureka-server-peer2 hostname: peer2 restart: always ports: - 8762:8762 environment: spring.profiles.active: peer2 EUREKA_URL: http://peer1:8761/eureka ~~~ 在上面编排中,`peer1`服务使用了`peer1`的 profiles 配置,Eureka 注册地址为 peer2 的 Eureka Server。`peer2`服务则相反。这样,两个 Eurek Server 就形成了一个集群,他们之间会同步服务列表信息。 * 我们来启动这两个节点:,`docker-compose up`,发现如下输出信息: ~~~bash Starting eureka-server-peer1 ... done Creating eureka-server-peer2 ... done Attaching to eureka-server-peer2, eureka-server-peer1 .... ~~~ 带两个实例启动完毕后,用浏览器访问:`http://localhost:8761/`和`http://localhost:8762/`,发现两个页面信息一致。 ![](https://img.kancloud.cn/d7/d1/d7d15d15d44627a452ca693d54a2c34b_2716x1254.png) 到这里,我们的 Eureka Server 集群就启动好了。