简介
本文简述了大帐号模式下,集群跨租户网络通信的典型方案,其中涉及的名次简介如下:
大帐号模式:对于提供公共算力服务的平台,其集群资源由平台侧帐号统一购买和维护,算力资源的归属人是平台侧帐号,算力资源则可以提供给各个租户使用,这种帐号统称大帐号模式。
跨租户网络通信:算力资源属于帐号VPC,当用户需要访问自己VPC中的数据的时候,涉及到跨VPC网络通信,也称为跨租户网络通信。
业界主流实现方案参考
方案一 跨租户弹性网卡 (cross-tenant eni)
该eni网卡挂载到平台帐号提供的算力资源(如虚拟机),可以直接访问某个租户的VPC资源。当虚拟机流量通过该eni网卡,可以转发到对应租户的VPC。其优点是使用简单,对使用方没有额外开发量,也不需要维护网络组件,其缺点是跨租户弹性网卡的具体实现强依赖于IaaS层弹性网卡和网关,并且每挂载一张ENI网卡都是一个IP资源消耗,并且涉及到ENI的成本,挂载ENI弹性网卡的时间通常在5秒左右,对于试验比较敏感的用户不太适用。
方案二 网络代理
为每个租户VPC和subnet都创建一个Proxy,当平台提供的算力资源要访问用户VPC时,先通过ipip把流量转发到这个代理Proxy上,proxy解析出ipip的内层报文,转发到对应客户的VPC中,客户VPC的回包沿着同样的路径反向路由到平台的算力资源。这种方式的优点是不涉及ENI资源的消耗和IP资源的占用,对于启动时延敏感的场景也比较适用,缺点是需要平台侧开发和维护租户网络转发代理组件,所有流量识别和转发的功能全部都落在该代理上,其实现比较复杂。
方案三 流量染色和多租户VPC网关
在节点上实现流量染色组件,具体来说,在ovs虚拟交换机上为访问不同VPC的流量进行分类和修改,再经过节点的网卡发出,流量转发到多租户VPC网关,在网关侧进行分类和路由,客户VPC的回包沿着同样的路径反向路由到平台的算力资源。这种方式的优点是不涉及ENI资源的消耗和IP资源的占用,对于启动时延敏感的场景也比较适用,缺点是需要开放流量染色和多租户VPC网关组件,但是架构分层,比方案二实现更优雅。
总结
各种方案优缺点并存,具体要结合平台的业务场景和IaaS层网络技术栈来决策使用哪种方案。