实验摘要:

1>Windows Server软路由器静态路由设置 [难度★复杂度★]
2>Edge Services Gateway边界服务网关部署 [难度★复杂度★]
3>动态路由实现 [难度★★复杂度★★★]

实际经验:

NSX内部是全新的三层地址,依靠逻辑交换机,DLR分布式逻辑路由器,ESG边界服务网关实现传统物理网络的三层(这些地址在外部没有网关和VLAN,只有外部现有的网络指向的路由)。

NSX上的逻辑交换机是其实是逻辑交换机下连接的虚拟机的网关,

NSX的逻辑交换机划分时,需至少三个提前规划段(APP服务器类虚拟机,web类虚拟机,DB类虚拟机等)再加上Transit上行接口等至少四个逻辑交换机

NSX在DLR分布式逻辑路由器上,首先添加四个接口,三个内部为上面APP,DB,WEB类交换机的的网关(X.X.X.254或1),一条上行链路为和ESG专用互联地址(1.1.1.10/24)

NSX在ESG边界服务网关上,首先设置一个内部接口同上为DLR+ESG专用互联段(1.1.1.15/16 主备),再添加一个上行物理接口(外部物理网络10.9.9.9/10)默认网关为外部物理网络网关10.9.9.254/1(服务器默认开,放行全部策略)

开始在DLR设置OSPF,首先在路由-全局配置设置默认网关(Transit链路上的ESG互联地址1.1.1.15),动态路由里面启用(路由器ID为ESG自身接口1.1.1.10/24),在OSPF上设置区域ID(80),设置接口映射的区域使用(80)-上行链路,启用OSPF服务(协议地址为上面互联地址段中未使用的空地址1.1.1.30)转发地址为上行链路的本身即DLR自身默认互联地址。在路由重新分发表选择静态及已连接保存,打开路由重新分发状态下的OSPF。注意每一步操作都需要发布。

开始在ESG配置OSPF,首先在路由-全局配置设置默认网关(UPlink链路上的VTEP上的外部网络地址网关10.9.9.254/1),动态路由里面启用(路由器ID为ESG自身uplink接口10.9.9.9),在OSPF上设置区域ID(80),设置接口映射的区域使用(80)-上行链路+内部链路,启用OSPF服务(无协议地址及转发地址配置),路由重新分发表选择静态及已连接保存,打开路由重新分发状态下的OSPF。注意每一步操作都需要发布。

最后是外部网络设备的路由指向,依据上述条件,需要把10.9.9.9指向全部的自定义NSX虚拟网的网关??? 或其他路由指向方法

正文:

上篇中,迷你SDDC环境已经实现了逻辑交换和分布式逻辑路由。通过在ESXI内核空间中创建一个DLR Instance,实现dev-web-tier、dev-app-tier和dev-db-tier三个逻辑网络的三层互访。
但是现在虚拟逻辑网络与外部物理网络之间缺少一个互通的桥梁,将物理网络与NSX SDN打通,实现真正意义上的软件定义数据中心网络基础架构。在今天的讨论中,我将向大家演示如何部署Edge Services Gateway和配置动态路由,实现整个迷你SDDC网络环境的最终拓扑。在本文的最后,JUMP代表的外部网络与Web01代表的逻辑网络之间将实现三层互访。

主题:迷你SDDC环境搭建

任务29:Windows Server软路由器静态路由

**
通过下图,各位可以看到逻辑网络与物理网络之间的边界是ESG设备;我们需要在ADDC、ESG和DLR上配置路由条目,才能实现今天讨论的目标。

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图1

在之前的文章“NSX控制平面和静态路由更新流程1” “NSX控制平面和静态路由更新流程2”中,我已经详细描述了NSX-V控制平面组件netcapd与DLR-CVM、DLR-Instance之间如何实现静态路由配置的下发;其中也提及NSX-V6.4版本支持两种动态路由协议,分别是BGP和OSPF。

但是基于Windows Server 2008R2的软路由器动态协议仅支持RIP,因此,我只能在“路由和远程访问”界面下配置静态路由,告知所有迷你SDDC环境外部网络,逻辑网络的路由该如何走。

在ADDC虚拟机的“路由和远程访问”界面,新建IPv4静态路由

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图2

新建一条10.0.10.0/24网络的静态路由,NH=172.20.12.100,这是将来ESG边界服务网关的上联地址

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图3

各位可以根据自己的喜好,选择是否将所有的逻辑网络目标全部以静态路由的形式发布

实际上,迷你SDDC环境最终想要呈现的3-Tier-App演示效果,是不需要在ADDC软路由器上添加任何静态路由的;因为外部用户只需要访问Web01和Web02两台服务器将来的Load Balance VIP地址,这个地址是172.20.12.200/24,是ADDC软路由器的直连网络,根本不需要配置任何路由条目;本文是为了更好的演示动态路由效果,因此特意添加这些路由条目

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图4

