前文构建的都是单节点的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/