• 让你明白kvm是什么


    KVM 工具集合:

    • libvirt:操作和管理KVM虚机的虚拟化 API,使用 C 语言编写,可以由 Python,Ruby, Perl, PHP, Java 等语言调用。可以操作包括 KVM,vmware,XEN,Hyper-v, LXC 等 Hypervisor。
    • Virsh:基于 libvirt 的 命令行工具 (CLI)
    • Virt-Manager:基于 libvirt 的 GUI 工具
    • virt-v2v:虚机格式迁移工具
    • virt-* 工具:包括 Virt-install (创建KVM虚机的命令行工具), Virt-viewer (连接到虚机屏幕的工具),Virt-clone(虚机克隆工具),virt-top 等
    • sVirt:安全工具

    安装kvm:

      yum install qemu-kvm qemu-img libvirt  virt-manager -y

    kvm交换机原理:

      VLAN  

        ps:VLAN 的隔离是二层上的隔离,A 和 B 无法相互访问指的是二层广播包(比如 arp)无法跨越 VLAN 的边界。但在三层上(比如IP)是可以通过路由器让 A 和 B 互通的。概念上一定要分清

        通常交换机的端口有两种配置模式: Access 和 Trunk

        

      

          Access 口
            这些端口被打上了 VLAN 的标签,表明该端口属于哪个 VLAN。 不同 VLAN 用 VLAN ID 来区分,VLAN ID 的 范围是 1-4096。

            Access 口都是直接与计算机网卡相连的,这样从该网卡出来的数据包流入 Access 口后就被打上了所在 VLAN 的标签。 Access 口只能属于一个 VLAN

          Trunk 口
          假设有两个交换机 A 和 B。 A 上有 VLAN1(红)、VLAN2(黄)、VLAN3(蓝);

          B 上也有 VLAN1、2、3 那如何让 AB 上相同 VLAN 之间能够通信呢?办法是将 A 和 B 连起来,而且连接 A 和 B 的端口要允许 VLAN1、2、3 三个 VLAN 的数据都能够通过。Trunk口可以有多个VLAN

         KVM下的交换机实现原理如下:

          brvlan10和brvlan20就是虚拟交换机,vnet0、eth0.10就是虚拟Acess口,eth0就是虚拟Trunk口

            

        动手实验:https://www.cnblogs.com/CloudMan6/p/5326737.html

     Linux Bridge + VLAN = 虚拟交换机

      现在对 KVM 的网络虚拟化做个总结。

    1. 物理交换机存在多个 VLAN,每个 VLAN 拥有多个端口。 同一 VLAN 端口之间可以交换转发,不同 VLAN 端口之间隔离。 所以交换机其包含两层功能:交换与隔离

    2. Linux 的 VLAN 设备实现的是隔离功能,但没有交换功能。 一个 VLAN 母设备(比如 eth0)不能拥有两个相同 ID 的 VLAN 子设备,因此也就不可能出现数据交换情况。

    3. Linux Bridge 专门实现交换功能。 将同一 VLAN 的子设备都挂载到一个 Bridge 上,设备之间就可以交换数据了。

      总结起来,Linux Bridge 加 VLAN 在功能层面完整模拟现实世界里的二层交换机。

    动手实践 Linux VLAN - 每天5分钟玩转 OpenStack

    本节我们来看如何在实验环境中实施和配置如下 VLAN 网络

    配置 VLAN

    编辑 /etc/network/interfaces,配置 eth0.10、brvlan10、eth0.20 和 brvlan20。

    下面用 vmdiff 展示了对 /etc/network/interfaces 的修改

    重启宿主机,ifconfig 各个网络接口

    用 brctl show 查看当前 Linux Bridge 的配置。 eth0.10 和 eth0.20 分别挂在 brvlan10 和 brvlan20上 了

    在宿主机中已经提前创建好了虚机 VM1 和 VM2,现在都处于关机状态

    配置 VM1

    在 virt-manager 中将 VM1 的虚拟网卡挂到 brvlan10 上。

    启动 VM1

    查看 Bridge,发现 brvlan10 已经连接了一个 vnet0 设备

    通过 virsh 确认这就是 VM1 的虚拟网卡。

    配置VM2

    类似的,将 VM2 的网卡挂在 brvlan20 上

    启动 VM2

    查看 Bridge,发现 brvlan20 已经连接了一个 vnet1 设备

    通过 virsh 确认这就是 VM2 的虚拟网卡。

    验证 VLAN 的隔离性

    为了验证 VLAN10 和 VLAN20 之间的隔离,我们为 VM1 和 VM2 配置同一网段的 IP。

    配置 VM1 的 IP

    配置 VM2 的 IP

    Ping 测试结果: VM1 与 VM2 是不通的

    原因如下: 1. VM2 向 VM1 发 Ping 包之前,需要知道 VM1 的 IP 192.168.100.10 所对应的 MAC 地址。VM2 会在网络上广播 ARP 包,其作用就是问 “谁知道 192.168.100.10 的 MAC 地址是多少?” 2. ARP 是二层协议,VLAN 的隔离作用使得 ARP 只能在 VLAN20 范围内广播,只有 brvlan20 和 eth0.20 能收到,VLAN10 里的设备是收不到的。VM1 无法应答 VM2 发出的ARP包。 3. VM2 拿不到 VM1 vnet0 的 MAC 地址,也就 Ping 不到 VM1。

    Linux Bridge + VLAN = 虚拟交换机

    现在对 KVM 的网络虚拟化做个总结。

    1. 物理交换机存在多个 VLAN,每个 VLAN 拥有多个端口。 同一 VLAN 端口之间可以交换转发,不同 VLAN 端口之间隔离。 所以交换机其包含两层功能:交换与隔离

    2. Linux 的 VLAN 设备实现的是隔离功能,但没有交换功能。 一个 VLAN 母设备(比如 eth0)不能拥有两个相同 ID 的 VLAN 子设备,因此也就不可能出现数据交换情况。

    3. Linux Bridge 专门实现交换功能。 将同一 VLAN 的子设备都挂载到一个 Bridge 上,设备之间就可以交换数据了。

    总结起来,Linux Bridge 加 VLAN 在功能层面完整模拟现实世界里的二层交换机。

    eth0 相当于虚拟交换机上的 trunk 口,允许 vlan10 和 vlan20 的数据通过 eth0.10,vent0 和 brvlan10 都可以看着 vlan10 的 access 口 eth0.20,vent1 和 brvlan20 都可以看着 vlan20 的 access 口

  • 相关阅读:
    android dp深度解析(转)
    MySQL主从同步开源组件
    JQuery学习笔记
    JavaScript学习笔记
    css学习笔记一
    与spring的相关代码,开发中的经验总结
    传统的服务端有状态Session至JWT的无状态至OAuth2至OAuth2+JWT
    Post请求的两种编码格式:application/x-www-form-urlencoded和multipart/form-data(转)
    mybatis xml文件对象中的集合 resultMap该如何映射
    Java 请求的@RequestBody
  • 原文地址:https://www.cnblogs.com/Chary/p/15954283.html
Copyright © 2020-2023  润新知