云计算之OpenStack基础

news2024/11/28 19:35:46

云计算之OpenStack基础

  • 一、OpenStack基础知识
  • 二、虚拟化
    • 2.1 虚拟化类型
      • 2.1.1 Ⅰ型虚拟化
      • 2.1.2 Ⅱ型虚拟化
      • 2.1.3 比较
    • 2.2 KVM(Ⅱ型虚拟化)
      • 2.2.1 基本概念
      • 2.2.2 Libvirt
      • 2.2.3 CPU虚拟化
      • 2.2.4 内存虚拟化
      • 2.2.5 存储虚拟化
        • 2.2.5.1 目录类型的 Storage Pool
        • 2.2.5.2 LVM 类型的 Storage Pool
      • 2.2.6 网络虚拟化
        • 2.2.6.1 Linux Bridge网桥基本概念
        • 2.2.6.2 Linux Bridge网桥配置
        • 2.2.6.3 VLAN
  • 三、云计算
    • 3.1 基本概念
      • 3.1.1 IT系统架构的发展过程
      • 3.1.2 计算(CPU/内存)、存储和网络是 IT 系统的三类资源
      • 3.1.3 云平台是一个面向服务的架构
    • 3.2 云计算和 OpenStack
  • 结束

一、OpenStack基础知识

  • 计算节点:虚拟机实例的网络:
    1)下图中A就是虚拟机VM1的虚拟网卡,和它相连的B是一个tap设备,通常是以tap开头的一段名称,它挂载在Linux Bridge qbr上面。 tap设备其实就是一个Linux内核虚拟化出来的一个网络接口,即虚拟网卡;
  • 计算节点:集成网桥(br-int)的网络:
    1)集成网桥br-int:是由OpenvSwitch虚拟化出来的网桥,但事实上它已经充当了一个虚拟交换机的功能了。br-int的主要职责就是把它所在的计算节点上的VM都连接到它这个虚拟交换机上面,然后利用br-tun的穿透功能,实现了不同计算节点上的VM连接在同一个逻辑上的虚拟交换机上面的功能,在br-int上面还有另一个端口E,它总是以patch-tun的形式出现,从字面就可以看出它是用来连接br-tun的。;
    2)OpenvSwitch不支持现在的OpenStack的实现方式,因为OpenStack是把iptables规则丢在TAP设备中,以此实现了安全组功能。所以用了一个折衷的方式,在中间加一层,用Linux Bridge来实现,这就是qbr网桥。在qbr上还存在另一个设备C,这也是一个TAP设备。C和br-int上的D连接在一起,形成一个连接通道,使得qbr和br-int之间顺畅通信。C通常以qvb开头,D通常以qvo开头;
  • 计算节点:通道网桥(br-tun)的网络:
    1)通道网桥(br-tun):br-tun同样是OpenvSwitch虚拟化出来的网桥,但是它不是用来充当虚拟交换机的,它的存在只是用来充当一个通道层,通过它上面的设备G与其他物理机上的br-tun通信,构成一个统一的通信层。这样的话,网络节点和计算节点、计算节点和计算节点这样就会点对点的形成一个以GRE(GRE:General Routing Encapsulation,一种通过封装来实现隧道的方式。在openstack中一般是基于L3的gre)为基础的通信网络,互相之间通过这个网络进行大量的数据交换。这样,网络节点和计算节点之间的通信就此打通了。而图中的G、H正是描述这一通信;
  • 网络节点:通道网桥(br-tun)的网络:
    1)网络节点上也是存在一个br-tun,它的作用同计算节点上的br-tun,都是为了在整个系统中构建一个统一的通信层而存在的。所以,这一部分的网络同计算节点上的网络的功能是一致的。
  • 网络节点:集成网桥(br-int)的网络:
    1)网络节点上的br-int也是起了交换机的作用,它通过I、J与br-tun连接在一起。最终的要的是,在这个虚拟交换机上,还有其他两个重要的tap设备M、O,它们分别同N、P相连,而N、P作为tap设备则是分别归属两个namespace,router和dhcp(namespace:用来实现隔离的一套机制,不同 namespace 中的资源之间彼此不可见),正如这两个namespace的名称所示,它们承担的就是router和dhcp的功能。
    2)router是由l3-agent根据网络管理的需要而创建的,然后,该router就与特定一个子网绑定到一起,管理这个子网的路由功能。router实现路由功能,则是依靠在该namespace中的iptables实现的。
    3)dhcp是l3-agent根据需要针对特定的子网创建的,在这个namespace中,l3-agent会启动一个dnsmasq的进程,由它来实际掌管该子网的dhcp功能。由于这个两个namespace都是针对特定的子网创建的,因而在现有的OpenStack系统中,它们常常是成对出现的。
  • 网络节点:外部网桥(br-ex)的网络:
    1)当数据从router中路由出来后,就会通过L、K传送到br-ex这个虚拟网桥上,而br-ex实际上是混杂模式加载在物理网卡上,实时接收着网络上的数据包。至此,我们的计算节点上的VM就可以与外部的网络进行自由的通信了。当然,前提是我们要给这个VM已经分配了float-ip。
    在这里插入图片描述

