前文構建的都是單節點的Config Server,本節來討論如何構建高可用的Config Server集羣,包括Config Server的高可用依賴Git倉庫的高可用以及RabbitMQ的高可用。html
先來討論Git倉庫的高可用。git
因爲配置內容存儲在Git倉庫中,因此要想實現Config Server的高可用,必須有一個高可用的Git倉庫。有兩種方式能夠實現Git倉庫的高可用。spring
以 GitLab 爲例,讀者可參照官方文檔搭建高可用的 GitLab:架構
Spring Cloud Config使用Spring Cloud Bus實現配置批量刷新。而因爲Spring Cloud Bus依賴RabbitMQ(固然也可以使用其餘MQ,例如Kafka或者RocketMQ),因此RabbitMQ的高可用也是必不可少的。負載均衡
搭建高可用RabbitMQ的資料,讀者可詳見:https://www.rabbitmq.com/ha.html。因爲比較簡單,筆者不作贅述。固然,也可以使用雲平臺的提供的RabbitMQ服務。微服務
本節來討論如何實現Config Server自身的高可用。筆者分兩種場景進行討論。gitlab
對於這種狀況,Config Server的高可用可藉助一個負載均衡器來實現,如圖9-6所示。代理
如圖9-6,各個微服務將請求發送到負載均衡器,負載均衡器將請求轉發到其代理的其中一個Config Server節點。這樣,就能夠實現Config Server的高可用。htm
這種狀況下,Config Server的高可用相對簡單,只須將多個Config Server節點註冊到Eureka Server上,便可實現Config Server的高可用。架構如圖9-7所示。blog
http://www.itmuch.com/spring-cloud/finchley-23/