spring cloud 高可用eureka注册中心

Spring Cloud的Eureka Server的高可用就是不同的Eureka相互注册,从而实现注册信息相互复制的功能。它们都存有相同的信息,当其中一个注册中心挂掉后,不影响程序的正常功能,一般是多台服务器,也可以在同一个服务器。

一:本次是模拟2台服务器,因为是在一个机器上,所以,需要修改Host文件

windos是在这个路径下,C:\Windows\System32\drivers\etc,可以把它先脱到桌面,然后重命名为.txt文件,打开修改后去掉后缀名再放到原来的我位置,这样就可以修改了,这个文件默认是只读的,右键选择属性,把只读去掉就可以了。

打开Host,修改如下增加2个127.0.0.1的映射

二:修改程序的配置文件

把原来的application.yml复制2个出来,重命名为下图

application.yml里面可以写上通用的配置属性

#文件存放通用的配置
spring:
  application:
    name: api-eureka
  profiles:
    active: server1
  server:
    eviction-interval-timer-in-ms: 4000  # 设置清理的间隔时间,而后这个时间使用的是毫秒单位(默认是60秒)
    enable-self-preservation: false  #关闭保护模式
    renewal-percent-threshold: 0.9

application-server1.yml的内容

server:
  port: 8001
eureka:
  instance:
    hostname: server1
    #hostname:${spring.cloud.client.ipAddress} 不同的主机可以加上这句话
    #prefer-ip-address: true   不同的主机可以加上这句话
    instance-id: eureka-8001
    lease-renewal-interval-in-seconds: 30    # 续约更新时间间隔(默认30秒),eureka客户端向服务端发送心跳的时间间隔
    lease-expiration-duration-in-seconds: 90 # 设置心跳的周期间隔,续约到期时间(默认90秒)
  client:
    # 表示是否注册自身到eureka服务器
    register-with-eureka: true
    # 是否从eureka上获取注册信息
    fetch-registry: false
    service-url:
      defaultZone: http://server2:8002/eureka/  #/如果是多台机器,用过http://IP地址:8002/eureka/进行相互注册,客户端最好都注册到多个注册中心,虽然注册到一个注册中心也可以实现相互复制,但是如果主eurka挂了,
                                                #/那么后续就无法再注册服务了,这也是网上的服务注册多个到eureka用逗号分隔的原因,只要有一个活的eureka,就可以实现复制


application-server2.yml的内容

server:
  port: 8002
eureka:
  instance:
    hostname: server2
    #hostname:${spring.cloud.client.ipAddress} 不同的主机可以加上这句话
    #prefer-ip-address: true   不同的主机可以加上这句话
    instance-id: eureka-8002
    lease-renewal-interval-in-seconds: 30    # 续约更新时间间隔(默认30秒),eureka客户端向服务端发送心跳的时间间隔
    lease-expiration-duration-in-seconds: 90 # 设置心跳的周期间隔,续约到期时间(默认90秒)
  client:
    # 表示是否注册自身到eureka服务器
    register-with-eureka: true
    # 是否从eureka上获取注册信息
    fetch-registry: false
    service-url:
      defaultZone: http://server1:8001/eureka/  #/如果是多台机器,用过http://IP地址:8002/eureka/进行相互注册,客户端最好都注册到多个注册中心,虽然注册到一个注册中心也可以实现相互复制,但是如果主eurka挂了,
      #/那么后续就无法再注册服务了,这也是网上的服务注册多个到eureka用逗号分隔的原因,只要有一个活的eureka,就可以实现复制

三:配置idea启动2个注册中心

新建2个启动项,选择同一个服务选择不同的配置信息

然后依次启动这2个服务,启动第一个服务时,会报错,因为第一个服务时注册到第二个服务里的,此时第二个服务还没启动,等启动第二个服务后,就正常了

或者通过jar包启动

java -jar XXXXXX.jar --spring.profiles.active=server1
java -jar XXXXXX.jar --spring.profiles.active=server2
 

四:启动C服务注册到注册中心

其他服务最好都注册到注册中心,当然注册到某一个注册中心也可以,本次注册到一个注册中心,
defaultZone: http://localhost:8001/eureka/

启动C服务后,输入第server1注册中心的地址,发现C服务被注册进来了,同时可以看到第二个server2注册中心

 输入第server2注册中心的地址,发现C服务同样被注册进来了,我们只是把C服务注册到了server1,但是server2里也有,说明信息进行了同步,同时可以看到第一个注册中心

猜你喜欢

转载自blog.csdn.net/CarryBest/article/details/102605888