二、虚拟化

在这里插入图片描述

  • 虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的 CPU、内存、IO 硬件资源,但逻辑上虚拟机之间是相互隔离的。
  • 物理机我们一般称为宿主机(Host),宿主机上面的虚拟机称为客户机(Guest)。
  • 那么 Host 是如何将自己的硬件资源虚拟化,并提供给 Guest 使用的呢:这个主要是通过一个叫做 Hypervisor 的程序实现的。根据 Hypervisor 的实现方式和所处的位置,虚拟化又分为两种:1型虚拟化和2型虚拟化

2.1 虚拟化类型

2.1.1 Ⅰ型虚拟化

  • Hypervisor 直接安装在物理机上,多个虚拟机在 Hypervisor 上运行。Hypervisor 实现方式一般是一个特殊定制的 Linux 系统。Xen 和 VMWare 的 ESXi 都属于这个类型。
    在这里插入图片描述

2.1.2 Ⅱ型虚拟化

  • 物理机上首先安装常规的操作系统,比如 Redhat、Ubuntu 和 Windows。Hypervisor 作为 OS 上的一个程序模块运行,并对管理虚拟机进行管理。KVM、VirtualBox 和 VMWare Workstation 都属于这个类型。
    在这里插入图片描述

2.1.3 比较

  • 理论上讲:
  1. Ⅰ型虚拟化一般对硬件虚拟化功能进行了特别优化,性能上比Ⅱ型要高;
  2. Ⅱ型虚拟化因为基于普通的操作系统,会比较灵活,比如支持虚拟机嵌套。嵌套意味着可以在KVM虚拟机中再运行KVM。

2.2 KVM(Ⅱ型虚拟化)

2.2.1 基本概念

  • 在 x86 平台上最热门运用最广泛的虚拟化方案莫过于 KVM 了。OpenStack 对 KVM 支持得也最好。KVM全称是 Kernel-Based Virtual Machine,即 KVM 是基于 Linux 内核实现的。KVM有一个内核模块叫kvm.ko,只用于管理虚拟 CPU 和内存;IO 的虚拟化,比如存储和网络设备由Linux内核和Qemu来实现。
  • KVM作为一个 Hypervisor,KVM 本身只关注虚拟机调度和内存管理这两个方面。IO 外设的任务交给 Linux 内核和 Qemu。

2.2.2 Libvirt

  • Libvirt是 KVM 的管理工具;Libvirt 除了能管理 KVM 这种 Hypervisor,还能管理 Xen,VirtualBox 等。OpenStack 底层也使用 Libvirt,所以很有必要学习一下。
  • Libvirt 包含 3 个东西:后台 daemon 程序 libvirtdAPI 库命令行工具 virsh
    1)libvirtd是服务程序,接收和处理 API 请求;
    2)API 库使得其他人可以开发基于 Libvirt 的高级工具,比如 virt-manager,这是个图形化的 KVM 管理工具;
    3)virsh 是 KVM 命令行工具;

2.2.3 CPU虚拟化

  • 查看 CPU 是否支持KVM虚拟化,在Linux系统中输入grep -E '(vmx|svm)' /proc/cpuinfo)命令,找到flags部分,如果其中输出有VMX或SVM,即表明支持虚拟化技术。- 一个 KVM 虚机在宿主机中其实是一个 qemu-kvm 进程,与其他 Linux 进程一样被调度,我们可以在运行一个虚拟机的宿主机上查看进程,先输入virsh list查看宿主机中运行的虚拟机列表,再输入ps -elf | grep kvm1查看结果:

在这里插入图片描述

  • 虚机中的每一个虚拟 vCPU 则对应 qemu-kvm 进程中的一个线程:
    在这里插入图片描述
  • 上图中,宿主机有两个物理 CPU,上面起了两个虚机 VM1 和 VM2。VM1 有两个 vCPU,VM2 有 4 个 vCPU。可以看到 VM1 和 VM2 分别有2个和 4 个线程在两个物理 CPU 上调度。- CPU支持超配(overcommit),即虚机的 vCPU 总数可以超过物理 CPU 数量,这个特性使得虚机能够充分利用宿主机的 CPU 资源,但前提是在同一时刻,不是所有的虚机都满负荷运行。

