openstack学习,来自《每天5分钟玩转OpenStack》
一、虚拟化
- 在一台物理服务器上可以跑多台虚拟机
- 共享物理机的CPU\内存、IO硬件资源
- 逻辑上虚拟机之间是相互隔离的
- 物理机—宿主机 host
- host上面的虚拟机为客户机 guest
- Hypervisor 是运行在物理服务器与操作系统之间的中间软件,实现硬件资源虚拟化。
- 两种虚拟化
- 1型虚拟化
- 2型虚拟化
- 两种虚拟化
1. 1型虚拟化
- Hypervisor直接安装在物理机上,多个虚拟机运行在Hypervisor之上
- XEN & VMWare的ESXi 都属于这种类型
2. 2型虚拟化
- 物理机上先安装操作系统,Hypervisor在Linux操作系统之上,作为OS的一个程序模块,并对虚拟机进行管理。
- KVM &VirtualBox &VMWare Workstation
比较:
1型虚拟化一般对硬件虚拟化功能特别优化,比2的性能高。
2型虚拟化是基于普通OS的,会比较灵活。(比如支持虚拟机嵌套,嵌套:在KVM中可以再运行KVM)
3. KVM
3.1 基本概念
- KVM - Kernel-Based Virtual Machine 基于内核实现的
- 内核模块- kvm.ko 只用于管理虚拟CPU和内存
- 注重虚拟机调度和内存管理
- IO&存储&网络的虚拟化—QEMU来实现
- Libvirt—KVM的管理工具
- 也可管理XEN、VirtualBox等
- openstack的底层也使用Libvirt
- **Libvirt包括3个东西:**后台daemon(守护进程)程序libvirtd、API库、命令行工具virsh
- libvirtd:服务程序,接收和处理API请求
- API:可用于开发基于LIBVIRT的高级工具
- virsh:KVM命令行工具。
3.2 KVM实战
- KVM和QEMU的核心包---- qemu-kvm ,qemu-system
- libvirt-bin 是libvirt, virt-manager 是KVM图形化管理工具 , bridge-util、vlan是网络虚拟化需要的。
- VMWare平台是拥有虚拟化的功能,因此可以在其之上搭建一个KVM,而虚拟机操作系统中再去安装KVM是无法使用的,因为虚拟机OS是没有虚拟化功能的。
4.KVM虚拟化原理
4.1 CPU虚拟化
-
KVM虚拟化是需要CPU硬件支持的。查看是否支持虚拟化。
egrep '^flags.*(vmx|svm)' /proc/cpuinfo vmx/svm //支持虚拟化
-
一个KVM虚拟在宿主机中其实是一个qemu-kvm进程,与其他linux进程一样被调度。
-
虚拟机中的每个虚拟vCPU则对应qemu-kvm进程中的一个线程。
-
虚拟机的vCPU总数可超过物理CPU的数量,称为CPU overcommit (超配),使得虚机能够充分利用宿主机的CPU资源。
4.2 内存虚拟化
- KVM通过内存虚拟化共享物理系统内存,动态分配给虚拟机。
- 为了在一台机器上运行多个虚拟机,KVM需要实现VA(虚拟内存)–PA(物理内存)–MA(机器内存)之间的地址转换。
- 虚拟机OS 控制虚拟地址到客户内存物理地址的映射(VA–PA)
- 虚拟机OS不能之间访问实际机器内存。
- KVM需要负责映射客户物理内存到实际机器内存(PA–MA)
- 内存也可以overcommit,所有虚拟机的内存之和可以超过宿主机的物理内存。
4.3 存储虚拟化
- KVM的存储虚拟化是通过存储池(Storage pool)和卷(volume)来管理的。
- 存储池是宿主机上可以看到的一片存储空间。
- 卷 是在存储池中划分出的一块空间。
- 宿主机将卷 分配给虚拟机,卷在虚拟机中看到的就是一块硬盘。
- 不同类型的存储池
- 目录类型的存储池
- 文件目录是最常用的存储池类型,文件目录下的文件就是一个卷。
- 使用文件做卷的优点:存储方便、移植性好、可复制、可远程访问。
- 卷格式选择:
- raw 默认格式,原始磁盘镜像格式
- qcow2 推荐使用格式,cow=copy on write
- vmdk 是VMWare的虚拟磁盘格式,VMware虚拟机可以直接在KVM上运行。
- LVM类型的存储池
- 宿主机上VG中的LV也可以作为虚拟磁盘分配给虚拟机使用。
- VG就是存储池,LV就是卷
- 其他类型的存储池
- KVM还支持iSCSI,Ceph等多种类型的存储池。
- 目录类型的存储池
4.4 网络虚拟化
- 网络虚拟化最重要的是Linux Bridge和VLAN
- 4.4.1 Linux Bridge
- 宿主机有一块与外界链接的物理网卡eth0,上面跑了一个虚机VM1,如何让VM1能够访问外网?
- 给VM1分配一个虚拟网卡vnet0,通过linux bridge br0将eth0和vnet0链接起来。
- 多个网络可以链接到同一个Liunx Bridge
- 通过BR0来进行eth0与vent0 的网络间的数据转发。
- 手动配置br0:之前在eth0上的dhcp分配的IP 需要分配到br0上。
- bridge_ports eth0:将eth0挂到br0上。
- virbr0 是KVM默认创建的一个Bridge,其作用是为连接其上的虚拟网卡提供NAT访问外网的功能。
- 4.4.2 VLAN
- Local Area Network 本地局域网,通常使用Hub和Switch来连接LAN中的计算机。
- Linux Bridge + Vlan = 虚拟交换机
二、云计算
2.1 基本概念
- IT系统架构大致是三个阶段的发展:物理机架构、虚拟化架构、云计算架构。
- 虚拟化技术的发展提高了物理服务器的资源使用率,节省了维护的成本。
- 云计算–对IT环境中的虚拟机进行统一和高效的管理。
- 计算(CPU\内存)、存储和网络是IT系统的三类资源,通过云计算,这三类资源变成了三个池子,然后按需拿取,云平台完全搞定,不用使用者关心。
- IaaS 提供的服务是虚拟机,它负责管理虚机的生命周期。
- 使用者从云平台上获得的是一个已安装好的镜像,使用者需要关心的是虚拟机的类型(OS)和配置(CPU、内存、磁盘),需要自己负责部署上层的中间件和应用。
- 系统管理员使用,例子有AWS、Rackspace、阿里云等。
- PaaS 提供的服务是应用的运行环境和一系列中间件服务(消息队列、数据库等)
- Google APP Engine、IBM BlueMix等
- SaaS 提供的是应用服务。
- Google Gmail、Salesforce等。
Openstack–
OpenStack是对数据中心的计算、存储和网络资源进行统一管理。
三、Openstack 架构
3.1 概念架构
- OpenStack的核心服务:
- Nova(管理计算资源)
- Neutron(管理网络资源)
- Glance(为VM提供OS镜像)
- Cinder(提供块存储)
- KeyStone(认证服务)
- Horizon(界面)
- 可选服务
- Swift(提供对象存储)
- Ceilometer(监控服务)
3.2 逻辑架构
每个服务由若干个组件组成