速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

构建健壮的混合云网络——BJS DX+VPN 篇

  • 2019-11-19
  • 本文字数:4502 字

    阅读完需:约 15 分钟

构建健壮的混合云网络——BJS DX+VPN篇

背景介绍:


近年来,随着公有云的普及,一方面,越来越多的用户选择利用公有云在弹性、灵活性等方面的优势,在云上部署新的应用系统,另一方面,大量的企业有很多现有的本地基础设施投资,所以企业上云的过程并不是一触而就的,期间势必存在云应用与本地数据中心应用并存的局面,为了更好的融合云与本地数据中心的应用环境,实现整体应用系统的稳定性和高可用性,构建一个健壮的混合云网络至关重要。


在 AWS 上,用来连接 AWS 与本地数据中心的方式主要有以下 3 种:


  1. 纯 VPN 组网

  2. 纯专线组网

  3. VPN 与专线的混合组网


其中,对于 AWS 中国区来讲,由于 AWS 自身的 VPN 服务 VGW 目前尚未落地,客户急需要一个替代方案,能够达到类似于 VGW 的冗余及故障切换功能。


本篇主要讲述第三种组网方式,着眼点在于如何实现混合云网络的健壮性及故障自愈。


此外笔者始终认为“Network is not just ping success”,尤其对于大型企业来说,网络流量的监控,故障事件的告警,日志的搜集检索等功能并非可选项,所以本篇也会顺带介绍如何在 AWS 云上实现这些功能。


对于第一,第二种组网方式的高可用实现,请参考:


《构建健壮的混合云网络——BJS VPN 篇》


《构建健壮的混合云网络——BJS DX 篇》


注意:本篇以 AWS 中国区 VGW 尚未落地为前提,VPN 部分以开源软件实现,但应用场景并不仅限于 AWS 中国区,如何客户需要一些 VGW 暂时无法满足的功能,同样可以在 AWS Global 利用本篇搭建符合自身需求的解决方案,具体可能的需求包括但不限于:


  1. 需要使用 VGW 暂时不支持的加解密算法

  2. 需要使用 VGW 暂时不支持的 hash 算法

  3. 需要使用证书认证

  4. All in one 解决方案,VPN 设备除了提供 VPN 功能外,还需要提供防火墙,NAT 等功能


拓扑图:



对于 DX 与 VPN 互备的场景,有如下几种情况:


  1. 1 条 DX+1 条 VPN

  2. 2 条 DX+1 条 VPN

  3. 1 条 DX+2 条 VPN

  4. 2 条 DX+2 条 VPN


对于 1,2 两种场景下,可以简单地通过调整 Private-1,Private-2 的路由表实现 AWS 侧的主备,即:流量优先选择 DX 专线,在专线故障时切换到 VPN 链路。


启用路由传递,路由表中会出现一条 10.10.0.0/16,target 为 VGW 的路由



设置一条静态路由 10.0.0.0/8,target 为 VPN 设备的 eni



由于路由最长匹配的原则,默认去往本地站点 10.10.0.0/16 的流量会通过 VGW 走专线,当专线发生故障的时候,10.10.0.0/16 的路由不会传递进入路由表,此时 10.0.0.0/8 的路由生效,流量切换到 VPN 链路。


对于 3,4 两种场景下,无法通过上述方式在两条 VPN 链路之间切换,需要部署拓扑图中的 monitor 设备来监控 DX 和 VPN 链路及 VPN 设备的健康状态并实现链路切换。


本例主要介绍 monitor 及 Strongswan 设备上的脚本功能,及如何与监控,告警相结合。


VPC 基本配置,DX 基本配置,Strongswan 配置及本地站点切换方式请参考:


《构建健壮的混合云网络——BJS VPN 篇》


《构建健壮的混合云网络——BJS DX 篇》


  1. 链路切换逻辑:



当专线链路正常时,设置服务器的路由指向 VGW,流量通过专线传输,当监测到专线故障时,将服务器路由指向相同 AZ 中的 Strongswan,并且开始监测 Strongswan 实例及 VPN 链路的健康状态,当一条 VPN 链路发生故障时,切换相应流量跨 AZ 传输给另一个 AZ 中的 Strongswan,当其中一个 AZ 的 Strongswan 发送故障时,切换流量的同时,通过 stop/start 该 Strongswan 恢复实例。


  1. 除了链路切换功能外,通过 monitor 及 Strongswan 上运行脚本能实现故障告警,VPN 流量统计及事件日志收集检索功能:



