閱讀的書籍爲《Spring Cloud 微服務實戰》。
在單節點Eureka Server中,通過設置,讓服務中心不註冊自己:
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
而實現Eureka Server的高可用,實際就是把自己作爲服務,向其他服務註冊中心註冊,形成一種互相註冊的服務註冊中心,以實現服務清單的互相同步,達到高可用的效果。
在上文單節點的Eureka Server的基礎之上進行擴展,
構建雙節點服務註冊中心集羣
兩個節點的hostname分別爲peer1和peer2。
清空application.properties裏的內容。
這裏如果不清空之前application.properties裏的內容,之前設置的eureka.client.register-with-eureka=false eureka.client.fetch-registry=false
會對下文的測試產生影響,讓peer1和peer2都在不可用分區中。
在application.properties的同級目錄下創建application-peer1.properties作爲peer1的配置文件,將serviceUrl指向peer2:
spring.application.name=eureka-server
server.port=1111
eureka.instance.hostname=peer1
eureka.client.serviceUrl.defaultZone=http://peer2:1112/eureka/
#關閉保護機制
eureka.server.enable-self-preservation=false
在application.properties的同級目錄下創建application-peer2.properties作爲peer2的配置文件,將serviceUrl指向peer1:
spring.application.name=eureka-server
server.port=1112
eureka.instance.hostname=peer2
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/
#關閉保護機制
eureka.server.enable-self-preservation=false
在/etc/hosts文件中添加對peer1和peer2的轉換,windows系統的修改路徑爲C:\windows\system32\drivers\etc\hosts:
127.0.0.1 peer1
127.0.0.1 peer2
通過spring.profiles.active屬性來分別啓動peer1和peer2
java -jar demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
驗證
訪問peer1的註冊中心http://localhost:1111
訪問peer2的註冊中心http://localhost:1112
可以看見,peer1和peer2分別出現在對方的registered-replicas和available-replicas中了。
這時,如果關閉peer2,刷新peer1,可以看見peer2變成了不可用分片(unavailable-replicas)。