企业与云VPN组网自动化实践

2018 年 7 月 7 日 FreeBuf

伴随着不断出现的外部,内部挑战,我们将业务向公有云迁移。随着时间的推移,逐渐形成了混合云架构。


混合云架构需要组建虚拟专用网络,实现资源互通,满足加密传输要求。混合云网络连接类型总结如下:

1、VPCVPC(同一个云服务商)

2、VPCVPC(不同云服务商之间)

3、 企业本地网络到VPC

常见的组网方案有:专线,VPNSD-WAN。但也会带来以下问题:

首先是VPC的互通。例如,将阿里云北京的VPC资源接入AWS新加坡的VPC。通常我们使用VPN软件解决,但繁琐的CLI和不同云服务商不同工作流的部署方法,会造成在基础设施上花费太多的精力。

其次是VPC和企业私网互通。例如,将阿里云杭州的VPC基础设施接入到北京的数据中心。传统的连接方式依赖硬件,需要改动网络,部署花费几天或几周的时间。

最后则是快速提供网络服务能力。业务需求是更快的发布应用程序。拼凑使用多种连接方式组网,会使网络架构臃肿,增加复杂度。快,敏捷将是难以实现的。

基于以上问题。如何减少网络改动,采用一致的工作流程,简化加密隧道的创建,删除和管理?我们结合容器,探究出了一种自动化实现方案。

从图中可以看出,我们参考了SDN软件架构设计,将VPN网关的功能抽象出来逻辑分层,实现集中管理。

VPN组网自动化方案需要以下3个组件:

1、VPN容器

部署在VPC或本地网络

处理IPSec流量

通过WebSocket与控制器连接

2、控制器

通过Restful API完成指定隧道的创建,删除,管理

通过云服务商API完成VPC的路由配置

通过Restful APIWeb Client通信

3、Web Client

配置管理界面

连接可视化

各组件连接关系如下图:

云与云创建VPC加密对等连接的过程及其实现如下:

1、用户在管理界面点击需要互通的网络,Web Client向控制器发送创建连接请求,控制器向指定VPN容器下发IPSec配置,同时在VPC路由表添加到达对端网络的路由条目。配置完成后拉起隧道,两端网络完成互通。

2、如果遇到两端网络VPC CIDR冲突的情况,可以通过管理界面修改指定连接的CIDRWeb Client向控制器发送修改CIDR请求,控制器向VPN容器下发新的IPSec配置,同时更新VPC路由条目。完成后重新拉起隧道。

3、如果网络环境发生变化,例如云服务器的公网IP变更,监控服务会通知容器自动更新IPSec配置,同时更新VPC路由条目,重新拉起隧道。


以上就是系统的工作原理。从中我们可以看出,系统已经很好地解决了传统连接方式所遇到的问题:

1、控制器通过VPN容器API接口完成IPSec连接配置,使用云服务商API接口完成VPC路由配置,从而实现了自动化。这种设计的优势在于可以消除复杂度,不需要网络工程师,任何人都可以运行。

2、对于企业和云网络互通需求,由运行在本地数据中心的VPN容器向运行在云网络的VPN容器发起IPSec连接,这样设计是为了避免对企业网络进行改动,减少对硬件设备的依赖,适应主流的互联网接入方式。

3、采用容器化的部署方式,简化部署过程。由于采用了集中管理,分布运行的设计,可以满足随处运行,可持续升级的需求。

为了提高使用体验,我们在设计与实现时考虑到了很多细节,在这里拿出来与大家分享。

1、容器与控制器的通信协议选择

在选择容器与控制器通信协议时,考虑了以下几点:

A、控制器能及时联系到容器:用户在Web界面的操作(例如下发配置信息或查询运行状态数据),得到及时响应;

B、尽可能减少对运行环境的要求,比如开放端口、配置防火墙等;

C、适应运行环境的各种Internet接入方式,包括直接路由、NAT、Proxy。

基于上述约束,初步确定了容器作为通讯的客户端,控制器作为通讯的服务端。

在具体通信协议的选择时,考虑了MQTT和WebSocket。两者比较,前者有成熟的开源组件,用很少的开发就可以实现设备接入、消息路由、数据存储、自动订阅 、状态监控等功能;而后者实现相同的功能,需要额外的工作量。但是考虑到WebSocket基于HTTP/HTTPS,对防火墙更友好,我们选择了WebSocket作为网关与控制器的通信协议。网关作为WebSocket客户端,控制器作为WebSocket服务端,这样实现了用户侧的防火墙零配置,而基于WebSocket的长连接又可以满足通信的实时性。

2、如何简化部署及使用?