SNS 邮件及短信告警:




CloudWatch 针对 VPN 流量监控:



Elasticsearch & Kibana 做事件日志收集及检索:



可以针对 site,dx,vpn 做检索:





所有脚本可以从如下的 github 上下载得到:



  1. 脚本功能说明:


3.1 monitor 实例上运行的脚本:


monitor.sh:


  1. 实现 DX 链路,VPN 链路及 VPN 设备的健康检测并修改服务器路由切换流量

  2. 发现故障后,产生告警通知,通过 SNS 服务邮件及短信通知相关运维人员

  3. 本地产生故障日志,通过 logstash 输出到 Elasticsearch 服务存储


注:SNS 短信通知目前 BJS 暂不支持,Elasticsearch & Kibana 服务在 BJS 需要自己搭建


monitor 实例需要对路由表做操作,并与 SNS 服务交互,所以需要赋予相关的角色



其中,monitor policy 的配置如下:


{


"Version": "2012-10-17",


"Statement": [


{


"Action": [


"ec2:DescribeInstances",


"ec2:CreateRoute",


"ec2:ReplaceRoute",


"ec2:StartInstances",


"ec2:StopInstances"


],


"Effect": "Allow",


"Resource": "*"


}


]


}


3.2 Strongswan 实例上运行的脚本:


tunnel_init.sh:创建 tunnel 接口及路由相关流量到 tunnel 口


traffic_monitor.sh:收集进出 tunnel 口的 VPN 流量统计信息,通过自定义 metric 发送到 CloudWatch 中,实现 VPN 流量的监控


ipsec.conf/ipsec.secrets 配置文件:Strongswan 配置文件,建立 ipsec vpn 隧道


Strongswan 实例需要收集 VPN 流量信息并与 CloudWatch 交互,所以需要赋予相关的角色



  1. 脚本使用方法:


monitor.sh:运行在 monitor 实例上,monitor 实例需要拥有操控路由表,SNS 等


monitor.sh 的如下脚本语句需要做相应的修改


VPN_ID1="i-0e1466e8a5dd4892c"


VPN_ID2="i-0430fe110cdec5835"


VGW_ID="vgw-078bcc55"


VPN_RT_ID1="rtb-468f5222"


VPN_RT_ID2="rtb-4b8f522f"


DX_IP="10.10.3.100"


Remote_IP1="169.254.100.1"


Remote_IP2="169.254.200.1"


logstash_site="Singapore"