2.2.4 内存虚拟化

  • KVM 通过内存虚拟化共享物理系统内存,动态分配给虚拟机:
    在这里插入图片描述
  • 为了在一台机器上运行多个虚拟机,KVM 需要实现 VA(虚拟内存) -> PA(物理内存) -> MA(机器内存)直接的地址转换。虚机 OS 控制虚拟地址到客户内存物理地址的映射 (VA -> PA),但是虚机 OS 不能直接访问实际机器内存,因此 KVM 需要负责映射物理内存到机器内存 (PA -> MA)。
  • 内存也支持超配(overcommit),即所有虚机的内存之和可以超过宿主机的物理内存。

2.2.5 存储虚拟化

  • KVM 的存储虚拟化是通过存储池(Storage Pool)和卷(Volume)来管理的。
  • Storage Pool 是宿主机上可以看到的一片存储空间,可以是多种类型。
  • Volume 是在 Storage Pool 中划分出的一块空间,宿主机将 Volume 分配给虚拟机,Volume 在虚拟机中看到的就是一块硬盘。

2.2.5.1 目录类型的 Storage Pool

  • KVM 将宿主机目录 /var/lib/libvirt/images/ 作为默认的 Storage Pool。那么 Volume 是该目录下面的文件了,一个文件就是一个 Volume。

  • 如在创建虚拟机kvm1时,将镜像文件 cirros-0.3.3-x8664-disk.img 放到了 /var/lib/libvirt/images/目录下,文件 cirros-0.3.3-x8664-disk.img 也就是Volume,对于 kvm1 来说,就是它的启动磁盘了。

  • 那 KVM 是怎么知道要把 /var/lib/libvirt/images 这个目录当做默认 Storage Pool 的呢?实际上 KVM 所有可以使用的 Storage Pool 都定义在宿主机的 /etc/libvirt/storage 目录下,每个 Pool 一个 xml 文件,默认有一个 default.xml,其内容如下:
    在这里插入图片描述

  • 注意:Storage Pool 的类型是 “dir”,目录的路径就是 /var/lib/libvirt/images。

  • 在 virt-manager 中打开 kvm1 的配置页面,右键添加新硬件:
    在这里插入图片描述

  • 在默认 Pool 中创建一个 8G 的卷,点击 “Finish”:
    在这里插入图片描述

  • 可以看到新磁盘的信息:
    在这里插入图片描述

  • 在 /var/lib/libvirt/images/ 下多了一个 8G 的文件 kvm1.img:
    在这里插入图片描述

  • 使用文件做 Volume 有很多优点:存储方便、移植性好、可复制、可远程访问(远程访问:是镜像文件不一定都放置到宿主机本地文件系统中,也可以存储在通过网络连接的远程文件系统,比如 网络文件系统NFS,或者是分布式文件系统中,比如 GlusterFS。这样镜像文件就可以在多个宿主机之间共享,便于虚机在不同宿主机之间做 Live Migration;如果是分布式文件系统,多副本的特性还可以保证镜像文件的高可用。)。

  • KVM 支持多种 Volume 文件格式:在添加 Volume 时可以选择raw 是默认格式,即原始磁盘镜像格式,移植性好,性能好,但大小固定,不能节省磁盘空间。
    在这里插入图片描述

  • qcow2 是推荐使用的格式,cow 表示 copy on write,能够节省磁盘空间,支持 AES 加密,支持 zlib 压缩,支持多快照,功能很多。vmdk 是 VMWare 的虚拟磁盘格式,也就是说 VMWare 虚机可以直接在 KVM上 运行。

2.2.5.2 LVM 类型的 Storage Pool

  • 不仅一个文件可以分配给客户机作为虚拟磁盘,宿主机上 VG 中的 LV 也可以作为虚拟磁盘分配给虚拟机使用。不过,LV 由于没有磁盘的 MBR 引导记录,不能作为虚拟机的启动盘,只能作为数据盘使用。
  • 这种配置下,宿主机上的 VG 就是一个 Storage Pool,VG 中的 LV 就是 Volume。LV 的优点是有较好的性能;不足的地方是管理和移动性方面不如镜像文件,而且不能通过网络远程使用。
  • 下面举个例子。首先,在宿主机上创建了一个容量为 10G 的 VG,命名为 HostVG:
    在这里插入图片描述
  • 然后创建了一个 Storage Pool 的定义文件 /etc/libvirt/storage/HostVG.xml,内容为:
    在这里插入图片描述
  • 然后通过 virsh 命令创建新的 Storage Pool “HostVG”:
    在这里插入图片描述
  • 并启用这个 HostVG:
    在这里插入图片描述
  • 现在我们可以在 virt-manager 中为虚机 kvm1 添加 LV 的虚拟磁盘了:
    在这里插入图片描述
  • 点击 Browse:
    在这里插入图片描述
  • 可以看到 HostVG 已经在 Stroage Pool 的列表中了,选择 HostVG:
    在这里插入图片描述
  • 为 volume 命名为 newlv 并设置大小 100MB,点击 Finish:
    在这里插入图片描述
  • newlv 创建成功,点击 Choose Volume:
    在这里插入图片描述
  • 点击 Finish 确认将 newlv 作为 volume 添加到 kvm1:
    在这里插入图片描述
  • 新 volume 添加成功:
    在这里插入图片描述
  • 在宿主机上则多了一个命名为newlv的LV:
    在这里插入图片描述