在用户部署对等网络时,我们希望能够将用户的操作最简化,不需要去查VpcID、RouterTableID、CidrBlock等等信息,只需要输入容器的公网IP地址。为实现这个目标,我们充分利用云厂商的API来获取配置所需的参数、信息,再通过API完成VPC路由的配置。

各家公有云的实现不一样,API的表现也不一样。例如VPC路由配置API,有的厂商是同步操作,有的是异步操作。异步操作又间接限制并发请求,甚至对API调用间隔也产生了间接限制。我们对各家公有云厂商的API进行适配,最终实现配置简化的目标。

3、控制器的设计

控制器与容器的交互仅限于配置信息下发、运行状态查询等带外管理功能。网络之间的流量直接通过VPN容器建立起来的加密隧道传输,不经过控制器。考虑到控制器存在单点故障的可能性,控制器采用了多活集群设计,可以横向扩展,实现容器带外管理负载。

VPN组网自动化方案解决了几个问题:

快速组网:使用IPSec连接基础设施,在云与云,企业与云之间建立任意互联。在几分钟内,将资源连接到任何位置。

使用简化:用自动化工作流取代复杂的cli手动配置,让DevOps专注于核心业务,而不是基础设施。

网络改动少:适应原有网络,不对原有网络进行改动。

*本文作者:accesshub,转载请注明来自FreeBuf.COM

登录查看更多
1

相关内容

VPN(Virtual Private Network)虚拟专用网络,通过一个公用网络建立一条安全、稳定隧道。主要采用隧道技术、加解密技术、密钥管理技术和使用者与设备身份认证技术。
【干货书】现代数据平台架构,636页pdf
专知会员服务
253+阅读 · 2020年6月15日
华为发布《自动驾驶网络解决方案白皮书》
专知会员服务
125+阅读 · 2020年5月22日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
德勤:2020技术趋势报告,120页pdf
专知会员服务
190+阅读 · 2020年3月31日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
【德勤】中国人工智能产业白皮书,68页pdf
专知会员服务
303+阅读 · 2019年12月23日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
【数字化】制造业数字化转型的实战路线图
产业智能官
39+阅读 · 2019年9月10日
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
【CPS】CPS应用案例集
产业智能官
84+阅读 · 2019年8月9日
工行基于MySQL构建分布式架构的转型之路
炼数成金订阅号
15+阅读 · 2019年5月16日
浅谈 Kubernetes 在生产环境中的架构
DevOps时代
11+阅读 · 2019年5月8日
数据库之架构:主备+分库?主从+读写分离?
架构文摘
8+阅读 · 2019年4月23日
Kong 1.1 带来声明式配置与无数据库部署模式
开源中国
8+阅读 · 2019年3月28日
如何用GitLab本地私有化部署代码库?
Python程序员
9+阅读 · 2018年12月29日
一篇文章读懂阿里企业级数据库最佳实践
阿里巴巴数据库技术
5+阅读 · 2017年12月20日
【AI说】揭秘京东实时数据仓库背后的神秘力量—JDQ
Advances in Online Audio-Visual Meeting Transcription
Arxiv
4+阅读 · 2019年12月10日
VIP会员
相关VIP内容
【干货书】现代数据平台架构,636页pdf
专知会员服务
253+阅读 · 2020年6月15日
华为发布《自动驾驶网络解决方案白皮书》
专知会员服务
125+阅读 · 2020年5月22日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
德勤:2020技术趋势报告,120页pdf
专知会员服务
190+阅读 · 2020年3月31日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
【德勤】中国人工智能产业白皮书,68页pdf
专知会员服务
303+阅读 · 2019年12月23日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
相关资讯
【数字化】制造业数字化转型的实战路线图
产业智能官
39+阅读 · 2019年9月10日
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
【CPS】CPS应用案例集
产业智能官
84+阅读 · 2019年8月9日
工行基于MySQL构建分布式架构的转型之路
炼数成金订阅号
15+阅读 · 2019年5月16日
浅谈 Kubernetes 在生产环境中的架构
DevOps时代
11+阅读 · 2019年5月8日
数据库之架构:主备+分库?主从+读写分离?
架构文摘
8+阅读 · 2019年4月23日
Kong 1.1 带来声明式配置与无数据库部署模式
开源中国
8+阅读 · 2019年3月28日
如何用GitLab本地私有化部署代码库?
Python程序员
9+阅读 · 2018年12月29日
一篇文章读懂阿里企业级数据库最佳实践
阿里巴巴数据库技术
5+阅读 · 2017年12月20日
【AI说】揭秘京东实时数据仓库背后的神秘力量—JDQ
Top
微信扫码咨询专知VIP会员