分布式逻辑路由器 (DLR) 是一个包含控制层面和数据层面的虚拟设备,控制层面用于管理路由,而数据层面则从内部模块分发到各个虚拟机管理程序主机。DLR 控制层面功能依靠 NSX Controller 群集将路由更新推送到内核模块。

关于此任务

在部署新的逻辑路由器时,请考虑以下事项:

  • NSX 6.2 和更高版本允许将逻辑路由器路由的逻辑接口 (LIF) 连接到 VLAN 桥接的 VXLAN。

  • 逻辑路由器接口和桥接接口无法连接到 VLAN ID 设置为 0 的 dvPortgroup。

  • 给定的逻辑路由器实例无法连接到位于不同传输区域的逻辑交换机。此操作旨在确保所有逻辑交换机和逻辑路由器实例相对应。

  • 如果逻辑路由器已连接到跨多个 vSphere Distributed Switch (VDS) 的逻辑交换机,则该逻辑路由器将无法连接到支持 VLAN 的端口组。这是为了确保逻辑路由器实例与主机中的逻辑交换机 dvPortgroup 正确对齐。

  • 如果两个网络位于同一 vSphere Distributed Switch 中,则不应在两个具有相同 VLAN ID 的不同分布式端口组 (dvPortgroup) 上创建逻辑路由器接口。

  • 如果两个网络位于不同的 vSphere Distributed Switch 中,但这两个 vSphere Distributed Switch 共享相同的主机,则不应在两个具有相同 VLAN ID 的不同 dvPortgroup 上创建逻辑路由器接口。换句话说,如果两个 dvPortgroup 位于两个不同的 vSphere Distributed Switch 中,且这两个 vSphere Distributed Switch 不共享主机,则可以在两个具有相同 VLAN ID 的不同网络上创建逻辑路由器接口。

  • 如果配置了 VXLAN,则必须将逻辑路由器接口连接到配置了 VXLAN 的 vSphere Distributed Switch 上的分布式端口组。请不要将逻辑路由器接口连接到其他 vSphere Distributed Switch 上的端口组。

以下列表介绍了逻辑路由器上的接口类型(上行链路和内部)支持的功能:

  • 动态路由协议(BGP 和 OSPF)仅在上行链路接口上受支持。

  • 防火墙规则仅在上行链路接口上适用,且限制为控制和管理传至 Edge 虚拟设备的流量。

  • 有关 DLR 管理接口的详细信息,请参见知识库文章《管理接口指南:DLR 控制虚拟机 - NSX》,网址为 http://kb.vmware.com/kb/2122060

先决条件

  • 必须已为您分配企业管理员NSX 管理员角色。

  • 即使不打算创建 NSX 逻辑交换机,您也必须创建本地分段 ID 池。

  • 在创建或更改逻辑路由器配置之前,请确保控制器群集已启动且可用。如果缺少 NSX Controller,逻辑路由器便无法将路由信息分发给主机。逻辑路由器依靠 NSX Controller 来运行,而 Edge 服务网关 (ESG) 不会这样。

  • 如果逻辑路由器将连接到 VLAN dvPortgroup,请确保已安装逻辑路由器设备的所有管理程序主机都可以在 UDP 端口 6999 上相互访问。要使基于逻辑路由器 VLAN 的 ARP 代理能够正常工作,需要在此端口上通信。

  • 确定在何处部署逻辑路由器设备。

    • 目标主机必须属于与连接到新逻辑路由器接口的逻辑交换机相同的传输区域。

    • 如果在 ECMP 设置中使用 ESG,应避免将逻辑路由器设备放在与它的一个或多个上游 ESG 相同的主机上。可以使用 DRS 反关联性规则强制执行这一点,从而减少主机故障对逻辑路由器转发的影响。如果您具有一个单独的或处于 HA 模式下的上游 ESG,则此准则不适用。有关详细信息,请参见 https://communities.vmware.com/docs/DOC-27683 上的《VMware NSX for vSphere 网络虚拟化设计指南》

  • 确认已为 NSX 准备好安装逻辑路由器设备的主机群集。请参见NSX 安装指南中的“为 NSX 准备主机群集”。