2.2.6 网络虚拟化

  • 下图是OpenStack 官网给出的计算节点的虚拟网络逻辑图:
    在这里插入图片描述

2.2.6.1 Linux Bridge网桥基本概念

  • 假设宿主机有 1 块与外网连接的物理网卡 eth0,上面跑了 1 个虚机 VM1,现在有个问题是:如何让 VM1 能够访问外网?
  • 至少有两种方案:
    1)不推荐的方案: 将物理网卡eth0直接分配给VM1,但随之带来的问题很多: 宿主机就没有网卡,无法访问了;新的虚机,比如 VM2 也没有网卡;
    2)推荐的方案: 给 VM1 分配一个虚拟网卡 vnet0,通过 Linux Bridge br0 将 eth0 和 vnet0 连接起来,如下图所
    在这里插入图片描述
  • Linux Bridge 是 Linux 上用来做 TCP/IP 二层协议交换的设备,其功能可以理解为是一个二层交换机或者 Hub。多个网络设备可以连接到同一个 Linux Bridge,当某个设备收到数据包时,Linux Bridge 会将数据转发给其他设备。
  • 在上面这个例子中,当有数据到达 eth0 时,br0 会将数据转发给 vnet0,这样 VM1 就能接收到来自外网的数据;反过来,VM1 发送数据给 vnet0,br0 也会将数据转发到 eth0,从而实现了 VM1 与外网的通信。
  • 现在增加一个虚拟机VM2,如下图所示:VM2 的虚拟网卡 vnet1 也连接到了 br0 上。现在 VM1 和 VM2 之间可以通信,同时 VM1 和 VM2 也都可以与外网通信。
    在这里插入图片描述

2.2.6.2 Linux Bridge网桥配置

配置 Linux Bridge br0

  • 在宿主机中编辑 /etc/network/interfaces,配置 br0,下面用 vimdiff 展示了对 /etc/network/interfaces 的修改:
    在这里插入图片描述
  • 有两点需要注意:
    1)之前宿主机的 IP 是通过 dhcp 配置在 eth0 上的;创建 Linux Bridge 之后,IP 就必须放到 br0 上;
    2)在 br0 的配置信息中最后一行 bridge_ports eth0,其作用就是将 eth0 挂到 br0 上;
  • 重启宿主机,查看 IP 配置,可以看到 IP 已经放到 br0 上了:
    在这里插入图片描述
  • brctl show 查看当前 Linux Bridge 的配置,eth0 已经挂到 br0 上了:
    在这里插入图片描述
  • 除了 br0,大家应该注意到还有一个 virbr0 的 Bridge,而且 virbr0 上已经配置了 IP 地址 192.168.122.1。virbr0 的作用我们会在后面介绍。
  • 在宿主机中 提前创建好虚机 VM1 和 VM2,现在都处于关机状态,使用virsh list --all命令查看:
    在这里插入图片描述

配置 VM1

  • 我们在 virt-manager 中查看一下 VM1 的网卡配置:可以看到虚拟网卡的 source device 我们选择的是 br0;
    在这里插入图片描述
  • 启动 VM1:
    在这里插入图片描述
  • brctl show 告诉我们 br0 下面添加了一个 vnet0 设备,通过 virsh 确认这就是VM1的虚拟网卡:
    在这里插入图片描述
  • VM1 的 IP 是 DHCP 获得的(设置静态 IP 当然也可以),通过 virt-manager 控制台登录 VM1,查看 IP:
    在这里插入图片描述
  • VM1 通过 DHCP 拿到的 IP 是 192.168.111.106,与宿主机(IP为192.168.111.107)是同一个网段。
  • Ping 一下外网:
    在这里插入图片描述
  • 可以访问。另外,在 VM1 中虚拟网卡是 eth0,并不是 vnet0。 vent0 是该虚拟网卡在宿主机中对应的设备名称,其类型是 TAP 设备,这里需要注意一下。

