我們需要的,不僅僅是一個服務注冊中心而已,而是一個高可用服務注冊中心。
上篇博客中我們介紹了如何使用Spring Cloud搭建一個服務注冊中心,但是搭建好的服務注冊中心是一個單節點的服務注冊中心,這樣一旦發生了故障,那么整個服務就會癱瘓,所以我們需要一個高可用的服務注冊中心,那么在Eureka中,我們通過集群來解決這個問題。Eureka Server的高可用實際上就是將自己作為服務向其他服務注冊中心注冊自己,這樣就會形成一組互相注冊的服務注冊中心,進而實現服務清單的互相同步,達到高可用的效果。
SpringBoot項目。OK,廢話不多說,我們就來看看如何搭建高可用注冊中心。
增加配置文件
在上篇博客中,我們創建了一個名叫eureka-server的服務注冊中心,那么在本文中,我將修改這個工程的配置文件,進而將其啟動多次。如下,我向這個工程中添加兩個配置文件application-peer1.properties和application-peer2.properties:
apache注冊服務、兩個配置文件的內容分別如下:
?
application-peer1.properties:
server.port=1111
eureka.instance.hostname=peer1
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone=http://peer2:1112/eureka/
application-peer2.properties:
server.port=1112
eureka.instance.hostname=peer2
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone=http://peer1:1111/eureka/
關于這兩個配置文件我說如下幾點:
1、在peer1的配置文件中,讓它的service-url指向peer2,在peer2的配置文件中讓它的service-url指向peer1
2、為了讓peer1和peer2能夠被正確的訪問到,我們需要在C:\Windows\System32\drivers\etc目錄下的hosts文件總添加兩行配置,如下:
127.0.0.1 peer1
127.0.0.1 peer2
3、由于peer1和peer2互相指向對方,實際上我們構建了一個雙節點的服務注冊中心集群
生成jar文件
OK,這次我們不直接從IDEA中啟動項目,而是先給工程生成jar文件,生成方式如下,雙擊package生成:
?
生成結果如下:
?
啟動項目
生成jar文件之后,我們在命令行通過java命令來啟動項目,在啟動的時候我們可以設置采用不同的配置文件來啟動項目,命令如下:
java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1 ?
java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
這兩行命令表示我們分別采用application-peer1.properties和application-peer2.properties兩個配置文件來啟動應用,OK,執行完這兩個命令之后,我們的服務注冊中心就啟動了兩個了,效果圖如下:
?
我們可以看到,在peer1的節點的DS replicas我們已經可以看到peer2節點了,在peer2的DS replicas中我們也可以看到peer1節點了。
OK,如此之后,我們的服務注冊中心集群就搭建好了,然后我們可以做一個簡單的測試。
測試
修改上篇博客中提到的provider項目的配置文件,如下:
spring.application.name=hello-service
eureka.client.service-url.defaultZone=http://peer1:1111/eureka,http://peer2:1112/eureka
小伙伴們注意,我們在service-url中添加了兩個注冊中心地址,兩個地址中間用,隔開,OK,修改一下這里就可以了,接下來我們來啟動這個項目,啟動成功之后我們再去刷新http://localhost:1111和http://localhost:1112 兩個頁面,我們會發現我的服務提供者在這兩個服務注冊中心都注冊了,如下:
?
?
OK,至此,一個高可用的服務注冊中心我們就搭建成功了。
原文地址:
https://mp.weixin.qq.com/s/ie042Q_h8ppsroEjQ0bdgg