过程

  1. 在 vSphere Web Client 中,导航到主页 > 网络和安全 > NSX Edge (Home > Networking & Security > NSX Edges)
  2. 单击添加 (Add) (添加) 图标。
  3. 选择逻辑 (分布式) 路由器 (Logical (Distributed) Router),然后键入设备的名称。

    该名称会显示在 vCenter 清单中。请使用在单个租户内的所有逻辑路由器中均唯一的名称。

    此外,还可以输入主机名。该名称会显示在 CLI 中。如果未输入主机名,则 CLI 中将显示自动创建的 Edge ID。

    此外,还可以输入描述和租户。

    例如:

  4. (可选) 部署一个 Edge 设备。

    默认情况下,将选择部署 Edge 设备 (Deploy Edge Appliance)。Edge 设备(也称为逻辑路由器虚拟设备)是动态路由和逻辑路由器设备的防火墙所必需的,适用于逻辑路由器 ping、SSH 访问和动态路由流量。

    如果您只需要静态路由,且不希望部署 Edge 设备,则可以取消选择 Edge 设备选项。无法在创建逻辑路由器之后向其添加 Edge 设备。

  5. (可选) 启用高可用性。

    默认情况下,启用高可用性 (Enable High Availability)处于未选中状态。选中启用高可用性 (Enable High Availability)复选框以启用并配置高可用性。如果您计划执行动态路由,则需要高可用性。

  6. 键入逻辑路由器的密码,然后重新键入一次。

    该密码必须是 12-255 个字符,且必须包含:

    • 至少一个大写字母

    • 至少一个小写字母

    • 至少一个数字

    • 至少一个特殊字符

  7. (可选) 启用 SSH。

    默认情况下,SSH 处于禁用状态。如果未启用 SSH,则仍可通过打开虚拟设备控制台来访问逻辑路由器。在此处启用 SSH 会导致 SSH 进程在逻辑路由器虚拟设备上运行。您必须手动调整逻辑路由器防火墙配置,才能允许对逻辑路由器的协议地址进行 SSH 访问。协议地址会在逻辑路由器上配置动态路由时进行配置。

  8. (可选) 启用 FIPS 模式并设置日志级别。

    默认情况下,将禁用 FIPS 模式。选中启用 FIPS 模式 (Enable FIPS mode)复选框以启用 FIPS 模式。在启用 FIPS 模式时,与 NSX Edge 之间的任何安全通信将使用 FIPS 允许的加密算法或协议。

    默认情况下,日志级别为紧急。

    例如:

  9. 配置部署。
    • 如果未选择部署 Edge 设备 (Deploy Edge Appliance),则添加 (Add) (添加) 图标为灰显状态。单击下一步 (Next)继续配置。

    • 如果您选择了部署 Edge 设备 (Deploy Edge Appliance),请输入逻辑路由器虚拟设备的设置。

    例如:

  10. 配置接口。在逻辑路由器上,仅支持 IPv4 寻址。
    1. 配置 HA 接口连接以及可选的 IP 地址。

      如果您选择了部署 Edge 设备 (Deploy Edge Appliance),则必须将 HA 接口连接到分布式端口组或逻辑交换机。如果您仅将该接口作为 HA 接口,请使用逻辑交换机。将从链路本地范围 169.254.0.0/16 中分配一个 /30 子网,用于为两个 NSX Edge 设备分别提供一个 IP 地址。

      (可选)如果要使用该接口连接到 NSX Edge,您可以为 HA 接口指定一个额外的 IP 地址和前缀。

      注:

      在 NSX 6.2 之前,HA 接口称为管理接口。对于任何与 HA 接口不在同一 IP 子网上的位置,无法通过 SSH 方式连接 HA 接口。无法配置将 HA 接口排除在外的静态路由,这意味着 RPF 将丢弃入站流量。理论上可以禁用 RPF,但这不利于实现高可用性。对于 SSH 访问,您也可以使用逻辑路由器的协议地址,这是以后在配置动态路由时配置的。

      在 NSX 6.2 和更高版本中,自动从路由重新分发中排除逻辑路由器的 HA 接口。

    2. 配置此 NSX Edge 的接口。

      配置此 NSX Edge 的接口 (Configure interfaces of this NSX Edge)中,内部接口用于连接到允许虚拟机间(有时称为东西向)通信的交换机。内部接口将在逻辑路由器虚拟设备上作为伪虚拟网卡进行创建。上行链路接口用于南北向通信。逻辑路由器上行链路接口可能会连接到 Edge 服务网关、其第三方路由器虚拟机或支持 VLAN 的 dvPortgroup,以使逻辑路由器直接与物理路由器连接。您必须至少有一个上行链路接口才能进行动态路由。上行链路接口将在逻辑路由器虚拟设备上作为虚拟网卡进行创建。

      您在此处输入的接口配置可在以后进行修改。可以在部署逻辑路由器后添加、移除和修改接口。

    以下示例显示连接到管理分布式端口组的 HA 接口。该示例还显示两个内部接口(应用程序和 Web)和一个上行链路接口(通向 ESG)。

  11. 配置默认网关。

    例如:

  12. 确保连接到逻辑交换机的任何虚拟机的默认网关都正确设置为逻辑路由器接口 IP 地址。

