SpringCloud實現高可用

在微服務架構這樣的分佈式環境中,我們需要充分考慮發生故障的情況,所以在生產環境中華必須對各個組件進行高可用部署,對於微服務如此,對於註冊中心也一樣。我們需要構建高可用的註冊中心以增強系統的可用性。

回顧

Eureka Server的設計一開始就考慮了高可用的問題,在Eureka的服務設計中, 所有節點即是服務提供方,也是服務消費方,服務註冊中心也不例外。是否還記得在單節點的配置中,我們設置過下面的這兩個參數,讓註冊中心不註冊自己:

eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

Eureka Server的高可用實際上就是將自己作爲服務向其他服務註冊中心註冊自己,這樣就可以形成一組相互註冊的服務註冊中心,以實現服務清單的相互同步,達到高可用的效果。

實現高可用

1.配置

在Eureka Server這個服務的項目中,新建兩個配置文件:
application-peer1.properties

spring.application.name=eureka-server
server.port=1111

eureka.instance.hostname=peer1
eureka.client.serviceUrl.defaultZone=http://peer2:1112/eureka

application-peer1.properties

spring.application.name=eureka-server
server.port=1112

eureka.instance.hostname=peer2
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka
  • 在/etc/hosts文件中添加對peer1和peer2的轉換,讓上面配置的host形式的serviceUrl能在本地正確訪問到;windows系統路徑爲:C:\Windows\System32\drivers\etc\hosts
127.0.0.1       peer1
127.0.0.1       peer2

啓動註冊中心

在啓動註冊中心之前,首先需要加入Maven的插件

  <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

然後進行打包:mvn install
之後切換到target目錄下,通過spring.profiles.active屬性分別啓動peer1和peer2:

java -jar eureka-server-1.0-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar eureka-server-1.0-SNAPSHOT.jar --spring.profiles.active=peer2

啓動成功,在控制檯中可以看到以下輸出:




此時訪問peer1的註冊中心:peer1:1111/,如下圖所示,我們可以看到registered-replicas中已經有peer2結點的eureka-server了,同樣的我們在peer2中也可看到peer1的服務。



服務提供方

在設置了多結點的服務註冊中心之後,服務提供方還需要做一些簡單的配置才能將服務註冊到Eureka Server集羣中,我們以hello-service爲例,修改application.properties配置文件,如下所示:

spring.application.name=hello-service
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:1112/eureka/

上面的配置主要對eureka.client.serviceUrl.defaultZone屬性做了改動,將註冊中心指向了peer1和peer2.
下面我們啓動該服務,通過訪問http://localhost:1111/http://localhost:1112/,可以觀察到hello-service服務同時被註冊到了peer1和peer2上,


若此時斷開peer1,由於hello-service同時也向peer2註冊,因此在peer2上的其他服務依然能訪問到hello-service從而實現了服務註冊中心的高可用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章