由于JUMP主机是我的台式机,只配置了一个172.20.9.150/24的地址,并没有配置网关,因此需要在命令行通过route add命令添加一条静态路由;

在尚未配置ESG的情况下,JUMP主机目前无法ping通dev-web-tier网络的Web01虚拟机地址

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图5

主题:迷你SDDC环境搭建

任务30:Edge Services Gateway的部署

接下来,我将演示如何部署一台ESG边界服务网关,这里我想强调四点:

一般来说,ESG和DLR-CVM均部署在边界集群,有时候边界集群和管理集群会合并

由于ESG相当于承接逻辑网络和物理网络的桥梁,因此承载ESG的边界集群主机必须要经过主机准备操作,安装NSX-ESX VIB

如果需要在ESG上启用有状态的服务,如NAT、Load Balancer、VPN等,ESG只能选择以HA方式提供高可用;不可以使用ECMP等价多路径

为了避免路由黑洞的情况发生,DLR-CVM与建立邻居关系的ESG虚拟机不应该放置在同一台ESXI主机上

上述四点是设计NSX时,必须要考量的内容,不过在我的迷你SDDC环境中,由于硬件资源有限,DLR-CVM和ESG虚拟机都只能部署在esxi-1a这台虚拟ESXI服务器上。

在NSX Edges页面,点击ADD,添加Edge Services Gateway

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图6

定义设备名称为dev-esg,勾选Deploy Edge Appliance VM

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图7

为ESG虚拟机操作系统管理员admin定义密码,同时开启SSH

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图8

选择由AT-Management and Edge Cluster下的主机esxi-1a承载dev-esg虚拟机

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图9

选择最小规模部署,只部署一台实例,不考虑HA冗余

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图10

与创建DLR-Instance实例一样,我们需要为dev-esg配置上联接口和内部接口:
上联接口:172.20.12.100/24
内部接口:10.0.100.1/29

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图11

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图12

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图13

定义dev-esg默认网关为172.20.12.1,该网关是ADDC软路由器的Physical接口地址

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图14

可以选择开启ESG的南北向防火墙,设置默认规则为放行
注意,这里的防火墙并不是NSX强大的分布式防火墙

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图15

确认各项参数设置无误后,退出向导;NSX Manager将通过vCenter的EAM,在esxi-1a这台服务器上创建一台dev-esg虚拟机

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图16

主题:迷你SDDC环境搭建

任务31:动态路由的实现

阶段1:DLR上配置BGP动态路由协议

由于部署ESG的过程,并不涉及任何动态路由协议的配置;因此目前并没有改变JUMP无法访问Web01的情况,反之亦然。

通过在ADDC上配置静态路由,外部网络已经了解到所有逻辑网络目标的下一跳地址是ESG的上联地址,即172.20.12.100/24;接下来,我将演示,如何配置dev-dlr与dev-esg之间的动态路由,最终实现迷你SDDC网络架构拓扑。

首先开始配置dev-dlr,在Routing路由设置下,找到Global Configuration全局设置,点击Dynamic Routing Configuration旁的Edit编辑按键,声明dev-dlr设备的Router ID

一般来说,选择Uplink地址作为该设备的Router ID

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图17

完成全局设置后,不要忘记Publish Changes,发布并生效更改

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图18

我选择BGP作为动态路由协议,因此进入BGP配置界面,点击Edit编辑

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图19

勾选Enable BGP,开启BGP动态路由协议,声明本地自治系统为65002

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图20

点击Neighbors邻居下方的绿色加号,添加邻居

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图21

添加dev-esg作为dev-dlr的邻居,地址为10.0.100.1,远端自治系统65001

这里有两个特别需要注意的设置,Forwarding Address转发地址和Protocol Address协议地址

转发地址,必须填写dev-dlr的Uplink地址,即10.0.100.2

协议地址,填写的是DLR-CVM的地址,即10.0.100.3

dev-esg与dev-dlr之间建立邻居关系,是10.0.100.1和10.0.100.3(DLR-CVM)之间建立邻居关系;由于dev-dlr的DLR-CVM上拥有所有DRL-Instance直连网络的地址(这一点,可以访问vCenter,查看DLR-CVM的网络摘要知晓),因此dev-esg在与DLR-CVM建立邻居关系后,可以学习到包括dev-web-tier在内的所有逻辑网络路由;

这里有一个问题值得探讨,DLR-CVM将自己的网络告知自己的邻居dev-esg的时候,路由条目会怎么写

在物理网络中,肯定是10.0.10.0/24 NH=10.0.100.3;如果是这样,dev-esg在收到外部网络目标地址是10.0.10.0/24的包时,将发往10.0.100.3,可这是一台DLR-CVM,是控制平面组件,并非DLR-Instance,数据转发平面组件。

