0
点赞
收藏
分享

微信扫一扫

如何为您的私有云选择网络网关

柠檬果然酸 2022-04-07 阅读 74

2022年2月8日 By Alex Saroyan

客座文章最初由Alex Saroyan发表在Netris的博客上

实话实说,几乎没有人愿意处理网络问题,但是如果不投入时间和金钱来开发良好的网络架构并规范一些基本的操作程序,我们将无法为我们的应用程序提供合适的服务。 我们如何将应用程序孤岛与外界相连,将决定用户体验的成败。

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

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

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

公共云提高了基础设施变更实现的门槛

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

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

相反方向的交通也适用于这里。当您将应用程序公开给公共Internet时,您使用按需负载均衡器的服务,这是属于网关层的另一个服务。负载均衡器应该与边界路由器协作,接收来自互联网的流量,此外还应该与Kubernetes节点(或任何服务器后端)协作,将流量分配给目标应用程序(阅读更多关于云本地负载均衡器服务的信息)。

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

这很好,因为它允许云从业者专注于他们业务的核心和独特的应用程序!

按需、自操作的网络基础设施服务目前是云环境的最新技术。您的本地私有云应该是相同的。否则,它就不是私有云,而只是本地的传统。

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

在这里插入图片描述

  • 边界路由器 – 位于专用网络的边缘,处理与互联网提供商和互联网交换点的 BGP 会话。随时使用可用的最佳路径将出口流量路由到
    Internet。还使您的公共 IPv4/IPv6 地址空间可全局访问,并接受入口流量。
  • NAT(网络地址转换) – 允许具有专用 IP 地址的主机与互联网通信。
  • L4 负载均衡器 – 向 Internet 公开应用程序,并将流量路由到 Kubernetes 入口(或应用程序堆栈所在的任何位置)。
  • 站点到站点 VPN – 使托管在专用 IP 地址空间上的应用程序能够与位于另一个数据中心或远程办公室(通过 Internet
    上的加密隧道传输)的专用 IP 地址托管应用程序进行通信。

私有云中网关/边界服务的最低期望是多少

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

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

传统的网络设备,如思科ASR系列或瞻博网络MX系列,非常快速且非常稳定。它们表现良好,除非您在日常工作中将命令性网络配置写入生产设备的 CLI 中。否则它们会表现得很顺利。

每年我们都会目睹一些由人为错误引起的显着网络中断。

犯错是人为的:供应商应该提供更易于操作且不易发生人为错误的解决方案。(公共云已经证明这是可能的)

专用路由器可以执行大量不同的路由功能(您可能只需要少量),但通常它们无法提供负载平衡或NAT或其他基本网络服务。因此,根据设计,当您使用传统的网络硬件时,您被迫为不同的网络功能维护专用设备(一个用于路由器,另一个用于负载平衡器,另一个用于防火墙等),并且不要忘记乘以2(用于冗余)。更多的设备导致更多的网络集成需要维护,这最终导致更复杂的增加。这与类似云的体验相反。

使用云原生思维模式,您不能在每次应用程序团队需要新的负载均衡器实例时,或者每次在 Calico 和物理网络(仅举几例)之间需要新的 Kubernetes 节点时,您都冒着网络风险。

这些老生常谈的传统网络设备非常适合静态用例,但在现代动态环境中容易出错。

如果您现在遇到物理基础设施的供应链问题,请注意!

此外,您不想混合搭配品牌和型号,因为每个人都知道这是处理不兼容性问题的可靠方法。客户通常最终会被他们所选设备的供应商和型号所锁定。如果您在该行业工作了5年以上,那么在尝试购买其他设备时,您可能已经处理过供应链问题。因此,在执行第一个云遣返项目时,您可能需要考虑添加选项,而不仅仅是您熟悉的供应商。

为什么我们将自己锁定在单一供应商上,而现代商品硬件如果管理得当,可以释放成本和供应链多样性的好处?

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

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

我钦佩Linux路由器的一个重要原因是它是通用的,你不需要不同的硬件来实现不同的功能。您的服务器可以充当边界路由器,负载平衡器,防火墙,VPN网关,一切和任何东西。您只需要拥有适量的资源。它是Linux,因此您可以安装所需的任何内容,并且可以轻松编写脚本来创建特定于您的业务需求的任何内容。

但限制始终是性能。通用机器的灵活性不利于网络转发应用程序的性能有限。

这让我感到震惊的是,SmartNIC,DPDK和FRR如何改变了这一点

边界路由器需要与许多互联网提供商(和IXP)进行BGP通信,并能够处理完整的路由表(900K +路由)。几十年来,这项任务需要专门的硬件。FRR(自由范围路由)改变了这一点。通过 FRR,我们能够处理在常规 Linux 服务器上发送完整路由表的数十个对等方。

但是,我们可以使用Linux服务器转发100Gbps +吗

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

在这里插入图片描述

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

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

因此,一个价值约1,000美元的SmartNIC和合适的软件可以将一台价值5,000美元的服务器变成一个高性能网关,可以进行边界路由,负载平衡,NAT,VPN等,每秒转发100Gbps +的流量和2000万+数据包。
该解决方案可与传统(阅读:昂贵的20K-200K)网络设备相媲美。

另一个好处是:它运行在您最喜欢的服务器供应商提供的商用硬件上。我们Netris希望简化网络,使其更接近Linux,DevOps和NetOps社区。我们创建了Netris SoftGate软件解决方案,有助于将Linux服务器转变为功能齐全的网关。

举报

相关推荐

0 条评论