出海第一步:搞定业务系统的多区域部署

出海的企业越来越多,他们不约而同开始在全球范围内部署应用程序。这样做的原因有很多,例如降低延迟,改善用户体验;满足一些国家或地区的数据隐私法规与合规要求;通过在全球范围内部署应用程序来提高容灾能力和可用性;更好地覆盖不同地区的市场,并提供针对当地文化和语言的本地化体验......

本文我们将告诉大家,在Linode云计算平台上,如何借助VLAN快速实现多区域部署。

首先我们需要明确一些基本概念和思路:

  • VLAN和VPC都是网络隔离方法,可以借此保护部署在公有云中的基础设施。通过减少网络攻击面,同时供我们对需要以及不需要访问互联网的应用程序层进行分割,有助于提高整体安全性。
  • "地域"(Region)是指一个云服务提供商内部包含的不同地理位置,而"区域"(Zone)通常是指在一个地域内提供的多个托管地点。例如,云服务商可能在北京设立了"北方地域",并在广州设立了"南方地域",每个地域都是通过当地的多个"区域"提供服务的。
  • 除了通过距离用户更近的地理位置提供延迟更低的服务,多地域部署的应用程序还可以帮助我们大幅提高应用程序的可靠性与容错性。任何可能对一个位置运行的工作负载造成影响的问题(包括硬件故障或本地网络中断),都可将用户重新路由到另一个位置从而加以缓解。

部署多地域VLAN

为了在多地域部署的不同VLAN分段之间进行路由,可以使用虚拟专用网络(VPN)将VLAN网段捆绑在一起。

首先需要使用一个充当公共路由器的Linode节点将部署在一个地域的所有相关VLAN捆绑在一起。此时,每个VLAN网段都是独立且隔离的二层域,在自己的第三层子网内运行。各个VLAN网段之间的所有流量都会流经该路由器,我们可以在路由器上通过防火墙规则来管理允许哪些流量在不同网段之间穿越。

随后可以配置这个路由器实例,借助公共互联网和VPN软件(如WireGuard或IPSec等协议)将其他网段之间的流量桥接在一起。

上述例子展示了一个包含两个地域的部署。每个地域负责通过一个路由器实例管理两个独立VLAN之间的连接,随后,每个路由器即可使用配置有多个接口的Linode路由器实例在本地桥接多个地域。路由器可通过WireGuard隧道,借助每个地域的公共互联网横跨每个地域。

配置NAT出口点

至此,流量已经可以不受地域限制在VLAN之间流动。此外,路由器实例可以充当网络地址转换(NAT)出口点,为本地VLAN提供互联网连接(如果部署路由器实例时未提供本地互联网连接)。这种配置下,本地路由器实例将被指定为默认网关(例如通常会在10.0.0.0/24网络中配置为10.0.0.1)。我们还可以将路由器实例当作安全套接字外壳(SSH)的管理堡垒机。

实现这类NAT配置的一种常见方法是使用防火墙规则来标记WireGuard流量,并对检测出的未包含该标记的所有流量进行IP掩蔽(IP masquerading)。

例如,路由器可配置为使用如下的iptables规则:

iptables -t nat -A POSTROUTING -o eth0 -m mark ! --mark 42 -j MASQUERADE

我们可以配置WireGuard在其配置中使用FirewallMark(如"42"),该配置保证了不对WireGuard流量进行NAT,但对所有VLAN流量进行NAT。

随后即可配置云防火墙规则允许路由节点之间的WireGuard通信(通常为udp/51820)。

最后,如果需要,还可以使用防火墙规则配置路由器实例,从而控制或记录流经本地和全局网段的流量。

注意事项

上述例子中的部署可用于在全球范围内跨越多个地域实现共享,并借助路由器实例控制不同VLAN网段之间的流量。在通过隧道将多个VLAN网段的流量传输至一个聚合点时,务必要了解这样做可能对性能和带宽产生的影响。此时可获得的性能主要取决于分配给路由器的计算资源所具备的上行带宽。

在确定要使用的VPN协议时也需要慎重,这主要是为了保证满足部署的特定要求。所选择的技术将对点对点带宽以及通过公共互联网所发出的流量的安全性产生极大影响。例如,WireGuard会使用Cryptography来保证流量不被拦截,相比诸如strongSwan这种IPSec实现,可以更好地减少漏洞和暴露,可信度更高。

多云部署

用来跨越多个地域的这种技术还可用于跨越多个云平台。例如,我们可以在另一个云平台的网络边界内部署一个路由器实例,并将其绑定到该实例本地且由云提供商提供的VPC中。通过在路由器之间使用WireGuard隧道将不同云提供商的网络桥接在一起,这种做法对于专门在私有网络中保持隔离的服务往往能起到很好的效果。

总结

在设计自己的私有网络时,有很多工具可供我们使用,这样做的收益往往超过了所带来的复杂性。如果应用程序和用户数都在快速增长,妥善设计的环境将有助于降低大部分用户可能遇到的延迟,从而极大改善用户体验。另外,额外的容错能力也有助于改善服务的可靠性,并改善服务的可用性和可访问性。

通过上述方法,我们已经可以借助VLAN将应用快速部署到多个区域,从而更好地从现代化云平台的分布式架构中获益。以Akamai的Linode云平台为例,目前这个平台已经上线了26个核心云数据中心和超过4100个边缘计算节点,遍布全球130多个国家和地区,随着时间推移,这个庞大的平台规模和覆盖面还将继续扩大。

而这种规模的覆盖面,为企业提供了大量可部署的位置、有吸引力的成本和高质量服务,帮助企业通过大规模部署和运营,借助更靠近边缘位置的云解决方案吸引和维系客户,在为客户营造低延迟高性能体验的同时更好地遵守数据驻留和主权法规,推动业务更稳妥地发展。

相关推荐
ZVAyIVqt0UFji7 分钟前
Reactflow图形库结合Dagre算法实现函数资源关系图
开发语言·前端·javascript·ecmascript
ikkkkkkkl10 分钟前
深述C++模板类
开发语言·c++
网安_秋刀鱼10 分钟前
PHP代码审计 --MVC模型开发框架&rce示例
开发语言·web安全·网络安全·php·mvc·1024程序员节
威威猫的栗子21 分钟前
Python Turtle绘图:重现汤姆劈树的经典瞬间
开发语言·python
沙度灬24 分钟前
python之sklearn--鸢尾花数据集之数据降维(PCA主成分分析)
开发语言·python·sklearn
Theodore_102240 分钟前
7 设计模式原则之合成复用原则
java·开发语言·jvm·设计模式·java-ee·合成复用原则
枫__________41 分钟前
kotlin 协程 job的cancel与cancelAndJoin区别
android·开发语言·kotlin
Peter_chq42 分钟前
【计算机网络】HTTP协议
linux·c语言·开发语言·网络·c++·后端·网络协议
武子康1 小时前
Java-05 深入浅出 MyBatis - 配置深入 动态 SQL 参数、循环、片段
java·sql·设计模式·架构·mybatis·代理模式
祁许1 小时前
【Golang】手搓DES加密
开发语言·golang·密码学