【翻译】如何为你的私有云选择一个网络网关

客串文章,最初发表在 Netris的博客,作者Alex Saroyan

说实话,没有人愿意和网络打交道,但如果不投入时间和金钱来开发一个好的网络设计和设置一些基本的操作程序,我们就无法为我们的应用提供服务。 我们如何将我们的应用岛(很可能是Kubernetes)与世界其他地方连接起来,可以决定用户体验的好坏。

早在我和我的团队运营数据中心网络的时候,网络的边缘必须使用相当多的技术并存在一起。边界路由器、负载平衡器、防火墙、VPN集中器--我们在每个数据中心都至少有两个这样的设备,以实现冗余。我们几乎每天都会收到来自应用和业务部门的服务变更和实施请求。最大的挑战是,繁琐的网络设备配置中的微小错误会导致可怕的故障。变更的实施需要时间,工程师之间来回奔波,导致了长时间的延误。当时,人们认为 "网络是困难和复杂的,所以你需要等待一下"。

由于人为错误造成的网络中断仍然存在,无论你的公司规模有多大

我们不能责怪网络工程师。问题是,标准的网络产品过于复杂,从根本上说,不是为自动化或自动操作而设计的。

公共云提高了基础设施变革实施的标准。

每个私有网络都需要某种网关来与其他网络对等。公共云供应商按需自动提供网络服务。当你的任何资源需要与VPC以外的主机通信时(例如访问互联网),你的流量会通过互联网网关服务(AWS术语),或NAT(网络地址转换)网关服务。

当你的流量需要离开数据中心的边界(AWS术语为区域)时,你要使用边界路由器的服务。边界路由器与许多互联网供应商(顶级互联网运营商和互联网交换点)保持连接。对于每一个需要离开特定区域的网络数据包,边界路由器需要将目标IP地址与完整的互联网路由表(900k以上的路由记录)进行比较,以决定什么是最佳的转发路由。

反方向的流量在这里也适用。当你将应用程序暴露在公共互联网上时,你会使用按需负载平衡器的服务,这是另一个属于网关层的服务。负载平衡器应该与边界路由器合作,接收来自互联网的流量,此外还应该与你的Kubernetes节点(或任何你的服务器后端)合作,将流量分配到目标应用程序(阅读更多关于本地云的云原生负载平衡器服务)。

这些网络服务对云原生环境至关重要。在公共云中,我们认为这些服务的存在是理所当然的。

这很好,因为它使云计算从业者能够专注于对他们的业务具有核心和独特意义的应用!

按需自营的网络基础设施服务是目前云环境的最先进的技术。你的企业内部的私有云也应该如此。否则,它就不是一个私有云,只是一个传统的企业内部。

哪些网络网关服务对私有云至关重要?

Diagram flow shows users to internet providers to your private cloud (border/edge, ethernet switches, application servers)
  • 边界路由器- 位于你的私有网络的边缘,处理与你的互联网供应商和互联网交换点的BGP会话。使用任何时候可用的最佳路径,将出口流量路由到互联网。也使你的公共IPv4/IPv6地址空间可以在全球范围内访问,并接受入口流量。
  • NAT(网络地址转换)- 允许拥有私人IP地址的主机与互联网通信。
  • L4负载平衡器- 将应用程序暴露在互联网上,并将流量路由到你的Kubernetes ingress(或任何你的应用程序栈)。
  • 站点到站点VPN- 使托管在私有IP地址空间的应用程序能够与位于另一个数据中心或远程办公室的私有IP地址托管的应用程序进行通信(通过互联网上的加密隧道传输)。

对私有云中的网关/边界服务的最低期望是什么?

  • 即时的即时服务变更和配置(自我操作/自动的类似云的体验)
  • 对DevOps友好的界面。Kubernetes CRD、Terraform、RestAPI、直观的GUI
  • 与Kubernetes原生集成(通过观察kube-api自动调整网络)
  • 提供基本的网络服务(边界路由、第四层负载平衡、NAT、站点到站点的VPN)
  • 高可用性
  • 横向可扩展性
  • 在商品硬件上运行

你的传统网络设备适合在哪里?

传统的网络设备,如Cisco ASR系列或Juniper MX系列,速度非常快而且相当稳定。它们表现得很好,除非你在日常工作中把必要的网络配置写入生产设备的CLI中,出现了 "错误"。

每年我们都会看到一些由人为错误引起的显著的网络故障。