配置 VM2

  • 跟 VM1 一样,VM2 的虚拟网卡也挂在 br0上,启动 VM2,查看网卡信息:
    在这里插入图片描述
  • br0 下面多了 vnet1,通过 virsh 确认这就是 VM2 的虚拟网卡:
    在这里插入图片描述
  • VM2 通过 DHCP 拿到的 IP 是 192.168.111.108,登录 VM2,验证网络的连通性:
    在这里插入图片描述
  • 可见,通过 br0 这个 Linux Bridge,我们实现了 VM1、VM2、宿主机和外网这四者之间的数据通信。

配置使用 virbr0

  • virbr0 是 KVM 默认创建的一个 Bridge,其作用是为连接其上的虚机网卡提供 NAT 访问外网的功能。virbr0 默认分配了一个IP 192.168.122.1,并为连接其上的其他虚拟网卡提供 DHCP 服务。

  • 在 virt-manager 打开 VM1 的配置界面,网卡 Source device 选择 “default”,将 VM1 的网卡挂在 virbr0 上
    在这里插入图片描述

  • 启动VM1,brctl show 可以查看到 vnet0 已经挂在了 virbr0 上:
    在这里插入图片描述

  • 用 virsh 命令确认 vnet 就是 VM1 的虚拟网卡:
    在这里插入图片描述

  • virbr0 使用 dnsmasq 提供 DHCP 服务,可以在宿主机中查看该进程信息:在 /var/lib/libvirt/dnsmasq/ 目录下有一个 default.leases 文件
    在这里插入图片描述

  • 当 VM1 成功获得 DHCP 的 IP 后,可以在该文件中查看到相应的信息:
    在这里插入图片描述

  • 上面显示 192.168.122.6 已经分配给 MAC 地址为 52:54:00:75:dd:1a 的网卡,这正是 vnet0 的 MAC。

  • 之后就可以使用该 IP 访问 VM1 了:
    在这里插入图片描述

  • 没有问题,可以访问外网,说明 NAT 起作用了。

  • 需要说明的是,使用 NAT 的虚机 VM1 可以访问外网,但外网无法直接访问 VM1。 因为 VM1 发出的网络包源地址并不是 192.168.122.6,而是被 NAT 替换为宿主机的 IP 地址了。

  • 这个与使用 br0 不一样,在 br0 的情况下,VM1 通过自己的 IP 直接与外网通信,不会经过 NAT 地址转换。

