出海第一步:搞定业务系统的多区域部署
出海的企业越来越多,他们不约而同开始在全球范围内部署应用程序。这样做的原因有很多,例如降低延迟,改善用户体验;满足一些国家或地区的数据隐私法规与合规要求;通过在全球范围内部署应用程序来提高容灾能力和可用性;更好地覆盖不同地区的市场,并提供针对当地文化和语言的本地化体验……
本文我们将告诉大家,在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多个国家和地区,随着时间推移,这个庞大的平台规模和覆盖面还将继续扩大。
而这种规模的覆盖面,为企业提供了大量可部署的位置、有吸引力的成本和高质量服务,帮助企业通过大规模部署和运营,借助更靠近边缘位置的云解决方案吸引和维系客户,在为客户营造低延迟高性能体验的同时更好地遵守数据驻留和主权法规,推动业务更稳妥地发展。
相关文章:

出海第一步:搞定业务系统的多区域部署
出海的企业越来越多,他们不约而同开始在全球范围内部署应用程序。这样做的原因有很多,例如降低延迟,改善用户体验;满足一些国家或地区的数据隐私法规与合规要求;通过在全球范围内部署应用程序来提高容灾能力和可用性&a…...

二手手机回收小程序,一键便捷高效回收
随着科技的不断升级,智能手机也在快速进行更新换代,出现了大量的闲置手机,这为二手手机市场提供了巨大的发展空间! 经过手机回收市场的快速发展,二手手机回收已经成为了消费者的新选择,既能够减少手机的浪…...
开源模型应用落地-Qwen2.5-7B-Instruct与vllm实现离线推理-性能分析(四)
一、前言 离线推理能够在模型训练完成后,特别是在处理大规模数据时,利用预先准备好的输入数据进行批量推理,从而显著提高计算效率和响应速度。通过离线推理,可以在不依赖实时计算的情况下,快速生成预测结果,从而优化决策流程和提升用户体验。此外,离线推理还可以降低云计…...

深入解析小程序组件:view 和 scroll-view 的基本用法
深入解析小程序组件:view 和 scroll-view 的基本用法 引言 在微信小程序的开发中,组件是构建用户界面的基本单元。两个常用的组件是 view 和 scroll-view。这两个组件不仅功能强大,而且使用灵活,是开发者实现复杂布局和交互的基础。本文将深入探讨这两个组件的基本用法,…...