错的是人。供应商应该提供更容易操作、更不容易出现人为错误的解决方案。(公共云已经证明了这是可能的)

专门的路由器可以做无数种不同的路由功能(你可能只需要少数几种),但非常普遍的是,它们不能提供负载平衡或NAT或其他基本的网络服务。因此,根据设计,当你使用传统的网络硬件时,你不得不为不同的网络功能维护专门的设备(一个用于路由器,另一个用于负载平衡器,另一个用于防火墙,等等),而且别忘了乘以2(用于冗余)。更多的设备导致更多的网络集成需要维护,这最终会导致更多的复杂性增加。这与云计算的体验恰恰相反。

有了云原生的思维,你不能在每次你的应用团队需要一个新的负载均衡器实例时,或者每次有一个新的Kubernetes节点需要在Calico和物理网络之间进行新的BGP对等配置时(仅举几例),都让你的网络面临风险。

这些老式的传统网络装备对静态用例来说是很好的,但在现代动态环境中却容易出错。

如果你现在遇到了物理基础设施的供应链问题,请举手!

此外,你不希望混合和匹配品牌和型号,因为每个人都知道这是处理不兼容问题的万全之策。客户通常最终会被锁定在他们所选设备的供应商和型号上。 如果你在这个行业超过5年,你很可能在试图购买额外的设备时处理过供应链问题。 因此,当你做第一个云计算遣返项目时,你可能想考虑有额外的选择,而不仅仅是你熟悉的一个供应商。

当现代商品硬件,如果管理得当,可以释放出成本和供应链多样性的优势时,我们究竟为什么要把自己锁定在一个单一的供应商上?

我们可以在私有云中使用Linux机器和SmartNIC进行边界网络吗?

我曾在各种应用中管理过不同规模的路由器,从在一个小小的嵌入式Linux板上转发Kbps到使用思科和Juniper在多个国家移动Tbps。我一直很欣赏Linux,甚至碰巧建立了一个无线ISP网络,该网络使用高度分布式的Linux服务器-路由器,覆盖了旧金山那么大的城市。

我推崇Linux路由器的一个重要原因是,它是通用的,你不需要为不同的功能使用不同的硬件。你的服务器可以作为一个边界路由器、负载平衡器、防火墙、VPN网关,一切都可以执行。你只需要拥有适量的资源。而且它是Linux,所以你可以安装任何你需要的东西,你可以轻松地用脚本创建任何独特的业务需求。

但是,限制始终是性能问题。通用机器的灵活性有一个缺点,就是网络转发应用的性能有限。

智能网卡、DPDK和FRR改变了我的想法。

边界路由器需要与许多互联网供应商(和IXP)进行BGP对话,并有能力处理一个完整的路由表(90万条以上的路由)。几十年来,这项任务需要专门的硬件。FRR(自由范围路由)改变了这一点。有了FRR,我们就能在普通的Linux服务器上处理几十个对等体发送的完整路由表。

但是,我们能用一台Linux服务器转发100Gbps以上的数据吗?

通常情况下,每个进入Linux路由器的数据包都会产生一个CPU中断,并进入内核进行转发。边界路由器每秒需要转发数百万个数据包,每秒产生数百万个CPU中断,这很容易使内核不堪重负,造成瓶颈。

Diagram flow shows internet providers to SoftGate nodes to Ethernet switches to application servers

SmartNIC是一个带有ASIC(特定应用集成电路)的网络接口卡。通过利用DPDK(数据平面开发工具包),可以使用这个ASIC来加速网络流量处理。

结合SmartNIC和DPDK,有可能将一些网络功能卸载到ASIC中,从而绕过标准中断和内核处理,并在用户层面处理网络流量(使用预先分配的CPU内核)。

因此,一个大约1000美元的SmartNIC和合适的软件可以把5000美元的服务器变成一个高性能的网关,可以做边界路由、负载平衡、NAT、VPN等,每秒转发100Gbps以上的流量和2000万以上的数据包。
这个解决方案可以与传统的(读作:昂贵的2万-20万美元)网络设备相媲美。

另一个好处是:它可以在你喜欢的服务器供应商提供的商品硬件上运行。我们Netris希望简化网络,使其更接近Linux、DevOps和NetOps社区。我们已经创建了Netris SoftGate'这个软件解决方案,帮助把Linux服务器变成功能齐全的网关。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值