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