变形金刚外传0x04:实现跨VMware与KVM的逻辑交换

简介: 现在我们所说的NSX DC,早已不是之前那个狭义的、只面向VMware虚拟化的软件定义网络和安全产品。在市场上,依托专有硬件,配套软件实现SDN的产品也可称得上多家争鸣、各有千秋;而VMware NSX最与众不同的优势可归纳为:NSX软件不受到底层硬件的限制,适用于ANY NETWORK或者说ANY TRANSPORT;强大的分布式防火墙策略适用于任意虚拟化指标,提供全面的端到端安全防护

现在我们所说的NSX DC,早已不是之前那个狭义的、只面向VMware虚拟化的软件定义网络和安全产品。在市场上,依托专有硬件,配套软件实现SDN的产品也可称得上多家争鸣、各有千秋;而VMware NSX最与众不同的优势可归纳为:

  • NSX软件不受到底层硬件的限制,适用于ANY NETWORK或者说ANY TRANSPORT;
  • 强大的分布式防火墙策略适用于任意虚拟化指标,提供全面的端到端安全防护

虽然VMware NSX有上述优势,不过在国内相当长的一段时间内,只有NSX for vSphere解决方案,只能适用于VMware ESXi作为服务器虚拟化平台的场景。虽然NSX-V能提供包括数据中心双活、灾备等功能,但无法兼容并包异构化的虚拟化平台或者公有云。

在今天的分享中,我将演示NSX-T如何打造一个跨VMware与KVM环境的二层逻辑网络,实现异构化虚拟化平台上运行的多台虚拟机之间的二层通信。


0x04-01:逻辑交换机实现二层通信

==========================

  • 访问NSXMGR,在高级网络和安全-网络-交换页面,添加新的交换机

image.png

  • 在Overlay传输区域,添加一个新的逻辑交换机T1-dev-web-tier

image.png

  • 采用默认的交换配置文件定义

image.png

  • 同样地,在VLAN传输区域,创建一个T1-dev-jump-extermal逻辑交换机(以后用,今天的分享暂时用不到)

image.png

  • 重复上述操作,完成所有的逻辑交换机创建:
    T1-dev-web-tier、T1-dev-app-tier、T1-dev-db-tier和T1-dev-jump-external

image.png

  • 与标准交换机或者分布式交换机上的虚拟机端口组不同,N-VDS上的虚拟机端口组无法被VC管理,图标显示也不相同

image.png

  • 迁移虚拟机上联网络

image.png

  • 选择将web-01a和web-02a迁移到T1-dev-web-tier逻辑交换机

image.png

image.png

  • 选择将app-01a迁移到T1-dev-app-tier逻辑交换机

image.png

image.png

  • 访问web-01a的命令行,测试与同样在VMware环境的web-03a二层连通性,可以看到连接到同一个逻辑交换机后,web-01a和web-03a已经互联

image.png

  • 由于web-01a和app-01a并非处于相同的网络,在没有配置逻辑路由器的情况下,三层互访不连通

image.png

  • 在逻辑交换机清单页面,根据逻辑端口的开放数量,可以了解连接到该逻辑交换机的虚拟机数量信息

image.png

在端口清单页面,可以查看到这些虚拟机的详细信息

image.png

  • 对于KVM的虚拟机,访问KVM命令行,查看该虚拟机连接到openvswitch交换机的interfaceid
    # virsh list --all
    # virsh dumpxml VMNAME | grep -i interfaceid
    可以看到,该虚拟机的interfaceid是:0b3b294b-1116-4966-a3e2-3f214a073a36

image.png

  • 通过添加逻辑端口的方式,将KVM上的虚拟机连接到对应的逻辑交换机
    如:将web-02a连接到T1-dev-web-tier逻辑交换机

image.png

  • 使用默认的交换配置文件

image.png

  • 等待1分钟左右,在正常情况下,可以看到该虚拟机的管理状态和操作状态均为开启,说明已经连接到相应的逻辑交换机

image.png

  • 在KVM主机上运行的web-02a底层,测试与vSphere主机上运行的web-01a和web-03a二层连通性
    可以看到连接到T1-dev-web-tier的三台异构平台的虚拟机已经实现了二层互通

image.png

  • 重复上述步骤,将db-01a连接到T1-dev-db-tier逻辑交换机

image.png

  • 在交换机清单页面,可以看到端口数量增加了对应的数量

image.png

可以看到,借助于NSX-T,位于不同虚拟化Hypervisor平台的三台Web虚拟机实现了二层互通:

Web-01a,10.0.10.11/24,位于ESXi虚拟化主机

