Eureka是SpringCloud应用中的注册中心,用来提供服务注册与发现功能。在实际生产活动中,如果单机部署的Eureka服务发生宕机,虽然已注册到Eureka的微服务可以被其客户端记录并保留,但无法再提供故障节点的剔除与新服务节点的发现功能。
Eureka集群则可以创建多个Eureka应用,互相之间同步客户端注册信息,又可以独立提供服务发现与注册服务。
其实Eureka本身就是为集群部署而设计的,所以部署Eureka集群需要修改的配置项并不多。
首先我们搭建Eureka服务,使用Maven下载依赖:
<artifactId>eureka</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
编写启动类Application.java
@EnableEurekaServer
@SpringCloudApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
调整配置文件application.yml
server.port: 8761
spring.application.name: eureka
eureka:
server.enable-self-preservation: false
instance.instance-id: ${spring.cloud.client.ip-address}:${server.port}
client:
register-with-eureka: true #false表示不向注册中心注册自己。
fetch-registry: true
serviceUrl.defaultZone: http://${spring.cloud.client.ip-address}:${server.port}/eureka
---
spring:
profiles: zone1
eureka:
instance.hostname: eureka
client.service-url.defaultZone: http://eureka2:${server.port}/eureka/,http://eureka:${server.port}/eureka/
---
spring:
profiles: zone2
eureka:
instance.hostname: eureka2
client.service-url.defaultZone: http://eureka:${server.port}/eureka/,http://eureka2:${server.port}/eureka/
修改主机hosts文件
vi /etc/hosts
在结尾添加两行
eureka这样改:
192.168.4.11 eureka2
127.0.0.1 eureka
eureka2这样改:
127.0.0.1 eureka2
192.168.4.10 eureka
启动命令:
eureka这样启动
java -jar eureka.jar --spring.profiles.active=zone1
eureka2这样启动
java -jar eureka.jar --spring.profiles.active=zone2
项目截图:
项目截图
以下是几个需要注意的地方:
server.enable-self-preservation: false
关闭自我保护模式,Eureka的自我保护模式是用于防止网络问题导致Eureka本身与其他服务断开连接而开发的,默认在90秒内发生大量(85%)的实例异常,就不会再对异常的服务进行移除。这项功能对于注册有几十上百台服务的Eureka来说很有用,但对于只有几个实例的Eureka来说很容易就能引发不能及时移除错误实例的问题,所以在这里我们将其关闭
instance.prefer-ip-address: false
(默认)因为这种注册的方式使用主机名进行相互查找,所以不能使用实例ip注册
register-with-eureka: true
(本身也进行注册) 与 fetch-registry: true
(获取实例列表) 在集群部署中,Eureka服务既是服务端又是客户端,需要从其他实例中获取服务列表,所以需要将这两项配置打开。
instance.instance-id: ${spring.cloud.client.ip-address}:${server.port}
将实例的id配置为ip地址+端口,只是为了好看
instance.hostname: eureka
配置实例的主机名
启动后截图:
eureka eureka2
网友评论