2.2.6.3 VLAN

  • LAN 表示 Local Area Network,本地局域网:通常使用 Hub 和 Switch 来连接 LAN 中的计算机。一般来说,两台计算机连入同一个 Hub 或者 Switch 时,它们就在同一个 LAN 中。一个 LAN 表示一个广播域。 其含义是:LAN 中的所有成员都会收到任意一个成员发出的广播包。

  • VLAN 表示 Virtual LAN:一个带有 VLAN 功能的switch 能够将自己的端口划分出多个 LAN。计算机发出的广播包可以被同一个 LAN 中其他计算机收到,但位于其他 LAN 的计算机则无法收到。 简单地说,VLAN 将一个交换机分成了多个交换机,限制了广播的范围,在二层将计算机隔离到不同的 VLAN 中。

  • 比方说,有两组机器,Group A 和 B。我们想配置成 Group A 中的机器可以相互访问,Group B 中的机器也可以相互访问,但是 A 和 B 中的机器无法互相访问:
    1)一种方法是使用两个交换机,A 和 B 分别接到一个交换机;
    2)另一种方法是使用一个带 VLAN 功能的交换机,将 A 和 B 的机器分别放到不同的 VLAN 中。

  • 请注意,VLAN 的隔离是二层上的隔离,A 和 B 无法相互访问指的是二层广播包(比如 arp)无法跨越 VLAN 的边界。但在三层上(比如IP)是可以通过路由器让 A 和 B 互通的。概念上一定要分清。 现在的交换机几乎都是支持 VLAN 的。

  • 通常交换机的端口有两种配置模式: 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口了。 VLAN1、2、3 的数据包在通过 Trunk 口到达对方交换机的过程中始终带着自己的 VLAN 标签。

  • KVM 虚拟化环境下是如何实现 VLAN?如下图:
    在这里插入图片描述 1)eth0 是宿主机上的物理网卡,有一个命名为 eth0.10 的子设备与之相连;
    2)eth0.10 就是 VLAN 设备了,其 VLAN ID 就是 VLAN 10;
    3)eth0.10 挂在命名为 brvlan10 的 Linux Bridge 上,虚机 VM1 的虚拟网卡 vent0 也挂在 brvlan10 上;
    4)这样的配置其效果就是: 宿主机用软件实现了一个交换机(当然是虚拟的),上面定义了一个 VLAN10;
    eth0.10,brvlan10 和 vnet0 都分别接到 VLAN10 的 Access口上。而 eth0 就是一个 Trunk 口。VM1 通过 vnet0 发出来的数据包会被打上 VLAN10 的标签;
    5)eth0.10 的作用是:定义了 VLAN10;
    6) brvlan10 的作用是:Bridge 上的其他网络设备自动加入到 VLAN10 中。

  • 再增加一个 VLAN20,见下图:
    在这里插入图片描述

  • 这样虚拟交换机就有两个 VLAN 了,VM1 和 VM2 分别属于 VLAN10 和 VLAN20。对于新创建的虚机,只需要将其虚拟网卡放入相应的 Bridge,就能控制其所属的 VLAN。

  • VLAN 设备总是以母子关系出现,母子设备之间是一对多的关系。一个母设备(eth0)可以有多个子设备(eth0.10,eth0.20 ……),而一个子设备只有一个母设备。

  • 在实验环境中实施和配置如下 VLAN 网络:
    在这里插入图片描述

  • 1)配置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,现在都处于关机状态
    在这里插入图片描述

  • 2)配置VM1
    在 virt-manager 中将 VM1 的虚拟网卡挂到 brvlan10 上:
    在这里插入图片描述启动VM1:
    在这里插入图片描述
    查看 Bridge,发现 brvlan10 已经连接了一个 vnet0 设备:
    在这里插入图片描述通过 virsh 确认这就是 VM1 的虚拟网卡:
    在这里插入图片描述

  • 3)配置VM2
    类似的,将 VM2 的网卡挂在 brvlan20 上:
    在这里插入图片描述
    启动VM2:
    在这里插入图片描述
    查看 Bridge,发现 brvlan20 已经连接了一个 vnet1 设备:
    在这里插入图片描述
    通过 virsh 确认这就是 VM2 的虚拟网卡:
    在这里插入图片描述

  • 4)验证 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。

  • 5)Linux Bridge + VLAN = 虚拟交换机
    现在对 KVM 的网络虚拟化做个总结
    (1)物理交换机存在多个 VLAN,每个 VLAN 拥有多个端口。 同一 VLAN 端口之间可以交换转发,不同 VLAN 端口之间隔离。所以交换机其包含两层功能:交换与隔离。
    (2)Linux 的 VLAN 设备实现的是隔离功能,但没有交换功能。一个 VLAN 母设备(比如 eth0),不能拥有两个相同 ID 的 VLAN 子设备,因此也就不可能出现数据交换情况。
    (3)Linux Bridge 专门实现交换功能。
    将同一 VLAN 的子设备都挂载到一个 Bridge 上,设备之间就可以交换数据了。
    (4)总结起来,Linux Bridge 加 VLAN 在功能层面完整模拟现实世界里的二层交换机。eth0 相当于虚拟交换机上的 trunk 口,允许 vlan10 和 vlan20 的数据通过;eth0.10,vent0 和 brvlan10 都可以看着 vlan10 的 access 口;eth0.20,vent1 和 brvlan20 都可以看着 vlan20 的 access 口。

三、云计算

在这里插入图片描述

3.1 基本概念

3.1.1 IT系统架构的发展过程

  • 要理解云计算,需要对IT系统架构的发展过程有所认识,请看下图:
    在这里插入图片描述
  • IT系统架构的发展到目前为止大致可以分为3个阶段:
    1)物理机架构
    这一阶段,应用部署和运行在物理机上。比如企业要上一个ERP系统,如果规模不大,可以找3台物理机,分别部署Web服务器、应用服务器和数据库服务器。如果规模大一点,各种服务器可以采用集群架构。但每个集群成员也还是直接部署在物理机上。 我见过的客户早期都是这种架构,一套应用一套服务器,通常系统的资源使用率都很低,达到20%的都是好的。
    2)虚拟化架构
    摩尔定律决定了物理服务器的计算能力越来越强,虚拟化技术的发展大大提高了物理服务器的资源使用率。这个阶段,物理机上运行若干虚拟机,应用系统直接部署到虚拟机上。虚拟化的好处还体现在减少了需要管理的物理机数量,同时节省了维护成本。
    3)云计算架构
    虚拟化提高了单台物理机的资源使用率,随着虚拟化技术的应用,IT环境中有越来越多的虚拟机,这时新的需求产生了:如何对IT环境中的虚拟机进行统一和高效的管理。有需求就有供给,云计算登上了历史舞台。