Web-02a,10.0.10.12/24,位于KVM虚拟化主机

Web-03a,10.0.10.13/24,位于ESXi虚拟化主机

对于VMware环境,由于计算管理器vCenter可以实现对清单中所有对象的集中管理,因此将虚拟机连接到逻辑网络的操作相对KVM主机要简单许多。

此外,如果各位按照我的分享,尝试将KVM上的虚拟机连接到某一台逻辑交换机,在默认情况下,可能会遇到一个问题,即通过# virsh dumpxml 虚拟机名 | grep -i interface 无法显示任何虚拟机上联接口的ID信息。

在浏览VMware官方社区想找出这个问题的解决办法过程中,我也注意到这可能不是一个偶发现象,大家普遍都遇到过这个问题;现在我将解决办法分享给大家。

造成这个现象的原因,是管理员在KVM环境创建的虚拟机,默认情况下并没有连接到openvswitch;

在开启电源后,通过virsh dumpxml命令无法查看到该虚拟机的interfaceid,需要有一些特殊的操作,解决办法如下:

  • 通过可视化界面,完成虚拟机操作系统的安装
    # virt-manager

image.png

  • 完成虚拟机操作系统的安装,如安装VMware Photon OS

image.png

  • 完成网络、iptables等网络设置

image.png

  • 查看运行的虚拟机清单
    # virsh list --all

image.png

  • 默认情况下,看不到虚拟机的interfaceid接口ID
    # virsh dumpxml 虚拟机 | grep -i interfaceid

image.png

  • 通过命令,保存虚拟机配置文件到/home目录
    # virsh dumpxml 虚拟机 > 虚拟机.xml

image.png

  • 暂时关闭该虚拟机操作系统,并确认虚拟机已经正常关闭
    # virsh shutdown 虚拟机
    # virsh list --all

image.png

  • 在对虚拟机配置文件做一个简单的备份后,编辑该虚拟机配置文件
    # cp 虚拟机.xml 虚拟机.xml.backup
    # vim 虚拟机.xml

image.png

  • 完成编辑操作后,保存退出
    修改如下字段:
    < source bridge='nsx-managed'/>

    image.png
  • 通过编辑后的虚拟机配置文件启动虚拟机
    # virsh create web-02a.xml

image.png

  • 记录虚拟机的interfaceid
    # virsh dumpxml 虚拟机 | grep -i interfaceid

image.png

  • 完成虚拟机关联逻辑交换机的配置

image.png

image.png

  • 验证二层网络连通性

image.png

在NSX-V的场景中,逻辑网络的实现是借助于在Hypervisor内核中运行的vdl2模块实现的;在NSX-T的场景中,这一点没有任何变化。无论在ESXi,还是KVM主机内核中都运行着vdl2模块,实现了跨越不同虚拟化平台的逻辑网络二层连接。

可以想到的是,想要实现NSX-T的场景中,多个不同业务网络之间的三层互访,一定也要借助在Hypervisor内核中运行的vdrb模块实现。不过与NSX-V的场景大相径庭,NSX-T的逻辑路由更加灵活和复杂。在接下来的几篇分享中,我将演示如何实现一个最简单的数据中心逻辑网络拓扑,包括Tier-0和Tier-1两个不同的级别,Service Router和Distributed Router两个不同的角色,以及他们两两组合后实现的三层网络架构,敬请各位持续关注。

相关文章
|
安全 Java Linux
|
4月前
|
监控 Linux KVM
kvm和vmware有什么区别?如何选择?
最终的选择取决于你的组织需求、预算和技术偏好。在做出决策之前,最好进行详细的比较和评估,以确保选择适合你的虚拟化环境。
385 3
|
安全 KVM 虚拟化
变形金刚外传0x06:实现跨VMware与KVM的逻辑路由
在之前的几篇分享中,我的演示环境已经就绪了主机传输节点和Edge传输节点,并且利用Geneve Overlay,实现了跨VMware与KVM异构化平台的逻辑交换功能。在今天的分享中,我将演示如何实现跨异构化平台的逻辑路由功能,并为最终实现Web-App-DB(后文称3-Tier-App)与外部网络的三层互访打下基础。
|
安全 Java Linux
懂了!VMware/KVM/Docker原来是这么回事儿
懂了!VMware/KVM/Docker原来是这么回事儿
304 0
懂了!VMware/KVM/Docker原来是这么回事儿
|
3月前
|
Unix Linux 虚拟化
虚拟机VMware知识积累
虚拟机VMware知识积累
下一篇
DDNS