正文:
上篇中,迷你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上配置路由条目,才能实现今天讨论的目标。
在之前的文章“NSX控制平面和静态路由更新流程1” “NSX控制平面和静态路由更新流程2”中,我已经详细描述了NSX-V控制平面组件netcapd与DLR-CVM、DLR-Instance之间如何实现静态路由配置的下发;其中也提及NSX-V6.4版本支持两种动态路由协议,分别是BGP和OSPF。
但是基于Windows Server 2008R2的软路由器动态协议仅支持RIP,因此,我只能在“路由和远程访问”界面下配置静态路由,告知所有迷你SDDC环境外部网络,逻辑网络的路由该如何走。
- 在ADDC虚拟机的“路由和远程访问”界面,新建IPv4静态路由
- 新建一条10.0.10.0/24网络的静态路由,NH=172.20.12.100,这是将来ESG边界服务网关的上联地址
- 各位可以根据自己的喜好,选择是否将所有的逻辑网络目标全部以静态路由的形式发布
- 实际上,迷你SDDC环境最终想要呈现的3-Tier-App演示效果,是不需要在ADDC软路由器上添加任何静态路由的;因为外部用户只需要访问Web01和Web02两台服务器将来的Load Balance VIP地址,这个地址是172.20.12.200/24,是ADDC软路由器的直连网络,根本不需要配置任何路由条目;本文是为了更好的演示动态路由效果,因此特意添加这些路由条目
- 由于JUMP主机是我的台式机,只配置了一个172.20.9.150/24的地址,并没有配置网关,因此需要在命令行通过route add命令添加一条静态路由;
- 在尚未配置ESG的情况下,JUMP主机目前无法ping通dev-web-tier网络的Web01虚拟机地址
主题:迷你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
- 定义设备名称为dev-esg,勾选Deploy Edge Appliance VM
- 为ESG虚拟机操作系统管理员admin定义密码,同时开启SSH
- 选择由AT-Management and Edge Cluster下的主机esxi-1a承载dev-esg虚拟机
- 选择最小规模部署,只部署一台实例,不考虑HA冗余
- 与创建DLR-Instance实例一样,我们需要为dev-esg配置上联接口和内部接口:
上联接口:172.20.12.100/24
内部接口:10.0.100.1/29
- 定义dev-esg默认网关为172.20.12.1,该网关是ADDC软路由器的Physical接口地址
- 可以选择开启ESG的南北向防火墙,设置默认规则为放行
注意,这里的防火墙并不是NSX强大的分布式防火墙
- 确认各项参数设置无误后,退出向导;NSX Manager将通过vCenter的EAM,在esxi-1a这台服务器上创建一台dev-esg虚拟机
主题:迷你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
- 完成全局设置后,不要忘记Publish Changes,发布并生效更改
- 我选择BGP作为动态路由协议,因此进入BGP配置界面,点击Edit编辑
- 勾选Enable BGP,开启BGP动态路由协议,声明本地自治系统为65002
- 点击Neighbors邻居下方的绿色加号,添加邻居
- 添加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,会用自己的转发地址替换协议地址。
- 发布更改,完成BGP动态路由协议的设置
- 最后不要忘记,进入Route Redistribution,配置路由重分发
- 激活BGP协议的重分发
- 将直连的网络重分发给BGP邻居,即dev-web-tier、dev-app-tier、dev-db-tier和dev-transit四个直连的逻辑网络
- 不要忘记发布更改,重要的事情说三遍!!!
动态路由协议邻居关系的建立是双向的,在完成dev-dlr上的BGP配置后,还需要在dev-esg上配置
主题:迷你SDDC环境搭建
任务31:动态路由的实现
阶段2:ESG上配置BGP动态路由协议
在Edge上配置BGP动态路由协议的操作步骤,与在DLR上的步骤几乎一样,这里就不重复赘述了,请各位直接浏览步骤截图。
两个需要注意的地方是:自治区域和邻居地址是相反的,and ESG没有所谓的协议地址和转发地址区分
- 为了演示效果,我首先只勾选Connected,即直连网络
- 在完成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这个网络呢?
主题:迷你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上添加静态路由
- 添加以下三个目标网络的静态路由:
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
- 第四次提起:不要忘记发布更改
- 在没有正确设置路由充分发之前,Web01依旧无法ping通172.20.10.1
- 此时,在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
- 访问Web01的命令行,可以看到除了172.20.10.0/24网络以外,Web01已经可以正常访问JUMP主机地址,即172.20.9.150
- 反之,在JUMP主机,也可以正常访问Web01地址,即dev-web-tier网络
经过上述演示内容,我已经成功将迷你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,个人认为这会是一个具有里程碑意义的版本;最近我也在学习这个“变形金刚”到底是如何实现多云网络连接的,届时也会与各位分享心得体会,敬请关注。