3.1.2 计算(CPU/内存)、存储和网络是 IT 系统的三类资源

  • 云计算是一种实施模式,其中存储、服务器、应用等均通过互联网交付。它以即服务形式按需提供,通常采用即用即付模式
  • 云”并不是某一物理位置,而是一种管理 IT 资源的方法,能够很大程度上取代本地设备和私有数据中心。在云计算模式下,用户可以访问经由远程提供商在线提供的虚拟计算、网络和存储资源。用户无需购买和维护大量的计算、存储和其他 IT 基础设施,也无需掌握管理设备所需的内部经验,一切均可交由云服务提供商处理。
  • 通过云计算平台,这三类资源变成了三个池子。 当需要虚机的时候,只需要向平台提供虚机的规格。 平台会快速从三个资源池分配相应的资源,部署出这样一个满足规格的虚机。 虚机的使用者不再需要关心虚机运行在哪里,存储空间从哪里来,IP是如何分配,这些云平台都搞定了。

3.1.3 云平台是一个面向服务的架构

  • 按照提供服务的不同分为 IaaS、PaaS 和 SaaS,如下图所示:
    在这里插入图片描述
  • IaaS(Infrastructure as a Service,基础设施即服务)提供的服务是虚拟机。
    IaaS 负责管理虚机的生命周期,包括创建、修改、备份、启停、销毁等。 使用者从云平台得到的是一个已经安装好镜像(操作系统+其他预装软件)的虚拟机。 使用者需要关心虚机的类型(OS)和配置(CPU、内存、磁盘),并且自己负责部署上层的中间件和应用。 IaaS 的使用者通常是数据中心的系统管理员。 典型的 IaaS 例子有 AWS、Rackspace、阿里云等
  • PaaS(Platform as a Service,平台即服务)提供的服务是应用的运行环境和一系列中间件服务(比如数据库、消息队列等)。
    使用者只需专注应用的开发,并将自己的应用和数据部署到PaaS环境中。PaaS负责保证这些服务的可用性和性能。PaaS的使用者通常是应用的开发人员。典型的 PaaS 有 Google App Engine、IBM BlueMix 等
  • SaaS(Software as a Service,软件即服务)提供的是应用服务。
    使用者只需要登录并使用应用,无需关心应用使用什么技术实现,也不需要关系应用部署在哪里。SaaS的使用者通常是应用的最终用户。典型的 SaaS 有 Google Gmail、Salesforce 等

3.2 云计算和 OpenStack

  • OpenStack 对数据中心的计算、存储和网络资源进行统一管理。 由此可见,OpenStack 针对的是 IT 基础设施,是 IaaS 这个层次的云操作系统。

结束

参考: https://www.xjimmy.com/openstack-5min

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/528491.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【教程】配置NFS共享直接访问目标服务器的存储目录

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 目录 前景提要 NFS安装教程 旧服务器上 新服务器上 验证安装 优缺点 扩展 前景提要 我们新服务器的硬盘容量很小,但旧服务器的硬盘容量很大。如何在不拔硬盘的情况下,直接已本地目录…

分区计量管理项目应用

为充分发挥分区计量管理项目在漏损控制的效用,应构建科学完备的应用体系,如下图 分区计量应用体系 1. 基于水量平衡分析的漏损现状评估方法 分区计量管理项目通过监控分析DMA 分区内流量、压力、水质、大用户用水等情况,结合营业抄收系统的营…

【内网渗透】春秋云镜 Tsclient WP

