生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

基于 AWS 的企业 IT 网络架构

  • 2019-12-11
  • 本文字数:3220 字

    阅读完需:约 11 分钟

基于 AWS 的企业 IT 网络架构

背景

自 2006 年 Amazon.com 推出 S3 服务以来,云计算市场已经发展了十多年。越来越多的开发者,初创公司和企业开始拥抱云计算。AWS 的云服务给企业赋能:敏捷业务开发,按需供给 IT 资源,优化 IT 成本,加速创新,并让快速全球部署成为可能[1]。



目前已经有很多企业客户采取了尽在云端或云优先的策略,把基础架构全部或大部分迁移到 AWS 云端。典型的架构是这样的:



很多承担业务负载的基础设施已经或正在从传统的 IDC 迁移到 AWS 云上。那么,企业自身的 IT 需求是否一样能享受 AWS 云的好处呢?在可预期的将来,云服务将像电一样成为标准的公共服务,IT 和业务基础设施全部在云端会变成趋势。企业的基础设施架构会变成下图的样子。



AWS Marketplace[2]已经在北京和宁夏区域上线。它提供了数量庞大的来自 AWS 合作伙伴的产品,包括安全、网络、存储、开发运营等等许多门类。购买,管理和部署这些软件变得像从应用市场下载一个 APP 到手机上一样简单。


对企业来说,上云能降低 IT 运维的压力。AWS Marketplace 进一步赋能,简化了管理和部署 IT 商业软件的过程。


接下来,我将展示 IT 上云的可能的几种基础架构形式。

基于虚拟桌面的解决方案


AWS 的虚拟桌面服务 WorkSpaces[3]已经在宁夏区域推出。企业可以在几分钟内预置桌面并快速扩展。WorkSpaces 消除了管理和运维虚拟桌面基础设施的复杂性,比传统的虚拟桌面方案更节省成本。


用户通过客户端(Mac,Windows,平板,甚至支持 Chrome 或 Firefox 的瘦客户端)远程登陆到 WorkSpaces,然后从这里访问云上的 IT 服务,或通过云端的出口访问 Internet。

基于 Proxy 的解决方案

有些企业可能暂时还不能把一些 IT 资源迁移到云上(比如目录服务等·),或者 IT 上云处于评估阶段。这种情况下,部分 IT 基础设施部署在云端,最终用户的终端仍然在办公室,采用 IT 的混合架构。


由于 VPC 的安全保护机制[4],网络流量的源 IP 地址或目标 IP 地址两者之一必须是 VPC 内部的有效 IP****地址,否则流量包将被丢弃。这样,来自企业的网络流量路由到云上再通过云上的网络出口访问 Internet 是不可行的。



解决办法就是把这个流量拆分成两部分:把来自企业的流量的目标 IP 地址变成 VPC 的有效地址,同时把流向 Internet 流量的源地址变成 VPC 的有效 IP 地址。



通常用设置代理服务器的方法就能实现这种流量拆分,不过代理服务器可能会有安全性和兼容性上的问题,有些客户端程序可能不支持代理服务器。它不能支持纯三层流量的代理,做高可用的方案会比较复杂。

隧道+NAT 方案


还有一种方案是结合隧道和 NAT 转换,通过隧道的方式把真实的目标 IP 地址封装起来,并在云上的软路由器内完成源地址的 NAT 转换。


接下来,我将在一个实验环境中对这个方案的细节进行展示。

隧道+NAT 方案实验配置


在这个实验里,AWS 北京区域用来模拟企业的物理 IDC,AWS 宁夏区域作为云,两个区域通过 VPC 对等[5]连接。北京区域的 client 要通过 VPC 对等连接到宁夏区域,并通过宁夏区域的 Internet 网关(IGW)访问 Internet。


