* 将实验 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/`,发现两个页面信息一致。

到这里,我们的 Eureka Server 集群就启动好了。
- 微服务开发框架 SpringCloud
- 单体应用
- 如何解决单体应用架构中存在的问题
- 如何实现微服务架构以及技术选型
- Spring Cloud 特点
- 开始使用 Spring Cloud 实战微服务
- 快速搭建开发脚手架
- 编写服务提供者-用户微服务
- 编写服务消费者【电影微服务】
- 整合 Spring Boot Actuator
- 开始整合
- 微服务注册与发现
- 编写服务发现服务
- 注册微服务至 Eureka Server
- 更新服务提供者 (用户微服务)
- 更新服务消费者 (电影微服务)
- 查看注册结果
- Ribbon 客户端负载均衡
- Ribbon 简介
- 引入 Ribbon
- Ribbon 入门
- Feign 声明式 REST 调用
- 改造项目
- Hystrix 容错处理
- 实现容错的手段
- Hystrix 简介
- 开始使用
- 测试
- Zuul 网关
- 网关是什么
- Spring Cloud Zuul 介绍
- Zuul 入门使用
- 网关测试
- Spring Cloud Config 配置管理
- 配置中心的作用
- Spring Cloud Config 简介
- Spring Cloud Config 使用
- Sleuth 与 Zipkin 结合图形化展示
- 分布式追踪相关基础概念
- Spring Cloud Sleuth 介绍及使用
- Zipin 简介
- Docker 入门
- 云原生概念
- Docker 容器介绍
- Docker 常用命令
- 微服务运行在 Docker 之上
- Dockerfile 及其常见指令介绍
- 改造 Eureka Server 微服务
- Docker Compose 编排微服务
- 安装 Compose
- Compose 快速入门
- Compose 编排 SpringCloud微服务
- 将 Eureka 等微服务运行在 Docker 容器中
- Docker-Compose 编排文件的编写
- 通过 Docker Compose 启动、停止
- Compose编排Spring Cloud微服务2
- Docker-Compose 来部署一个双节点的 Eureka 集群
