1. 程式人生 > >如何部署高可用Eureka?

如何部署高可用Eureka?

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叢集中的一個,那麼這個節點掛掉之後,系統依然會報錯。