结果

在以下示例拓扑中,应用程序虚拟机的默认网关为 172.16.20.1。Web 虚拟机的默认网关为 172.16.10.1。确保这些虚拟机可以相互 ping 其默认网关。

使用 SSH 或控制台连接到 NSX Manager,并运行以下命令:

  • 列出所有逻辑路由器实例信息。

    nsxmgr-l-01a> show logical-router list all
    Edge-id             Vdr Name                      Vdr id              #Lifs
    edge-1              default+edge-1                0x00001388          3
    

  • 列出已从控制器群集收到逻辑路由器的路由信息的主机。

    nsxmgr-l-01a> show logical-router list dlr edge-1 host
    ID                   HostName                             
    host-25              192.168.210.52                       
    host-26              192.168.210.53                       
    host-24              192.168.110.53

    输出包括配置为传输区域的成员的所有主机群集中的所有主机,该传输区域拥有连接到指定逻辑路由器(本示例中为 edge-1)的逻辑交换机。

  • 列出由逻辑路由器传送给主机的路由表信息。所有主机间的路由表条目应一致。

    nsx-mgr-l-01a> show logical-router host host-25 dlr edge-1 route
    
    VDR default+edge-1 Route Table
    Legend: [U: Up], [G: Gateway], [C: Connected], [I: Interface]
    Legend: [H: Host], [F: Soft Flush] [!: Reject] [E: ECMP]
    
    Destination     GenMask          Gateway         Flags   Ref Origin   UpTime    Interface
    -----------     -------          -------         -----   --- ------   ------    ---------
    0.0.0.0         0.0.0.0          192.168.10.1    UG      1   AUTO     4101      138800000002
    172.16.10.0     255.255.255.0    0.0.0.0         UCI     1   MANUAL   10195     13880000000b
    172.16.20.0     255.255.255.0    0.0.0.0         UCI     1   MANUAL   10196     13880000000a
    192.168.10.0    255.255.255.248  0.0.0.0         UCI     1   MANUAL   10196     138800000002
    192.168.100.0   255.255.255.0    192.168.10.1    UG      1   AUTO     3802      138800000002
    

  • 从其中某个主机的角度,列出有关路由器的其他信息。此输出有助于了解哪个控制器正在与该主机进行通信。

    nsx-mgr-l-01a> show logical-router host host-25 dlr edge-1 verbose
    
    VDR Instance Information :
    ---------------------------
    
    Vdr Name:                   default+edge-1
    Vdr Id:                     0x00001388
    Number of Lifs:             3
    Number of Routes:           5
    State:                      Enabled
    Controller IP:              192.168.110.203
    Control Plane IP:           192.168.210.52
    Control Plane Active:       Yes
    Num unique nexthops:        1
    Generation Number:          0
    Edge Active:                No
    

show logical-router host host-25 dlr edge-1 verbose 命令的输出中,检查“控制器 IP”字段。

