【华为云Stack】【大架光临】第21期:ENS应用连接,面向多云多池应用网络的高效互联
1 背景
在政府和企业的云化转型的过程中,随着信息化技术的不断发展,往往在内部同时存在多家不同厂商或不同技术架构的云平台。根据Flexera公司2024年云计算状态报告显示:全球89%的大中型企业拥抱多云战略。其中16%的组织会选择多个私有云或多个公有云,73%的组织有意愿选择公有云+私有云的混合云模式。同时云上应用逐渐向云原生演进,基于Kubernetes的容器平台已成为事实上的标准,企业组织的Kubernetes集群数量激增;根据VMware的Kubernetes状态报告显示:29%的组织运行集群数量超过50个,36%的组织运行集群数量超过10个,另外48%的组织预计来年的运行集群数量增长超过50%。企业使用多Kubernetes集群来交付应用主要有如下考虑:
- 容灾、多活、高可用、低延迟:在多地域、多可用区部署业务,故障后迁移流量,提升业务可用性,在多个集群中分摊业务流量,多地域部署,通过就近访问降低业务时延;
- 多云、混合云战略:云上统一管理IDC集群,基于云上资源弹性应对业务流量突发场景;跨多个云厂商,统一管理、避免厂商绑定;
- 业务和故障隔离:相比于基于Namespace的软性多租架构,基于多集群隔离不同属性业务,具有更好的性能和可操作性,同时也缩小了故障影响范围;
- 安全合规、单Kubernetes集群节点和Pod上限等;
应用独立部署、容灾/故障转移、多云应用无缝迁移(避免锁定)是企业采用多云架构的核心考虑点。多Kubernetes集群的使用呈现跨平台、异构、多厂商/多版本的特点,需要多集群管理平台提供从应用分发到监控运维的统一、一致的使用体验。
2 多集群管理技术
多集群管理技术发展自Kubernetes 1.5、1.6版本社区提出的KubeFed项目。但Federation v1存在API扩展性差、管理复杂以及成熟度不足等问题,并未被广泛接纳。虽然之后的Federation v2做了大量改进设计,但最终仍无法被更为广泛地采用。
如今开源社区被广泛采用的多集群管理方案主要有 Karmada、Open Cluster Management(OCM),主要提供如集群接入、统一运维、应用分发、统一流量治理等关键功能。针对多集群场景中的业务应用,除了提供南北向对外访问外,还涉及跨集群的东西向访问。
1.其中南北向访问场景典型的方案如下:
图1 南北向SLB
多Region多集群场景中GSLB作为全局的对外访问入口,提供全局流量分发,GSLB基于地域、健康状态等将流量分发至Region内的SLB,再由SLB分发到对应集群服务。该方案中负载转发的均衡性以及服务的对外发布均需要两级LB的协同;同时不同类型集群的兼容性依赖Ingress Controller或厂商SLB的实现。
2.多集群间应用东西向访问方案主要有以Istio、Submariner等为代表的开源项目,两者都实现了MCS(Multi-Cluster Services)API 所定义的跨多个集群的Service。Istio、Submariner两种开源方案的实现基本都采用了入口网关的方式,差别在于Istio的入口网关基于Envoy能够提供L4、L7层的连接,具备应用或微服务治理能力,而Submariner的入口网关主要基于VXLAN+VPN提供L3网络连通能力。
图2 Istio单控制面管理多集群
如上Istio通过一套控制面管理多个集群,Istiod通过集群API Server发现集群中的服务信息,跨集群访问均通过Gateway转发完成。Service通过Gateway的访问依赖网络的可达性,同时主要通过Namespace、集群或网格的隔离来满足多租的隔离性要求。
图3 Submariner多集群网络互通
开源的Submariner在实现上能应对更复杂的网络环境,支持跨公网的公有云Kubernetes集群与自建数据中心的Kubernetes集群间的安全互联。其在每一个纳管的集群部署一个网关,在集群间建立安全的VPN隧道,网关节点与Kubernetes Node间建立VXLAN,同时需要适配不同CNI的数据面要求。集群间通过网关节点打通了跨集群POD的三层连接,无应用层协议支持能力,不支持多租场景。
3 华为云Stack多集群网络互通方案
在华为云Stack的项目中,客户也大量使用了多Kubernetes集群,面向多Kubernetes集群的统一网络管理,华为云Stack推出了ENS(Enterprise Network Service)应用网络服务,旨在提供多云多池场景下面向应用容器的网络解决方案,即通过模型抽象屏蔽资源层网络的复杂性,提供面向应用连接、应用治理、应用安全的网络能力,同时提供跨多云、异构资源池的统一的可操作性。
图4 混合多云网络架构
架构思想:
- 多站点应用网关通过统一的网络跨域互联,实现跨站点流量分发;
- 站点内流量通过本站点网关在站点内分发;
- 通过全局、本地控制器实现对应用网关的分级管理与调控;
- 应用无侵入,无代理方式就近接入跨域网络;
- 服务多站点部署,全局负载均衡;
架构优势:
- 提供面向应用的网络连接,支持精细化流量控制、安全控制;
- 面向多云、异构场景无感互联,极简网络配置与管理;
- 支持丰富的L4~L7协议,东西向、南北向访问入口合一;
ENS 应用网络服务提供四大关键能力:
- 面向多云多Kubernetes集群的分布式网关:资源池级应用网关集群,支持资源池应用访问与对外服务的高可用,可实现应用跨域、跨资源池的高可用;支持不同类型资源池的Kubernetes集群接入,包括华为云Stack Region、传统资源池、公有云资源池等;
- 提供异构多CNI类型集群接入、服务发现与应用网络互联:支持主流生产级CNI类型集群接入,容器应用的L4、L7层互联;
- 提供面向多云多池的跨集群流量治理:支持Gateway API、MCS API,提供面向多集群的Service以及流量治理能力,如HTTP Routing、traffic splitting、health-based自动平滑容灾、traffic mirroring、基于副本数负载均衡流量等;
- 提供面向应用的安全治理:应用安全认证、鉴权,WAF防护等。
典型使用场景如下:
场景一:跨域多集群全局流量调度、故障切换:基于副本数或权值的分流,实例故障后自动平滑切换;
图5 跨域多集群流量调度
1、应用多副本部署在不同数据中心的异构Kubernetes集群上,统一对外提供服务;
2、客户端通过就近的应用网关访问服务,可以通过应用网关配置不同集群分摊流量的比例或根据服务的副本数量做流量均衡;
3、当某一个集群中的应用故障时,流量自动均衡到其他集群的正常实例上;
场景二:基于位置的优先访问,容灾倒换:应用优先访问就近的服务,故障后容灾倒换
图6 优先访问、容灾切换
1、应用系统的客户端与服务端跨多个集群,多数据中心部署,客户端通过应用网关优先就近访问本数据中心的服务端;
2、当本数据中心的服务端故障时,应用网关自动将请求路由至其他数据中心的服务端,实现故障的切换;
3、当就近的服务端恢复后,通过应用网关也能实现无感的流量切换;
场景三:多租流量隔离:分布式网关支持多租户多集群组的流量安全隔离,实现成本与效率的均衡
图7 多租流量隔离
应用网关支持逻辑多租隔离、灵活的扩容,当整体业务流量较小时,多个集群组可以共享一套应用网关集群,当业务流量较大时,可以独占各自的应用网关,同时保障流量的安全隔离。
4 多集群网络实践
通过ENS应用网络纳管多个云环境中不同类型的CCE容器集群,基于跨集群应用网络自动化,支持应用全局快速互访。操作过程如下:
- 创建集群组、添加集群:租户将多个Kubernetes集群添加到同一个集群组中,ENS服务自动发现集群服务,配置跨集群服务的全局域名,集群组间访问隔离;
图8 创建集群组
图9. 添加集群
- 服务发布:通过服务发布,将跨集群应用在集群组内进行发布,如下选择任一集群中的任一服务完成服务在集群组内发布;
图10. 服务发布
- 创建全局服务网关:通过服务网关对集群组内集群应用提供全局的访问入口
图11. 服务网关创建
- 创建监听器:针对同一服务网关配置不同端口对外提供不同协议的访问入口
图12. 创建监听器
- 配置路由规则:配置应用层协议转发规则、处理规则、流量比例等;
图13. 配置路由规则
- 验证跨集群访问:在集群组中的任一集群pod中,通过全局服务域名访问跨集群服务;
图14. 跨集群应用访问
5 总结
ENS应用网络服务解决跨云跨池应用混合分布场景下的应用互联、服务发现、服务治理、应用安全等问题:
- 提供多云应用的高效互联,简化应用交付;
- 灵活丰富的流量调度,构建故障切流、高可用、高可靠的分布式应用;
- 强化应用安全,端到端流量加密、安全认证、应用防护;
为企业提供一个高效、灵活的多云应用网络管理平台,帮助企业在复杂异构的多云环境中实现面向应用的敏捷交付、原生高可用和一致安全性。
- 点赞
- 收藏
- 关注作者
评论(0)