如何部署高可用Eureka?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gxb2260/article/details/82872419

1、当前现状:eureka服务是单节点的,如果eureka服务挂掉之后,整个业务系统都崩溃。。。

2、解决办法:把eureka做成高可用的,搞成两个节点,两个节点互相注册。在网上可以收到很多的教程,以为自己可以一帆风顺的搞定这个问题,但是没有想到自己还是艰难的跌跌撞撞的完成了这个。下面是主要的application-peer1的配置文件,同理可以得到application-peer2的配置文件。

server:
    port: 10100
spring:
  application:
    name: eureka-server-peer1
eureka:
  client:
    service-url:
      defaultZone: http://192.168.1.11:10100/eureka/
    register-with-eureka: true # 当前的微服务不注册到eureka之中
    fetch-registry: false       # 不通过eureka获取注册信息
    registry-fetch-interval-seconds: 3
  instance:
    hostname: peer1
    prefer-ip-address: true
    instance-id: ${random.uuid}

下面主要是自己的犯错记录:

        1、Host name may not be null

         报这个错的主要原因是在配置 defaultZone的时候,没有写端口号。或者是吧defaultZone配置成http://192.168.1.11:${server.port}/eureka/。报错信息显示在解析的时候把eureka的端口解析为:192.168.1.11:-1 。只要直接简单粗暴地把端口直接写上去就可以了。

        2、Connection refused 连接被拒绝 

                 这个问题困扰了我很久,我一直以为是由于阿里云的内网不能直接访问的,后来发现自己是可以ping通的,然后就迷失方向了。后来发现是自己太菜,导致服务在起来的时候遇到问题,eureka注册的端口没有通。真是想捅死自己:(

      3、eureka服务正常运行,但是不能访问eureka的控制台

           一个智障一般的错误,在服务起来之后,我还是不能访问eureka的控制台。服务重启了好多次,问题依然存在。后来才发现自己的url输错了。应该是192.168.1.11:10100 而不是192.168.1.11:10100/eureka。

     4、在服务注册eureka的时候没有注册两个eureka服务。

          在eureka形成集群之后,所有注册到eureka的服务都需要向每个eureka节点注册。如果只注册了eureka集群中的一个,那么这个节点挂掉之后,系统依然会报错。

3、怎么把eureka服务部署到多台服务器上?

    先说下平时的服务是怎么部署的。通过脚本去拉取git上最新的代码,然后把代码编译成jar包,然后用docker 去执行jar包。那么eureka肯定不能这么简单粗暴啊,因为两个服务的配置文件是不一样的。然后自己用了一个特别傻的操作。两个服务器上的application.yml是不一样的,在从git拉取了最新的代码之后,我手动的把spring.profile.active改为test-peer2。

spring:
  profiles:
    active: test-peer1
  这样好像确实是可以的,蠢是蠢了点,先这样用吧。

开发半小时,部署一整天。虽然过程跌跌撞撞,但是效果确实还可以。

猜你喜欢

转载自blog.csdn.net/gxb2260/article/details/82872419