OpenShift router 服务支持两种高可用模式。
### 单 router 服务多副本,并利用和DNS/LB 实现高可用
这种模式只部署一个 router 服务,它支持集群的所有对外暴露的服务。要实现HA,需要设置副本数(replicas)大于1,使得会在超过一台服务器上创建pod,然后再通过DNS轮询或者四层负载均衡。
因为 router/pod 中的 HAProxy 要实现本地配置文件,因此实际上它们是有状态容器。OpenShift 采用 etcd 作为配置的统一存储,openshift-router 进程应该是采取某种机制(被通知或定时拉取)从 etcd 中获取 router 和 route 的配置,然后再修改本地的配置文件,再重启 HAPorxy 进程来应用新修改了的配置文件。 要深入了解这里面的工作原理,可以去看源代码。
因为master 上的服务也需要有LB(8443端口),router 服务也需要LB(80和443端口)。因此,要么采用两个LB:
要么采用一个LB 来支持 master 上的服务和 router 服务:
这种模式下,管理员需要创建和部署多个 router 服务,每个router 服务支持一个或几个 project/namespace。router 和 project/namespace 之间的映射使用标签(label)来实现。具体的配置请参考官网 https://docs.openshift.com/container-platform/3.11/install_config/router/default_haproxy_router.html。 实际上,和一些产品(比如mysql,memedcache)的分片功能类似,该功能更多地是为了解决性能问题,而无法完全解决高可用问题。
收起