实验中用到北京区的 2 个私有子网(无指向 IGW 的默认路由),宁夏区的 1 个公有子网(默认路由指向 IGW)。每个子网内各有一台可突增性能[6]的 T2.micro 类型的 EC2 实例,其中,router-inside 和 router-outside 在本实验中作为软件路由器,安装了 AWS Market Place 上的合作伙伴提供的镜像 VyOS[7]。VyOS 是一个基于 Linux 的开源的网络操作系统,支持基于软件的网络路由,防火墙和 VPN 等功能。


col 1col 2col 3col 4col 5
主机名区域IP****地址默认的下一跳路由器配置-
client北京192.168.3.111/24router-inside
router-inside北京192.168.4.195/24GRE
router-outside宁夏172.31.22.79/20IGWGRE, NAT


下图是 IP 包的源地址目标地址在传输过程中的变化示意图。



对于 router-inside 来说,它要做 IP 包转发,因此 EC2 设置中要禁用源/目标检查[8]。


对于 router-outside 来说,如果不做源地址 NAT 则流量会被丢弃。因为 IP 包的源地址不是宁夏区 VPC 内部的地址,目标地址也不是宁夏区 VPC 内部的地址。


宁夏区这里不能用 NAT Gateway 代替路由器的 NAT,因为它只对源地址属于本 VPC 的 IP 包进行地址转换[9]。


配置完成后,下一步是登陆到 client 来进行验证。因为 client 处于私有子网,不能直接登陆,需要从公有子网的一台实例跳转登陆。


在 client 上执行 traceroute,可以看到 IP 包经过 router-inside 和 router-outside,然后通过宁夏区的 IGW 传向 Internet。



下面是两个软路由器的详细设置:


Bash


vyos@router-inside:~$ show confinterfaces {    ethernet eth0 {        address dhcp    }    tunnel tun0 {        address 192.168.254.1/30        encapsulation gre        local-ip 192.168.4.195        remote-ip 172.31.22.79    }}protocols {    static {        route 0.0.0.0/0 {            next-hop 192.168.254.2 {            }        }        route 172.31.0.0/16 {            next-hop 192.168.4.1 {            }        }        route 192.168.0.0/21 {            next-hop 192.168.4.1 {            }        }    }}system {    host-name router-inside}vyos@router-inside:~$
复制代码


默认路由的下一跳是 GRE 隧道对端的 IP 地址 192.168.254.2,由路由器控制。


到北京 VPC 和宁夏 VPC 网段的下一跳是路由器 router-inside 所在子网(192.168.4.0/24)的默认网关 192.168.4.1,由 VPC 控制。


Bash


vyos@router-outside:~$ show confinterfaces {    ethernet eth0 {        address dhcp    }    tunnel tun0 {        address 192.168.254.2/30        encapsulation gre        local-ip 172.31.22.79        remote-ip 192.168.4.195    }}nat {    source {        rule 100 {            outbound-interface eth0            source {                address 192.168.0.0/16            }            translation {                address masquerade            }        }    }}protocols {    static {        route 192.168.0.0/21 {            next-hop 192.168.254.1 {            }        }        route 192.168.4.195/32 {            next-hop 172.31.16.1 {            }        }    }}system {    host-name router-outside}vyos@router-outside:~$
复制代码


对所有来自北京 VPC 的 IP 包进行了源地址 NAT,变成路由器的接口地址。


到北京 VPC 网段的下一跳是 GRE 隧道对端的 IP 地址 192.168.254.1,由路由器控制。


到路由器 router-inside 的下一跳是路由器 router-outside 所在子网(172.31.16.0/20)的默认网关 172.31.16.1,由 VPC 控制。

总结

本文介绍了企业通过 AWS 云构建 IT 基础环境的 3 种方法,并对基于隧道+NAT 的方法给出了利用 AWS Market Place 上的 VyOS 镜像进行实验的配置方法。

参考资料

  1. https://infrastructure.aws/

  2. https://www.amazonaws.cn/marketplace/help/

  3. https://www.amazonaws.cn/workspaces/

  4. https://aws.amazon.com/answers/networking/vpc-security-capabilities/

  5. https://docs.amazonaws.cn/vpc/latest/peering/what-is-vpc-peering.html

  6. https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/burstable-credits-baseline-concepts.html

  7. https://vyos.readthedocs.io/en/latest/about.html

  8. https://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/VPC_NAT_Instance.html#EIP_Disable_SrcDestCheck

  9. https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html


