前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。
eureka 作為整個微服務項目的注冊中心,到目前為止,在我的系統中一直是單節點的,這樣并不能作到高可用。
于是,今天來實現 eureka 的集群,同時多個 eureka 間互相注冊,以實現單節點掛了,其它注冊中心依舊正常運行。
1. 在原有 eureka 中新增兩個配置文件:application-jy01.properties 、application-jy02.properties
PS:這 2 個配置文件我最初取名為:application-jy-01.properties ,但始終不行,直到去掉了 jy-01 中間的短橫線才運行成功。
此時 eureka 的工程結構為:
2. 分別在配置中加上相關配置內容 application-jy01.properties :
application-jy02.properties?類同。
2.1 最終? application-jy01.properties 內容為:(主機:jy01、端口:1234、注冊到另外一個 eureka:jy02)
# 應用名
spring.application.name=eureka# 端口
server.port=1234# 主機名
eureka.instance.hostname=jy01# 注冊地址:配置為另一個注冊中心
eureka.client.serviceUrl.defaultZone=http://jy02:1235/eureka/
2.2 application-jy02.properties 內容為:(主機:jy02、端口:1235、注冊到另外一個 eureka:jy01)
# 應用名
spring.application.name=eureka# 端口
server.port=1235# 主機名
eureka.instance.hostname=jy02# 注冊地址:配置為另一個注冊中心
eureka.client.serviceUrl.defaultZone=http://jy01:1234/eureka/
3. 修改已有工程 see-param 的配置文件為:(只注冊到 jy01)
# 注冊中心 - 端口: 1234、工程名: eureka (見 eureka 工程中配置)。
# eureka.client.serviceUrl.defaultZone= http://localhost:1234/eureka/
eureka.client.serviceUrl.defaultZone= http://jy01:1234/eureka/# 端口
server.port= 8801# 工程名
spring.application.name= see-param
4. 修改主機的 hosts 配置。
我的 hosts 文件所在目錄為:C:\Windows\System32\drivers\etc 。
其實,我修改了2個文件:hosts、hosts.dz ,在最后加上這 2 行配置內容:
5. 分別啟動 2 個注冊中心服務:eureka 。(啟動后的2 個eureka ,運行在不同端口)
?PS: 同時啟動不成功時請看文章:Idea 同一工程根據不同配置文件啟動、idea 同一工程多實例同時運行
6. 啟動服務 see-param ,向端口為 1234 的注冊中心注冊 。
7. 在瀏覽器訪問:http://localhost:1234/?可見:
同樣,訪問:http://localhost:1235/?則有:
此時可見 每個注冊中心都有另外一個對應節點,分別是 jyo1 和 jy02 。
同時 see-param 服務只用注冊到一個任意一個 eureka 服務,因為 eureka 有配置 eureka.client.serviceUrl.defaultZone ,所以能自動把 see-param 注冊到其它 eureka 中,這樣就在多個 eureka 中都注冊上了 see-param 服務。
注冊中心的集群實現后,單一節點 eureka 出現故障時并不影響項目服務的運行 。
8. 也可在服務中直接向多個 eureka 注冊 。
如,把 see-param 的配置再調整為:同時向多個 eureka 注冊:
即:
# 注冊中心 - 端口: 1234、工程名: eureka (見 eureka 工程中配置)。
# eureka.client.serviceUrl.defaultZone= http://localhost:1234/eureka/
eureka.client.serviceUrl.defaultZone= http://jy01:1234/eureka/,http://jy02:1235/eureka/# 端口
server.port= 8801# 工程名
spring.application.name= see-param
這樣,即使 eureka 間沒有相互注冊, 當 eureka 單一節點故障時,其它 eureka 依舊可正常工作。?
-------------------------------------------------------------
下一篇:springCloud - 第12篇 - 服務監控 Hystrix 面板
源碼見:
https://gitee.com/FJ_WoMenDeShiJie/springcloud-seeParam
https://gitee.com/FJ_WoMenDeShiJie/springcloud-eureka
-------------------------------------------------------------
PS:這個系列不定時更新,只是個人的學習分享,
內容全程參考書目:
《Spring Cloud 與 Docker 微服務架構空實戰?》、
《Spring Cloud 微服務實戰》及此書作者博客:http://blog.didispace.com/spring-cloud-learning/
《深入理解 Spring Cloud 與微服務構建》及此書作者博客:https://blog.csdn.net/forezp/article/details/70148833
--------------------------------------------------------------