通过 SSH 登录到控制器,并运行以下命令以显示控制器获知的 VNI、VTEP、MAC 和 ARP 表状态信息。

  • 192.168.110.202 # show control-cluster logical-switches vni 5000
    VNI      Controller      BUM-Replication ARP-Proxy Connections
    5000     192.168.110.201 Enabled         Enabled   0
    

    VNI 5000 的输出显示零个连接,并将控制器 192.168.110.201 列为 VNI 5000 的所有者。登录到此控制器,以收集 VNI 5000 的更多信息。

    192.168.110.201 # show control-cluster logical-switches vni 5000
    VNI      Controller      BUM-Replication ARP-Proxy Connections
    5000     192.168.110.201 Enabled         Enabled   3
    

    192.168.110.201 上的输出显示三个连接。检查其他 VNI。

    192.168.110.201 # show control-cluster logical-switches vni 5001
    VNI      Controller      BUM-Replication ARP-Proxy Connections
    5001     192.168.110.201 Enabled         Enabled   3
    

    192.168.110.201 # show control-cluster logical-switches vni 5002
    VNI      Controller      BUM-Replication ARP-Proxy Connections
    5002     192.168.110.201 Enabled         Enabled   3

    由于 192.168.110.201 拥有全部三个 VNI 连接,我们预期会在另一个控制器 192.168.110.203 上看到零个连接。

    192.168.110.203 # show control-cluster logical-switches vni 5000
    VNI      Controller      BUM-Replication ARP-Proxy Connections
    5000     192.168.110.201 Enabled         Enabled   0
    

  • 在检查 MAC 和 ARP 表之前,从一个虚拟机 ping 到另一个虚拟机。

    从应用程序虚拟机到 Web 虚拟机:

    vmware@app-vm$ ping 172.16.10.10
    PING 172.16.10.10 (172.16.10.10) 56(84) bytes of data.
    64 bytes from 172.16.10.10: icmp_req=1 ttl=64 time=2.605 ms
    64 bytes from 172.16.10.10: icmp_req=2 ttl=64 time=1.490 ms
    64 bytes from 172.16.10.10: icmp_req=3 ttl=64 time=2.422 ms
    

    检查 MAC 表。

    192.168.110.201 # show control-cluster logical-switches mac-table 5000
    VNI      MAC               VTEP-IP         Connection-ID
    5000     00:50:56:a6:23:ae 192.168.250.52  7

    192.168.110.201 # show control-cluster logical-switches mac-table 5001
    VNI      MAC               VTEP-IP         Connection-ID
    5001     00:50:56:a6:8d:72 192.168.250.51  23

    检查 ARP 表。

    192.168.110.201 # show control-cluster logical-switches arp-table 5000
    VNI      IP              MAC               Connection-ID
    5000     172.16.20.10    00:50:56:a6:23:ae 7

    192.168.110.201 # show control-cluster logical-switches arp-table 5001
    VNI      IP              MAC               Connection-ID
    5001     172.16.10.10    00:50:56:a6:8d:72 23

检查逻辑路由器信息。每个逻辑路由器实例都由某个控制器节点提供服务。

show control-cluster logical-routers 命令的 instance 子命令显示连接到此控制器的逻辑路由器列表。

interface-summary 子命令显示控制器从 NSX Manager 获知的 LIF。此信息将发送到由传输区域管理的主机群集中的主机。