作者介绍:


!



### [](https://amazonaws-china.com/cn/blogs/china/tag/%E5%96%BB%E4%BA%AE/)
AWS解决方案架构师,负责AWS云计算方案的咨询、设计和架构评估。在运维,DevOPS和DBA方面有十余年经验,目前侧重于大数据领域的研究。
复制代码


本文转载自 AWS 技术博客。


原文链接:https://amazonaws-china.com/cn/blogs/china/enterprise-it-network-architecture-based-on-aws/


2019-12-11 15:24690

评论

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

简述 Linux I/O 原理及零拷贝(下) — 网络 I/O

Qunar技术沙龙

Linux TCP I/O DPDK 网络io

可视化全埋点系列文章之功能介绍篇

神策技术社区

程序员 代码 埋点 神策数据

构建可靠分布式架构的最佳方式,竟记在国内第一本“凤凰架构”上

Java~~~

Java 架构 面试 JVM 架构师

竟有阿里大牛用678页PDF只讲Java程序性能优化,除了干货就是干货

Java~~~

Java 架构 面试 JVM 调优

又快又稳!Alibaba出品Java性能优化高级笔记(全彩版)震撼来袭

Java~~~

Java 架构 jdk 面试 JVM

neo4j 图数据库基础

escray

学习 neo4j 8月日更

按下数字化转型快进键!DataPipeline与星环大数据平台完成产品兼容互认证

DataPipeline数见科技

吹爆!阿里高工携18位架构师耗时57天整合的1658页面试总结太香了

Java~~~

Java spring 架构 面试 JVM

Python Qt GUI设计:将UI文件转换为Python文件的三种妙招(基础篇—2)

不脱发的程序猿

Python qt GUI UI文件转换为Python文件

网络上数据通信过程

一个大红包

8月日更

fil挖矿怎么挖?fil挖矿成本是多少?

fil挖矿怎么挖 fil挖矿成本是多少

FabEdge快速安装指南,极速上手体验边缘集群

BoCloud博云

边缘计算 博云开源 FabEdge 技术干货

一个案例:论写作的重要性

非著名程序员

个人成长 写作 认知提升 8月日更

如何通过AI做智能化转型的一些思考

石云升

学习 AI 8月日更

腾讯WeTest压测大师通过中国计量科学研究院测试认证,获国家级权威认可

WeTest

Go- defer

HelloBug

defer Go 语言 代码追踪 记录函数参数和返回值

笔记-python面向对象

加里都好

Go- 递归函数

HelloBug

递归 Go 语言

Apache APISIX 社区周报 | 2021 8.16-8.22

API7.ai 技术团队

Apache 开源 APISIX 社区 社区周报

画15张图搞定MySQL InnoDB工作原理

Java MySQL 数据库 程序员 后端

Python代码阅读(第17篇):列表元素按位合并

Felix

Python 编程 Code Programing 阅读代码

Go- 闭包函数

HelloBug

Go- 函数执行时间

HelloBug

Go 语言 函数执行时间

Go- 可变参数函数

HelloBug

Go 语言 可变参数函数 空接口

5000字、12 连环炮、一张图快速搞定线程池

Java 架构 面试 后端 多线程

元宇宙系统|NFT游戏系统技术开发

薇電13242772558

区块链

高性能C++ HTTP客户端原理与实现

万俊峰Kevin

c++ workflow http client

智能语音技术:从哪儿来?往何处去?

安第斯智能云

深度学习 语音

解决生命科学研究痛点,北鲲云计算着力打造行业解决方案

北鲲云

架构实战营1期模块6作业——微服务架构

tt

架构实战营

3 分钟了解 JSON Schema

程序员鱼皮

Java json 数据库 大前端 后端

基于 AWS 的企业 IT 网络架构_文化 & 方法_AWS_InfoQ精选文章