高可用注册中心搭建 (Eureka),用两台机器搭建集群

高可用,就是多台机器提供同一个服务,有几台机器停机了另外几台还可保持提供服务,不至于出现无法访问。

本次用两台机器来实现Eureka的高可用。

在上一篇:《单节点的注册中心搭建》 的基础上继续操作。

只需要修改下Eureka项目的配置文件就可以了,即 application.yml

操作步骤:

  1. 修改注册中心项目的配置文件,启动一个实例。
  2. 修改同一个注册中心项目的配置文件,把端口改掉,然后启动实例。

第一个注册中心的设置:

server:
  port: 8201 # 注册中心的端口号
  
spring:
  application:
    # 应用名称 即:Application列(可以认为是服务分组的名称)
    name: config-center
    
eureka:
  instance:
    # 本实例的访问主机,即:Status列中链接的hostname部分。 如果 prefer-ip-address 项设置为true,则这里将会使用对应服务的IP
    hostname: eureka-${server.port}
    
    # 本实例ID,即:Status列中链接的文本部分。如果不写默认为(主机名:应用名称:端口号)。按实例ID来区分在Status中的链接
    instance-id: eureka-id-${server.port}
    
    # 指定本实例的链接hostname部分用IP。
    prefer-ip-address: true
    
  client:
    # 是否向注册中心注册自己,这里只有一台就不注册了
    register-with-eureka: true
    
    # 要不要去注册中心获取其他服务的地址,这里只有一台就不需要了
    fetch-registry: true
    
    service-url: 
      # 注册中心提供服务的地址,服务器开放的通信地址,其它服务可以通过这个地址注册过来(就是发注册的请求给注册中心)
      # http://域名:端口  域名是要给别的服务能访问到的(测试的时候在本机所以用localhost了,也可以用127.0.0.1),端口就是本注册中心的端口${server.port}表示用的本注册中心的端口,即8201
      defaultZone: http://localhost:${server.port}/eureka, http://localhost:8221/eureka
      
  server: 
    # 是否允许开启自我保护模式
    enable-self-preservation: false
    
    # Eureka服务器清理无效节点的时间间隔,单位:毫秒
    eviction-interval-timer-in-ms: 5000

设置好后启动。

这时会报错:

com.sun.jersey.api.client.ClientHandlerException: org.apache.http.conn.ConnectTimeoutException: Connect to localhost:8221 timed out

这是因为第个注册中心8221还没有启动造成的,等8221的注册中心启动后就好了。

第二个注册中心的设置

我们在第一个注册中心的配置文件基础上修改下然后启动。

server:
  port: 8221 # 注册中心的端口号
  
spring:
  application:
    # 应用名称 即:Application列(可以认为是服务分组的名称)
    name: config-center
    
eureka:
  instance:
    # 本实例的访问主机,即:Status列中链接的hostname部分。 如果 prefer-ip-address 项设置为true,则这里将会使用对应服务的IP
    hostname: eureka-${server.port}
    
    # 本实例ID,即:Status列中链接的文本部分。如果不写默认为(主机名:应用名称:端口号)。按实例ID来区分在Status中的链接
    instance-id: eureka-id-${server.port}
    
    # 指定本实例的链接hostname部分用IP。
    prefer-ip-address: true
    
  client:
    # 是否向注册中心注册自己,这里只有一台就不注册了
    register-with-eureka: true
    
    # 要不要去注册中心获取其他服务的地址,这里只有一台就不需要了
    fetch-registry: true
    
    service-url: 
      # 注册中心提供服务的地址,服务器开放的通信地址,其它服务可以通过这个地址注册过来(就是发注册的请求给注册中心)
      # http://域名:端口  域名是要给别的服务能访问到的(测试的时候在本机所以用localhost了,也可以用127.0.0.1),端口就是本注册中心的端口${server.port}表示用的本注册中心的端口,即8201
      defaultZone: http://localhost:${server.port}/eureka, http://localhost:8201/eureka
      
  server: 
    # 是否允许开启自我保护模式
    enable-self-preservation: false
    
    # Eureka服务器清理无效节点的时间间隔,单位:毫秒
    eviction-interval-timer-in-ms: 5000

然后启动:

同一个项目,在不同的端口分别启动了两个实例。

运行结果:

做下测试:

修改下product-service项目的配置,启动服务提供者:这是第一台

spring:
  application:
    name: product-service # 服务提供项目的实例名称

server:
  port: 8202 # 服务提供项目的端口号

eureka:
  instance:
    instance-id: product-service:${server.port}
    prefer-ip-address: true
  client:
    serviceUrl: # 这一项配置名称 与 service-url 效果相同
      defaultZone: http://localhost:8201/eureka/, http://localhost:8221/eureka/ # 注册中心的服务地址

这是第二台,就改了下端口号

启动两个不同的服务提供者。

查看注册中心:

启动消费者

停掉一个注册中心,再访问消费者,依然可以交替访问服务提供者,说明高可用真的是可用的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值