上一篇中提到用SpringBoot2.0+Eureka搭建服務注冊中心和服務提供者,詳情參考:
https://www.cnblogs.com/SysoCjs/p/10127448.html
現在講一下SpringCloud+Eureka搭建高可用注冊中心。在微服務架構的分布式環境中,必須充分考慮可能會發生的故障情況,所以生產環境必須對各個組件進行高可用部署,對於微服務也是一樣,Eureka的服務治理設計中,所有的節點既是服務提供者,也是服務消費者,服務中心也不例外。
Eureka服務的高可用實際上就是向別的服務注冊中心注冊自己,形成一個各個注冊中心相互注冊的閉環鏈。下面是項目的搭建:
一、根據上面鏈接新建一個項目,除了application.properties之外,所有信息一樣。
這時,我們將application.properties文件刪掉,新建兩個properties文件(有些人喜歡用yaml),分別命名為application-peer1.properties和application-peer2.properties。
①application-peer1.properties文件配置如下:
二、在IDEA中創建兩個服務啟動項,分別根據peer1和peer2文件來啟動服務。
1、在點擊run那里,選擇edit configurations...,
2、選中剛才創建的項目,會看到只有App這個啟動項(我的項目是已經新建了peer1和peer2),
- 選中App,去掉“Single Instance only”的勾,這樣子才能創建多例,(新建的也要去掉勾)
- 點擊“+”,填寫自定義的Name,
- 選擇“Main Class”,作為這個properties的啟動類,這個項目只有一個啟動類,所以都選App啟動類,
- 填寫Program argument:--spring.profiles.active=peer1(--spring.profiles.active=peer2),表示當前服務是根據哪個properties文件進行加載配置,有不少人是喜歡用cmd窗口打包啟動的。
當新建好了peer1和peer2,依然要點一下run那里,這時會多出來剛才新建的名字為peer1和peer2的選擇,那么現在可以依次選擇,並啟動peer1和peer2服務,當啟動第一個服務時會報錯,這沒關系,當啟動第二個時,就正常,然后回去重啟第一個服務,就正常了。這是因為啟動第一個服務時,它會向第二個服務請求注冊,而第二個服務還沒有啟動,會有connect refuse。
這個時候可以訪問一下Spring Eureka,輸入127.0.0.1:1111
在peer1服務注冊中心里有兩個服務,peer2和它自己,registered-replicas那里也顯示了向它注冊的服務中心信息。
輸入127.0.0.1:1112,得到類似的效果:
至此,SpringBoot2.0+Eureka搭建高可用注冊中心已經成功。