基于Eureka Server实现服务注册高可用
概述
基于Eureka Server实现服务注册这篇文章中讲解了Eureka Server
单机环境的搭建。
这篇文章将讲述如何实现Eureka Server
高可用
实现步骤分析
引入Eureka Server依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
创建application.yml文件
spring:
application:
name: eureka-server-peer
eureka:
client:
register-with-eureka: false # 表示不向注册中心注册
fetch-registry: false # 由于注册中心的职责就是维护服务实例,所以它不需要去检索服务
---
spring:
profiles: peer1
server:
port: 8761
eureka:
instance:
hostname: peer1
client:
service-url:
defaultZone: http://peer2:8762/eureka/
---
spring:
profiles: peer2
server:
port: 8762
eureka:
instance:
hostname: peer2
client:
service-url:
defaultZone: http://peer1:8761/eureka/
注意:这个配置分为三部分,每一部分通过---
来分割。
第一部分配置了Eureka Server
高可用配置的公共部分,例如:应用名称、禁止把自身当做服务来注册
第二部分是peer1
节点的配置,第三部分是peer2
节点的配置。
由于当前是在一台主机上模拟Eureka Server
高可用,所以peer1
和peer2
两个主机需要提前在hosts
文件中注册一下。
注册方式:使用vim
编辑本机hosts
文件($ sudo vim /etc/hosts),并在其中添加127.0.0.1 peer1 peer2
主机映射
register-with-eureka: false
和fetch-registry: false
这两个属性是需要配置一下的,如果不配置将会出现问题(问题详情:https://blog.csdn.net/mynameissls/article/details/81157033)。
创建Eureka Server启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) throws Exception {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
启动Eureka Server
启动peer1
节点:java -jar springcloud-eureka-server-peer-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
启动peer2
节点:java -jar springcloud-eureka-server-peer-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
启动成功后,可以在浏览器中分别访问http://peer1:8761/和http://peer2:8762/来查看Eureka Server
高可用服务注册
如下图:
http://peer1:8761/
源代码链接:
https://github.com/myNameIssls/springcloud-study/tree/master/springcloud-eureka-server-peer