Eureka集群介绍
在一个分布式系统中,服务注册中心是最重要的基础部分,
理应随时处于可以提供服务的状态。为了维持其可用性,使用集群是很好的解决方案。
Eureka通过互相注册的方式来实现高可用的部署,所以我们只需要将Eureke Server配置其他可用的serviceUrl就能实现高可用部署。
开发环境
- JDK:1.8
- SpringBoot:2.1.16.RELEASE
- SpringCloud:Greenwich.RELEASE
项目结构
- halo-cloud-parent 父工程
- halo-cloud-server:9090(默认) 注册中心
- halo-cloud-provider:7070 服务提供者
- halo-cloud-consumer:8080 服务消费者
修改hosts 文件
C:\Windows\System32\drivers\etc
127.0.0.1 cloud9091.com
127.0.0.1 cloud9092.com
127.0.0.1 cloud9093.com
halo-cloud-parent
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!--web依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-commons</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<!--引入springcloud依赖的-->
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
halo-cloud-server
<parent>
<groupId>com.cloud</groupId>
<artifactId>parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<!--eureka server 依赖座标-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
@EnableEurekaServer
@SpringBootApplication
public class ServerApplication {
public static void main(String[] args) {
SpringApplication.run(ServerApplication.class, args);
}
}
采用不同的配置文件启动三个不同的注册中心服务
- application-peer1.yml
server: # 服务端口
port: 9090
spring:
application: # 应用名字,eureka 会根据它作为服务id
name: cloud9090Server
# eureka配置
eureka:
instance:
hostname: cloud9090.com
client:
register-with-eureka: false # 不向eureka server 注册自己
fetch-registry: false # 不向eureka server 获取服务列表
service-url: # eureka server 的地址
# 单机情况 http://${eureka.instance.hostname}:${server.port}/eureka
# 集群 http://cloud9091.com/eureka
defaultZone: http://cloud9091.com:9091/eureka/,http://cloud9092.com:9092/eureka/
- application-peer2.yml
server: # 服务端口
port: 9091
spring:
application: # 应用名字,eureka 会根据它作为服务id
name: cloud9091Server
# eureka配置
eureka:
instance:
hostname: cloud9091.com
client:
register-with-eureka: false # 不向eureka server 注册自己
fetch-registry: false # 服务发现 不向eureka server 获取服务列表 表示自己端就是注册中心 我的职责就是维护服务实例 false 自己不获取注册信息
service-url: # eureka server 的地址
# 单机情况 http://${eureka.instance.hostname}:${server.port}/eureka
# 集群 http://cloud9090.com/eureka
defaultZone: http://cloud9090.com:9090/eureka/,http://cloud9092.com:9092/eureka/
- application-peer3.yml
server: # 服务端口
port: 9092
spring:
application: # 应用名字,eureka 会根据它作为服务id
name: cloud9092Server
# eureka配置
eureka:
instance:
hostname: cloud9092.com
client:
register-with-eureka: false # 不向eureka server 注册自己
fetch-registry: false # 服务发现 不向eureka server 获取服务列表 表示自己端就是注册中心 我的职责就是维护服务实例 false 自己不获取注册信息
service-url: # eureka server 的地址
# 单机情况 http://${eureka.instance.hostname}:${server.port}/eureka
# 集群 http://cloud9090.com/eureka
defaultZone: http://cloud9090.com:9090/eureka/,http://cloud9091.com:9091/eureka/
分别启动三个注册中心服务
剩下两个跟这个配置一样
测试
-
localhost:9090
-
localhost:9091
-
localhost:9092