事实上,DLR-CVM会告知dev-esg的路由条目是10.0.10.0/24 NH=10.0.100.2,会用自己的转发地址替换协议地址
🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图22

发布更改,完成BGP动态路由协议的设置

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图23

最后不要忘记,进入Route Redistribution,配置路由重分发

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图24

激活BGP协议的重分发

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图25

将直连的网络重分发给BGP邻居,即dev-web-tier、dev-app-tier、dev-db-tier和dev-transit四个直连的逻辑网络

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图26

不要忘记发布更改,重要的事情说三遍!!!

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图27

动态路由协议邻居关系的建立是双向的,在完成dev-dlr上的BGP配置后,还需要在dev-esg上配置

主题:迷你SDDC环境搭建

任务31:动态路由的实现

阶段2:ESG上配置BGP动态路由协议

在Edge上配置BGP动态路由协议的操作步骤,与在DLR上的步骤几乎一样,这里就不重复赘述了,请各位直接浏览步骤截图。

两个需要注意的地方是:自治区域和邻居地址是相反的,and ESG没有所谓的协议地址和转发地址区分

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图28

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图29

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图30

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图31

为了演示效果,我首先只勾选Connected,即直连网络

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图32

在完成dev-esg的动态路由协议配置后,我在Web01虚拟机上,尝试ping 172.20.12.1,即Physical网络的网关地址,可以看到Web01可以访问172.20.12.0/24网络,说明从源为dev-web-tier的包,通过dev-dlr、dev-esg的路由转发,可以到达ADDC这台软路由器;

但是,各位也能发现,为什么同样是ADDC这台软路由器上的模拟物理网络接口地址,Web01依旧无法访问172.20.10.0/24这个网络呢?

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图33

主题:迷你SDDC环境搭建

任务31:动态路由的实现

阶段3:合理的重分发设置

答案其实很明显!

此时,如果管理员访问DLR-CVM查看路由表,一定可以发现以下路由条目:

172.20.12.0/24 NH=10.0.100.1

这是dev-esg的直连网络,在设置路由重分发的时候,我在dev-esg上只勾选了直连网络,因此dev-esg一定会将直连的172.20.12.0/24路由告知邻居DLR-CVM,因此在ESXI内核中运行的DLR-Instance可以正确路由目标地址是172.20.12.0/24的IP包;

同时,由于172.20.9.0/24,172.20.10.0/24,172.20.11.0/24并非dev-esg的直连网络,在DRL-CVM中一定没有这三个网络的路由条目,所以Web01虚拟机一定无法访问172.20.10.1这个地址。

如何来解决这个问题呢?

首先,在dev-esg上添加静态路由

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图34

添加以下三个目标网络的静态路由:
172.20.9.0/24 NH=172.20.12.1
172.20.10.0/24 NH=172.20.12.1
172.20.11.0/24 NH=172.20.12.1

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图35

第四次提起:不要忘记发布更改

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图36

在没有正确设置路由充分发之前,Web01依旧无法ping通172.20.10.1

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图37

此时,在dev-esg的路由重分发设置下,勾选Static routes,将静态路由条目重分发给BGP邻居

此时,在DLR-CVM的路由表中,就会出现:

172.20.9.0/24 NH=10.0.100.1

172.20.10.0/24 NH=10.0.100.1

172.20.11.0/24 NH=10.0.100.1

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图38

访问Web01的命令行,可以看到除了172.20.10.0/24网络以外,Web01已经可以正常访问JUMP主机地址,即172.20.9.150

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图39

反之,在JUMP主机,也可以正常访问Web01地址,即dev-web-tier网络

🚧0x14 一步步实现SDDC-Edge与动态路由实现 - 图40

经过上述演示内容,我已经成功将迷你SDDC环境物理网络与逻辑网络互通;在陆续完成计算、存储和网络设置后,这个迷你的软件定义数据中心已经具备了业务上线的条件。

在实际的生产环境中,用户采用VMware ESXi作为服务器虚拟化解决方案、VMware vSAN作为超融合解决方案、VMware NSX DC作为SDN解决方案也是私有云数据中心部署的一种选择;而这三者,又可以通过VMware vCenter Server实现统一的管理。

可以说,计算、存储、网络是数据中心基础架构的三个必备要素,是云之基石。

不过一步步实现SDDC系列的科普并没有到此结束,接下来的几篇分享中,我还将演示:

利用Edge Services Gateway实现负载均衡,部署In-line和One-arm两种类型的负载均衡器;

如何利用VMware vRealize Network Insight,帮助用户归纳、创建、优化分布式防火墙条目;

最近VMware发布了NSX-T2.4,个人认为这会是一个具有里程碑意义的版本;最近我也在学习这个“变形金刚”到底是如何实现多云网络连接的,届时也会与各位分享心得体会,敬请关注。