【汇编语言】转移指令的原理(三) —— 汇编跳转指南:jcxz、loop与位移的深度解读
文章目录 前言1. jcxz 指令1.1 什么是jcxz指令1.2 如何操作 2. loop 指令2.1 什么是loop指令2.2 如何操作 3. 根据位移进行转移的意义3.1 为什么?3.2 举例说明 4. 编译器对转移位移超界的检测结语 前言 📌 汇编语言是很多相关课程(如数据结构…...

opencv-python 分离边缘粘连的物体(距离变换)
import cv2 import numpy as np# 读取图像,这里添加了判断图像是否读取成功的逻辑 img cv2.imread("./640.png") # 灰度图 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 高斯模糊 gray cv2.GaussianBlur(gray, (5, 5), 0) # 二值化 ret, binary cv2…...
机器学习杂笔记1:类型-数据集-效果评估-sklearn-机器学习算法分类
文章目录 1.类型2.数据集3.效果评估4.sklearn5.sklearn机器学习算法七种数据分析方法1.对比分析2.细分分析3.A/B测试 (单一变量分析)4.漏斗分析5.留存分析6.相关分析7.聚类分析 1.类型 【1】监督学习:从成对的已经标记好的输入和输出经验数据…...

Django+Nginx+uwsgi网站使用Channels+redis+daphne实现简单的多人在线聊天及消息存储功能
网站部署在华为云服务器上,Debian系统,使用DjangoNginxuwsgi搭建。最终效果如下图所示。 一、响应逻辑顺序 1. 聊天页面请求 客户端请求/chat/(输入聊天室房间号界面)和/chat/room_name(某个聊天室页面)链…...

数据结构在二叉树Oj中利用子问题思路来解决问题
二叉树Oj题 获取二叉树的节点数获取二叉树的终端节点个数获取k层节点的个数获取二叉树的高度检测为value的元素是否存在判断两颗树是否相同判断是否是另一棵的子树反转二叉树判断一颗二叉树是否是平衡二叉树时间复杂度O(n*n)复杂度O(N) 二叉树的遍历判断是否是对称的二叉树二叉…...

华为openEuler考试真题演练(附答案)
【单选题】 以下关于互联网的描述,哪个选项是正确的? A:Nginx 在万维网中可以作为 ftp 服务器的反向代理,并与ftp服务器的数量--对应 B:Nginx 在互联网中可以作为 web服务器端,成为万维网的一个节点 C:互联网上的的资源需使用 Nginx进行七层…...

生成自签名证书并配置 HTTPS 使用自签名证书
生成自签名证书 1. 运行 OpenSSL 命令生成证书和私钥 在终端中输入以下命令,生成自签名证书和私钥文件: sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout self_signed.key -out self_signed.pem-x509:生成自签名证书。…...
物联网核心安全系列——智能汽车安全防护的重要性
汽车行业引入的智能硬件技术已经越来越多,早先设计者更多考虑到的是硬件成本和软件用户体验等因素,但随着国外两位技术人员成功实现远程控制汽车的视频曝出后,智能汽车安全便成为了一个热议话题。 汽车总线架构及原理比较复杂,日…...
数据库视图
数据库视图(Database View)是数据库中的虚拟表,其内容由查询定义,通常用来简化复杂的查询或提供安全访问数据。视图并不存储实际数据,而是将查询的结果集作为一个“虚拟表”呈现。用户通过查询视图,就可以看…...

从传统分析到智能问数,打造零门槛数据分析方案
众所周知,传统报表和自助分析工具存在使用门槛,且早期智能分析不够智能。随着AI技术发展,现有数据应用模式难以满足多样化、快速变化的需求,数据驱动、敏捷决策、精细运营成为了各大企业的新课题。 01企业数据应用挑战 业务人员的…...
java 设计模式 模板方法模式
模板方法模式(Template Method Pattern)是一种行为型设计模式,它在父类中定义一个算法的框架,允许子类在不改变算法结构的情况下重写算法的某些特定步骤。这种模式非常适合于那些有一定公共流程,但某些步骤需要子类定制…...

基于UDP和TCP实现回显服务器
目录 一. UDP 回显服务器 1. UDP Echo Server 2. UDP Echo Client 二. TCP 回显服务器 1. TCP Echo Server 2. TCP Echo Client 回显服务器 (Echo Server) 就是客户端发送什么样的请求, 服务器就返回什么样的响应, 没有任何的计算和处理逻辑. 一. UDP 回显服务器 1. UD…...

在 CentOS 系统上直接安装 MongoDB 4.0.25
文章目录 步骤 1:配置 MongoDB 官方源步骤 2:安装 MongoDB步骤 3:启动 MongoDB 服务步骤 4:验证安装步骤 5:可选配置注意事项 以下是在 CentOS 系统上直接安装 MongoDB 4.0.25 的详细步骤: 步骤 1&#x…...
Android和IOS的区别
一、系统区别 1、系统和框架的区别 (1)Android系统的底层建立在Linux系统之上;而ios基于UNIX系统 Android完全开放,iOS完全封源开发 (2)编程语言:Android的编程语言是Java和KotLin;而ios的则为O…...

数据库基础(MySQL)
1. 数据库基础 1.1 什么是数据库 存储数据用文件就可以了,为什么还要弄个数据库? 文件保存数据有以下几个缺点: 文件的安全性问题文件不利于数据查询和管理文件不利于存储海量数据文件在程序中控制不方便 数据库存储介质: 磁盘内存 为…...

Vue前端开发子组件向父组件传参
在父组件中,如果需要获取子组件中的数据,有两种方式,一种是在子组件中自定义事件,父组件绑定该事件,当触发自定义事件时,向父组件传入参数;另一种是先通过ref属性给子组件命名,然后在父组件中就…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...

聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...
[USACO23FEB] Bakery S
题目描述 Bessie 开了一家面包店! 在她的面包店里,Bessie 有一个烤箱,可以在 t C t_C tC 的时间内生产一块饼干或在 t M t_M tM 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC,tM≤109)。由于空间…...