前言 mssql连接和攻击、windows提权、令牌窃取、镜像劫持 flag1 上来就扫给的地址 nmap: 结合题目的mssql知识点,估计是从这里入手了,尝试爆破用户名和密码,这里先用fscan来爆,可以直接爆出来(别的工具也可&#x…

0.96寸oled显示坏苹果(badapple)

前言 俗话说:有屏幕的地方就会有badapple。 下面带来使用0.96寸OLED屏幕显示badapple的教程。 1、获取视频 首先从网上下载badapple的视频,下载地址:badapple 2、抓取视频图片 使用OLED播放视频的思想就是将视频分成一张一张的图片然后进行…

叉乘在图形学中的几何意义 ---- 判断一个点是否在三角形内

1 叉乘是什么 先简单介绍一下叉乘(cross product): a → b → \overrightarrow{a} \times \overrightarrow{b} a b ,其结果,还是一个向量。 其方向,符合右手螺旋定则(右手手指头从a转向b,看大拇指指向哪…

声音合成——Foley Sound——DECASE项目——多模态智能感知与应用——VariantAutoencoder(VAE)代码实现(7)

文章目录 概述VAE代码实现关闭eager execution修改bottlenectk组件修改loss损失函数 Preprocessline模块实现Loader模块Padder模块LogSpectrogramExtractor模块MinMaxNormaliser模块Saver模块PreprocessPipeLine模块知识补充property修饰词 train训练模块load_fsdd模块train模块…

针对基于智能卡进行认证的活动目录攻击

最近,我参与了一项攻击基于智能卡的活动目录的工作。实际上,你根本不需要使用物理智能卡来验证登录这个活动目录。证书的属性决定了它是否可以用于基于智能卡进行登录。因此,如果你能获得相应的私钥,那么就可以绕过智能卡的验证实…

ubuntu 22.04 安装 Docker Desktop 及docker介绍

目录 一、Docker Desktop 安装 1、我们先去官网下载安装包 2、Install Docker Desktop on Ubuntu 3、Launch Docker Desktop 二、Docker 介绍 什么是docker 如何使用docker docker是如何工作的 docker build docker run docker pull 一、Docker Desktop 安装 1、我们先…

网络应用技术师技能考试试题+讲解

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 前言 本章将会讲解网络应用技术师技能考试试题 一.正文 一、单选题(每题1分,满分50分) 1. 设信号的波特率为800Baud,采用幅度…

肠道微生物群:心力衰竭的新治疗靶点

谷禾健康 心力衰竭 Heart Failure(HF) 心力衰竭是一种严重的心血管疾病,其特点是较高的发病率和死亡率,同时也会带来高昂的医疗成本。 一般都认为心力衰竭是老年人的疾病,但其实心力衰竭已经呈现年轻化趋势。 以上症状…

a标签属性href的多种写法

众所周知,a标签的最重要功能是实现超链接和锚点。而且,大多数人认为a标签最重要的作用是实现超链接,其实不单单是实现超链接的方法,今天新起点博客就来整理下a标签中href的几种用法。 1、a href“[removed]js_method();” 这是常用…

即拼七人拼团系统开发模式,为什么这么火?

即拼七人拼团模式主要是结合了拼团模式的奖励机制和二二复制系统的排位玩法,将产品销售中的利润最大化让利于拼团的用户,刺激用户主动分享推广,以解决平台引流和用户活跃度的问题。 具体来说,即拼七人拼团模式就是用户进入平台购买…

崩坏:星穹铁道私人服务器搭建教程

准备工具: 一台 Windows 系统服务器 《崩坏:星穹铁道》启动器 《崩坏:星穹铁道》客户端 如果以上各项你都准备好了的话,现在就开始吧! 首先完全解压你的《崩坏:星穹铁道》客户端以及SR启动器。 解压完成…

你不知道的JavaScript的事件循环

JavaScript的事件循环 JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊。这也与它的用途有关。作为浏览器脚本语言,JavaScript的主要…

Kubernetes二进制部署 单节点

目录 1.环境准备 1.关闭防火墙和selinux 2.关闭swap 3.设置主机名 4.在master添加hosts 5.桥接的IPv4流量传递到iptables的链 6.时间同步 2.部署etcd集群 1.master节点部署 2.在node1与node2节点修改 3.在master1节点上进行启动 4.部署docker引擎 3.部署 Master 组…

麻了,同样是科班出身,学弟月薪却是我的3倍

我有个同学大学毕业,因为却少工作经验,又不愿意去正经的互联网企业做实习生,他嫌工资太低,于是进了家外包公司,那时候感觉待遇还可以。可现在五年过去了,他想跳槽却鲜有人问津。最可气的是比他晚一年毕业的…

Java中的七种设计原则

1.开闭原则 对扩展开放,对修改关闭。在程序需要进行扩展的时候,不能去修改原有的代码,要去实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。 下面是输入法设置皮肤的例子: // 抽象皮…

Linux入门---缓冲区模拟实现

前言 有了前面的基础我们知道c语言的缓冲区本质上就是FILE结构体的一部分,我们每次使用stdout将数据打印到屏幕上时,本质上是先将数据拷贝到FILE结构体的缓冲区中,然后再拷贝到内核缓冲区中也就是file结构体里面的缓冲区,最后再刷…

TSN网络流量记录器:一种经济高效的解决方案,用于验证汽车网络中的以太网融合。

在未来几年,汽车线束将从不同协议的异构网络转变为分层的同构以太网网络。在这种新情况下,模拟真实车辆网络的实验室测试台将需要分析工具以支持它们在车内通信验证过程中进行验证。 汽车向以太网融合原因 随着汽车内部技术变得越来越复杂,相…

信息调查的观念

每次做一件事前都要把这件事调查清楚,比如考一门科目我们要把和这门科目有关的资源都收集起来,然后把再从中筛选出有用的信息,如数值计算方法我们在考试前就可以把b站有关的学习资源网课或者前人总结的考试经验做个收集总结,做出对…