routes 子命令显示由逻辑路由器的虚拟设备(也称为控制虚拟机)发送到此控制器的路由表。与 ESXi 主机上不同,此路由表不包括直接连接的子网,因为此信息由 LIF 配置提供。ESXi 主机上的路由信息包括直接连接的子网,因为在这种情况下,它是一个由 ESXi 主机的数据路径使用的转发表。

  • 列出连接到该控制器的所有逻辑路由器。

    controller # show control-cluster logical-routers instance all
    LR-Id      LR-Name            Universal Service-Controller Egress-Locale
    0x1388     default+edge-1     false     192.168.110.201    local
    

    记下 LR-Id 并用于以下命令。

  • controller # show control-cluster logical-routers interface-summary 0x1388
    Interface                        Type   Id           IP[]
    13880000000b                     vxlan  0x1389       172.16.10.1/24
    13880000000a                     vxlan  0x1388       172.16.20.1/24
    138800000002                     vxlan  0x138a       192.168.10.2/29
    

  • controller # show control-cluster logical-routers routes 0x1388
    Destination        Next-Hop[]      Preference Locale-Id                            Source
    192.168.100.0/24   192.168.10.1    110        00000000-0000-0000-0000-000000000000 CONTROL_VM
    0.0.0.0/0          192.168.10.1    0          00000000-0000-0000-0000-000000000000 CONTROL_VM
    
    [root@comp02a:~] esxcfg-route -l
    VMkernel Routes:
    Network          Netmask          Gateway          Interface
    10.20.20.0       255.255.255.0    Local Subnet     vmk1
    192.168.210.0    255.255.255.0    Local Subnet     vmk0
    default          0.0.0.0          192.168.210.1    vmk0
    
  • 显示控制器与特定 VNI 之间的连接。

    192.168.110.203 # show control-cluster logical-switches connection-table 5000
    Host-IP         Port  ID
    192.168.110.53  26167 4
    192.168.210.52  27645 5
    192.168.210.53  40895 6
    
    192.168.110.202 # show control-cluster logical-switches connection-table 5001
    Host-IP         Port  ID
    192.168.110.53  26167 4
    192.168.210.52  27645 5
    192.168.210.53  40895 6
    

    这些主机 IP 地址是 vmk0 接口,而非 VTEP。ESXi 主机与控制器之间的连接将在管理网络上创建。此处的端口号是主机与控制器建立连接时由 ESXi 主机 IP 堆栈分配的极短 TCP 端口。

  • 在主机上,可以查看与端口号匹配的控制器网络连接。

    [root@192.168.110.53:~] #esxcli network ip connection list | grep 26167
    tcp         0       0  192.168.110.53:26167             192.168.110.101:1234  ESTABLISHED     96416  newreno  netcpa-worker
    
  • 显示主机上的活动 VNI。观察各主机间输出的不同之处。并非所有主机上的所有 VNI 都处于活动状态。如果主机的某个虚拟机已连接到逻辑交换机,则该主机上的 VNI 处于活动状态。

    [root@192.168.210.52:~] # esxcli network vswitch dvs vmware vxlan network list --vds-name Compute_VDS
    VXLAN ID  Multicast IP               Control Plane                        Controller Connection  Port Count  MAC Entry Count  ARP Entry Count  VTEP Count
    --------  -------------------------  -----------------------------------  ---------------------  ----------  ---------------  ---------------  ----------
        5000  N/A (headend replication)  Enabled (multicast proxy,ARP proxy)  192.168.110.203 (up)            1                0                0           0
        5001  N/A (headend replication)  Enabled (multicast proxy,ARP proxy)  192.168.110.202 (up)            1                0                0           0
    
    注:

    要在 vSphere 6.0 及更高版本中启用 vxlan 命名空间,请运行 /etc/init.d/hostd restart 命令。

    对于处于混合模式或单播模式的逻辑交换机,esxcli network vswitch dvs vmware vxlan network list --vds-name <vds-name> 命令包含以下输出:

    • 将启用控制层面。

    • 将列出多播代理和 ARP 代理。将列出 AARP 代理,即使已禁用 IP 发现。

    • 将列出有效的控制器 IP 地址并建立连接。

    • 如果将逻辑路由器连接到 ESXi 主机,则端口计数至少为 1,即使主机上没有任何虚拟机连接到逻辑交换机。此端口为 vdrPort,是连接到 ESXi 主机上逻辑路由器内核模块的特殊 dvPort。

  • 首先从虚拟机 ping 到不同子网上的另一个虚拟机,然后显示 MAC 表。请注意,内部 MAC 是虚拟机条目,而外部 MAC 和外部 IP 是指 VTEP。

    ~ # esxcli network vswitch dvs vmware vxlan network mac list --vds-name=Compute_VDS --vxlan-id=5000
    Inner MAC          Outer MAC          Outer IP        Flags
    -----------------  -----------------  --------------  --------
    00:50:56:a6:23:ae  00:50:56:6a:65:c2  192.168.250.52  00000111
    
    ~ # esxcli network vswitch dvs vmware vxlan network mac list --vds-name=Compute_VDS --vxlan-id=5001
    Inner MAC          Outer MAC          Outer IP        Flags
    -----------------  -----------------  --------------  --------
    02:50:56:56:44:52  00:50:56:6a:65:c2  192.168.250.52  00000101
    00:50:56:f0:d7:e4  00:50:56:6a:65:c2  192.168.250.52  00000111
    

下一步做什么

如果在群集上禁用了 vSphere HA,在安装 NSX Edge 设备时,NSX 将在主机上启用自动虚拟机启动/关闭。如果以后将设备虚拟机迁移到群集中的其他主机,新主机可能不会启用自动虚拟机启动/关闭。因此,在已禁用 vSphere HA 的群集上安装 NSX Edge 设备时,VMware 建议您应检查群集中的所有主机以确保启用了自动虚拟机启动/关闭。请参见《vSphere 虚拟机管理》中的“编辑虚拟机启动和关闭设置”。

部署逻辑路由器后,双击逻辑路由器 ID 以配置其他设置,如接口、路由、防火墙、桥接和 DHCP 中继。