Router vs Route详解 route和router的区别是什么( 五 )


这里可以看出来重新使用密钥对连接进行加密,但是不知道为何 mode 依然是 http,而不是 https 。
2.6 设置和修改 route 配置
route 配置主要有以下几个比较重要的:
(1)SSL 终结方式 。共三种:

  • edge:TLS 在 router 上被终结,然后非SSL网络包被转发给后端 pod 。因此需要在 router 上安装 TLS 证书 。不安装的话,会使用 router 的默认证书 。
  • passthrough:加密网络包直接被发给 pod,router 上不做TLS 终结,因为不需要在 router 上配置证书或密钥 。
  • Re-encryption:是 edge 的一种变种 。首先 router 上会使用一个证书做 TSL 终结,然后使用另外的证书再进行加密,然后发给后端 pod 。因此,整个网络路径都是加密的 。
设置:
  • 可以在创建 route 时设置,也可以通过修改 route 的 termination 配置项来修改其 SSL 终结方式 。
  • 具体请参考官方文档 https://docs.okd.io/latest/architecture/networking/routes.html#edge-termination

(2)负载均衡策略 。
有三种策略:
  • roundrobin:根据权重轮流使用所有后端 。
  • leastconn:选择最少连接的后端接收请求 。
  • source:将源IP进行哈希,确保来自同一个源IP的请求发给同一个后端 。
设置:
  • 要修改整个 router 的负载均衡策略,可使用 ROUTER_TCP_BALANCE_SCHEME 环境变量,为该 router 的所有 passthrough 类型的 route设置负载均衡策略,使用 ROUTER_LOAD_BALANCE_ALGORITHM 为其它类型的 route 设置策略 。
  • 可以使用 haproxy.router.openshift.io/balance 为某个 route 设置负载均衡策略 。
举例:
  • 设置整个 router 的环境变量:oc set env dc/router ROUTER_TCP_BALANCE_SCHEME=roundrobin
  • 改完以后,该 router 实例会重新部署,所有 passthrough 的 route 都是 roundrobin 类型的了 。默认为 source 类型 。
  • 修改某个 route 的负载均衡的策略:oc edit route aaaa.svc.cluster.local

Router vs Route详解 route和router的区别是什么


修改完成后,HAProxy 中对应该 route 的 backend 中的 balance 值会被修改为 leastconn 。
三、OpenShift router 服务如何实现高可用?
OpenShift router 服务支持两种高可用模式 。
3.1 单 router 服务多副本,并利用和DNS/LB 实现高可用
这种模式只部署一个 router 服务,它支持集群的所有对外暴露的服务 。要实现HA,需要设置副本数(replicas)大于1,使得会在超过一台服务器上创建pod,然后再通过DNS轮询或者四层负载均衡 。
Router vs Route详解 route和router的区别是什么


因为 router/pod 中的 HAProxy 要实现本地配置文件,因此实际上它们是有状态容器 。OpenShift 采用 etcd 作为配置的统一存储,openshift-router 进程应该是采取某种机制(被通知或定时拉取)从 etcd 中获取 router 和 route 的配置,然后再修改本地的配置文件,再重启 HAPorxy 进程来应用新修改了的配置文件 。要深入了解这里面的工作原理,可以去看源代码 。
3.2 多 router 服务通过分片(sharding)实现高可用
这种模式下,管理员需要创建和部署多个 router 服务,每个router 服务支持一个或几个 project/namespace 。router 和 project/namespace 之间的映射使用标签(label)来实现 。
具体的配置请参考官网 https://docs.openshift.com/container-platform/3.11/install_config/router/default_haproxy_router.html 。

推荐阅读