项目中,如果微服务实例过多时,eureka server会承担较高的负载,如果一旦eureka server宕机,后果不堪设想。基于此,需要对eureka server进行集群配置,以降低风险,持续运营。
我们这里的改造,基于上一篇博文的feign的项目工程。
拷贝一份服务注册中心工程,将其命名为feign-servicecenter2
之前feign-servicecenter的端口号定义为5430,这里先定义feign-servicecenter2的端口号为5429
修改servicecenter的配置文件如下
sping:
profiles: peer1
server:
port: 5430 #服务注册中心端口号
eureka:
instance:
hostname: peer1
client:
registerWithEureka: false #是否向服务注册中心注册自己
fetchRegistry: false #是否检索服务
serviceUrl: #服务注册中心的配置内容,指定服务注册中心位置
defaultZone: http://peer2:5429/eureka/
和servicecenter2的配置文件如下
sping:
profiles: peer2
server:
port: 5429 #服务注册中心端口号
eureka:
instance:
hostname: peer2
client:
registerWithEureka: false #是否向服务注册中心注册自己
fetchRegistry: false #是否检索服务
serviceUrl: #服务注册中心的配置内容,指定服务注册中心位置
defaultZone: http://peer1:5430/eureka/
上面配置中,定义了peer1 和 peer2,分别代表服务器的hostname。这里做测试,在同一台机子,所以使用host别名来替代。实际开发中,可以是具体的服务器IP地址,定义各自端口号是5430和5429。
给host定义别名,需要修改本地的host文件,做测试的是win10 64位操作系统,看下win10操作系统的host别名修改方式。
进入Windows系统,C:\Windows\System32\drivers\etc,hosts文件中增加
127.0.0.1 peer1
127.0.0.1 peer2
服务注册中心的修改到此结束。
在不同的机子上做server集群,eureka客户端是不用做修改的。这里是同一台机子,需要对配置文件做略微的修改,以方便看出集群效果。上面看到,之前有两个服务提供者工程和一个服务消费者工程,这里我们取一个服务提供者工程做示范,其它两个工程同样的修改方式。
打开provider工程的配置文件
将其服务注册地址修改为
spring.application.name=eureka-client
eureka.client.service-url.defaultZone=http://peer1:5430/eureka/
server.port=5433
依次启动servicecenter,servicecenter2,provider,provider2和consumer 5个工程
浏览器输入 peer1:5430 可以看到
DS Replicas 部分,出现了一个peer2,表示其为peer1的集群小伙伴
打开peer2的访问地址 http://peer2:5429/,可以同样看到
此时,我们访问下 http://localhost:5433/hello ,是可以正常访问的
停掉servicecenter服务,注册中心仅留servicecenter2 ,服务依然可以正常访问,表示注册中心正常工作。
上面是两个服务注册中心,如果三个或更多呢,用逗号隔开就可以了,以此类题
defaultZone: http://peer2:5429/eureka/,http://peer3:5428/eureka
上面就是eureka server集群的一点知识,如果有整理不到位或不严谨之处,欢迎批评斧正。谢谢。