litterbin=$(aws sns publish --region ap-southeast-1 --topic-arn "arn:aws:sns:ap-southeast-1:93870664XXXX:DCI-Status" --subject "Status of DCI between Singapore and Ireland Changed!" --message file://logfile)


litterbin=$(aws sns publish --region ap-southeast-1 --phone-number "+861860135XXXX" --message file://logfile)


其中 VPN_ID1,VPN_ID2 分别为 Strongswan-1,Strongswan-2 的 instance id,VGW_ID 为 VGW 的 id,VPN_RT_ID1,VPN_RT_ID2 分别为 Private-1,Private-2 关联的路由表 id,DX_IP 为 DX 链路的检测 ip,通常为专线提供商 MPLS VPN 网络的 PE 设备或者是本地站点的出口路由器公网 ip,Remote_IP1,Remote_IP2 分别为本地站点两条 VPN 的隧道口 ip,logstash_site 为 AWS 站点标示,该值会体现在告警及日志中,用于区分多个 AWS 站点。


–region,–topic-arn,–phone-number 根据需要修改,其中 SNS 的 topic 需要事先创建并且通过相关邮箱订阅来接收消息。


所有事件日志会先写入本地/tmp/logstash.txt 文件中,通过 logstash 上传给 elasticsearch。


修改/etc/logstash/conf.d/logstash.conf


input {


file {


path => "/tmp/logstash.txt"


codec => json


}


}


output {


elasticsearch {


hosts => "http://search-test-cfwkwatg5unnpsgvbd5lyruquy.ap-southeast-1.es.amazonaws.com"


index => "XXXX"


}


}


可以设置/etc/rc.d/rc.local 文件,使 monitor 实例开机运行 monitor.sh 脚本


vpn_monitor.sh:运行在 Strongswan 实例上,创建 VPN 隧道接口及相关路由


traffic_monitor.sh:运行在 Strongswan 实例上,收集隧道接口的流量信息并以自定义 metric 的方式传输给 CloudWatch 服务


可以设置/etc/rc.d/rc.local 文件,使 Strongswan 实例开机运行 vpn_monitor.sh 和 traffic_monitor 脚本


作者介绍:


余骏


亚马逊 AWS 解决方案架构师,负责基于 AWS 的云计算方案架构的咨询和设计,同时致力于 AWS 云服务在国内的应用和推广。在加入 AWS 之前,在思科中国担任系统工程师,负责方案咨询和架构设计,在企业私有云和基础网络方面有丰富经验。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/hybrid-bjs-dx-vpn/


2019-11-19 08:00913

评论

发布
暂无评论
发现更多内容

30 秒!用通义灵码画 SpaceX 星链发射流程图

阿里云云效

阿里云 云原生

一文读懂Pencils Protocol的Auction产品,以及其背后的价值支撑

加密眼界

如何快速制作精美ppt图表?详细的保姆级教程来了!

职场工具箱

效率工具 职场 PPT 可视化分析 AI生成PPT

PHP通过pem文件校验签名异常

百度搜索:蓝易云

项目变更管理必备技巧:4大实践策略助力成功

爱吃小舅的鱼

项目管理 项目变更 项目变更管理

鸿蒙NEXT开发案例:光强仪

zhongcx

php循环读取txt里面关键词并按页数

百度搜索:蓝易云

原生鸿蒙政务行业应用开发模板上线,近200个政务服务应用已上架

最新动态

全球司库|规划与创新创景:引领业务、高效运营、战略增值

用友智能财务

金融 科技 企业数智化 司库

30 秒!用通义灵码画 SpaceX 星链发射流程图

阿里巴巴云原生

阿里云 云原生

双十一企业协作效率再升级!华为云Flexus版云会议299元_年起

轶天下事

革新农业未来!Dimitra生态币价双双腾飞在即

股市老人

哪些技术项目管理工具最适合开发团队?9大推荐

爱吃小舅的鱼

技术项目管理工具

MySQL修改时间添加时间自动更新

百度搜索:蓝易云

重新理解RocketMQ Commit Log存储协议

百度搜索:蓝易云

NocoBase 本周更新汇总:提升工作流易用性

NocoBase

开源 低代码 零代码 无代码 版本更新

润开鸿骆敏清:软件定义新“智” 硬件,以开源鸿蒙发行版驱动行业顶层创新

科技热闻

多源异构数据源融合怎么做?Join操作篇(2)

RestCloud

数据分析 join ETL 多源异构数据融合

双十一入手华为云Flexus云会议后,我总结了中小企业无法拒绝的3大优势

轶天下事

error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413解决方案

百度搜索:蓝易云

双十一轻松实现云上高效沟通!华为云Flexus云会议实测体验领先

轶天下事

《Django 5 By Example》阅读笔记:p54-p75

codists

Python django

vLLM×Milvus:如何高效管理GPU内存,减少大模型幻觉

Zilliz

Milvus LLM vLLM PagedAttention

七招提升工作效率

俞凡

生产力

极速启动,函数计算弹性降本能力再升级

阿里巴巴云原生

阿里云 云原生 函数计算

可能是全网第一个MySQL Workbench插件编写技巧

LLLibra146

Python MySQL

PHP中哪个框架最适合做API?

科普小能手

php API PHP框架 PHP开发 API 接口

双十一低成本上车!详谈华为云Flexus云会议为我们中小企业带来了什么

轶天下事

为中小企业量身定制的云会议!华为云Flexus版云会议亮相828

轶天下事

一文读懂Pencils Protocol的Auction产品,以及其背后的价值支撑

大瞿科技

一文读懂Pencils Protocol的Auction产品,以及其背后的价值支撑

股市老人

构建健壮的混合云网络——BJS DX+VPN篇_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章