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

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

本文我们将告诉大家,在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多个国家和地区,随着时间推移,这个庞大的平台规模和覆盖面还将继续扩大。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/61380.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024强化学习的结构化剪枝模型RL-Pruner原理及实践

[2024] RL-Pruner: Structured Pruning Using Reinforcement Learning for CNN Compression and Acceleration 目录 [2024] RL-Pruner: Structured Pruning Using Reinforcement Learning for CNN Compression and Acceleration一、论文说明二、原理三、实验与分析1、环境配置在…

【SpringCloud详细教程】-02-微服务环境搭建

精品专题: 01.《C语言从不挂科到高绩点》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12753294.html?spm1001.2014.3001.5482 02. 《SpringBoot详细教程》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12789841.html?spm1001.20…

BOM的详细讲解

BOM概述 BOM简介 BOM(browser Object)即浏览器对象模型,它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是window。 BOM由一系列的对象构成,并且每个对象都提供了很多方法与属性 BOM缺乏标准&#xff…

Jenkins下载安装、构建部署到linux远程启动运行

Jenkins详细教程 Winodws下载安装Jenkins一、Jenkins配置Plugins插件管理1、汉化插件2、Maven插件3、重启Jenkins:Restart Safely插件4、文件传输:Publish Over SSH5、gitee插件6、清理插件:workspace cleanup system系统配置1、Gitee配置2、…

数据分析——Python绘制实时的动态折线图

最近在做视觉应用开发,有个需求需要实时获取当前识别到的位姿点位是否有突变,从而确认是否是视觉算法的问题,发现Python的Matplotlib进行绘制比较方便。 目录 1.数据绘制2.绘制实时的动态折线图3.保存实时数据到CSV文件中 import matplotlib.…

Unity 使用 ExcelDataReader 读取Excel表

文章目录 1.下载NuGet包2.通过NuGet包获取dll3.将dll复制unity Plugins文件夹下4.代码获取Excel表内容 1.下载NuGet包 通过NuGet下载: ExcelDataReaderExcelDataReader.DataSet离线下载方法 2.通过NuGet包获取dll 根据编译时程序集找到dll位置,找到与…

【vmware+ubuntu16.04】ROS学习_博物馆仿真克隆ROS-Academy-for-Beginners软件包处理依赖报错问题

首先安装git 进入终端,输入sudo apt-get install git 安装后,创建一个工作空间名为tutorial_ws, 输入 mkdir tutorial_ws#创建工作空间 cd tutorial_ws#进入 mkdir src cd src git clone https://github.com/DroidAITech/ROS-Academy-for-Be…

九、FOC原理详解

1、FOC简介 FOC(field-oriented control)为磁场定向控制,又称为矢量控制(vectorcontrol),是目前无刷直流电机(BLDC)和永磁同步电机(PMSM)高效控制的最佳选择…

Linux的指令(三)

1.grep指令 功能: 在文件中搜索字符串,将找到的行打印出来 -i:忽略大小写的不同,所以大小写视为一样 -n:顺便输出行号 -v:反向选择,就是显示出没有你输入要搜索内容的内容 代码示例: roo…

2025蓝桥杯(单片机)备赛--扩展外设之DS1302的使用(九)

1.DS1302数据手册的使用 a. DS1302 features: 工作电压:2V-5.5V 通信协议:3线接口(CE、IO、SCLK) 计时:秒、分、小时、月日期、月、星期、年(闰年补偿器期至2100年) b.原理图接线说明&#xff…

在CentOS中,通过nginx访问php

其实是nginx反向代理到php-fpm,就像nginx反向代理到tomcat。 1、安装PHP-FPM 1.1 安装 yum install php yum install php-fpm php-common 这里只安装了php-fpm,根据需要安装php模块,比如需要访问mysql则添加安装 php-mysqlnd。 1.2 启动…

Photino:通过.NET Core构建跨平台桌面应用程序,.net国产系统

一、Photino.NET简介: 最近发现了一个不错的框架 Photino.Net 一份代码运行,三个平台 windows max linux ,其中windows10,windows11,ubuntu 18.04,ubuntu 20.04 已测试均可以。mac 因为没有相关电脑没有测试。 github:https://github.com/t…

编辑器vim 命令的学习

1.编辑器Vim 1.vim是一个专注的编辑器 2.是一个支持多模式的编辑器 1.1见一见: vim 的本质也是一条命令 退出来:-> Shift:q 先创建一个文件 再打开这个文件 进入后先按 I 然后就可以输入了 输入完后,保存退出 按Esc --> 来到最后一…

Ubuntu22.04LTS 部署前后端分离项目

一、安装mysql8.0 1. 安装mysql8.0 # 更新安装包管理工具 sudo apt-get update # 安装 mysql数据库,过程中的选项选择 y sudo apt-get install mysql-server # 启动mysql命令如下 (停止mysql的命令为:sudo service mysql stop&#xff0…

Python爬虫:如何从1688阿里巴巴获取公司信息

在当今的数字化时代,数据已成为企业决策和市场分析的重要资产。对于市场研究人员和企业分析师来说,能够快速获取和分析大量数据至关重要。阿里巴巴的1688.com作为中国最大的B2B电子商务平台之一,拥有海量的企业档案和产品信息。本文将介绍如何…

10 基于深度学习的目标检测

首次完成时间:2024 年 11月 20 日 1. 使用OpenCV的dnn模块实现图像分类。 1)程序代码: import numpy as np import cv2# 解析标签文件 row open("model1/synset_words.txt").read().strip().split("\n") class_label …

Spring WebFlux 高级实战(3-2)

1、SpringBoot 使用 1.1、Spring Core 中的响应式 Spring 生态系统的核心模块是Spring Core 模块。Spring 5.x 引入对响应式流和响应式库的原生支持,其中,响应式库包含RxJava 1/2 和Project Reactor 3。 1.1.1、响应式类型转换支持 为了支持响应式流规…

河道水位流量一体化自动监测系统:航运安全的护航使者

在广袤的水域世界中,航运安全始终是至关重要的课题。而河道水位流量一体化自动监测系统的出现,如同一位强大的护航使者,为航运事业的稳定发展提供了坚实的保障。 水位传感器:负责实时监测河道的水位变化。这些传感器通常采用先进的…

RHCE的学习(21)

第三章 Shell条件测试 用途 为了能够正确处理Shell程序运行过程中遇到的各种情况,Linux Shell提供了一组测试运算符。 通过这些运算符,Shell程序能够判断某种或者几个条件是否成立。 条件测试在各种流程控制语句,例如判断语句和循环语句中…

uni-app Vue3语法实现微信小程序样式穿透uview-plus框架

1 问题描述 我在用 uni-app vue3 语法开发微信小程序时,在项目中使用了 uview-plus 这一开源 UI 框架。在使用 up-text 组件时,想要给它添加一些样式,之前了解到微信小程序存在样式隔离的问题,也在uview-plus官网-注意事项中找到…