云计算与openstack学习(二)

OpenStack 涉及的知识领域极广 
可以说涵盖了IT基础设施的所有范围。计算、存储、网络、虚拟化、高可用、安全、备。。。。。。无所不包。

OpenStack 是一个平台,不是一个具体的实施方案
OpenStack的各个组件都采用Driver的架构,支持各种具体的实现技术。比如 OpenStack 的存储服务Cinder只定义了上层抽象API,具体的实现交给下面的各种Driver,比如基于LVM的iSCSI Driver,EMC、IBM等商业存储产品的Driver,或者是开源的分布式存储软件,比如Ceph、GlusterFS的Driver。
正是因为这种架构上的灵活性,使得初学者在学习OpenStack的时候不会像学习其他具体软件产品那样容易上手。

OpenStack 本身是一个分布式系统 
大多数搞 IT 的对分布式计算都不会太熟悉。直接冲进来会被 OpenStack 繁多的组件以及他们之间的交互方式搞得云里雾里。 

         虽然 OpenStack 学习曲线比较陡峭,掌握起来难道较大,但 OpenStack 目前已经是 IaaS 云的事实标准,而且前途一片光明,对于我们搞 IT 的如果能啃下这个骨头,必定能大大提升自身的竞争力。
 

写给谁看 


这套教程的目标读者包括:

OpenStack初学者 
   学习 OpenStack 也是经历了一个艰辛曲折的过程。其主要原因在于没有找到一个系统教授OpenStack的教程,特别是针对初学者。大部分资料都比较分散,对于初学者无法有机地串起来。也正是因为这个原因,编写这样一套教程的想法,能够让初学者能够少走弯路,系统地学习、掌握和实践 OpenStack。

OpenStack 实施工程师 
       把自己定位成一个能到一线攻城拔寨的实施工程师。所以这个教程也是针对 OpenStack 的实施人员,让他们能够通过学习真正掌握部署OpenStack 的知识、技能以及故障排查技巧。 

 

包含哪些内容? 


如下图,两大块:

 640

预备知识
因为面向初学者,首先会有虚拟化和云计算的“预备知识”,会介绍 KVM,IaaS 等技术。 

OpenStack核心
这是主要内容,包含OpenStack的架构和和各个核心组件。将会通过大量的案例、操作步骤、截图、日志来帮助大家理解 OpenStack 各组件是如何工作的。
其目标是让各位可以根据客户的需求进行配置和调整。

 

为啥叫《玩转 OpenStack》? 

每次的内容只包3-6个知识点,这也是我把教程命名为《玩转 OpenStack》的原因。虽然是碎片化推送,但整个教程是系统、连贯和完整的,只是化整为零了。


虚拟化 

upload-ueditor-p_w_picpath-20160302-1456872106

 

OpenStack是云操作系统,要学习OpenStack,首先需要掌握一些虚拟化和云计算的相关知识。

 

虚拟化 

虚拟化是云计算的基础。简单的说,虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享

物理机的 CPU、内存、IO 硬件资源,但逻辑上虚拟机之间是相互隔离的。

物理机我们一般称为宿主机(Host),宿主机上面的虚拟机称为客户机(Guest)。

那么 Host 是如何将自己的硬件资源虚拟化,并提供给 Guest 使用的呢?

这个主要是通过一个叫做 Hypervisor 的程序实现的。

根据 Hypervisor 的实现方式和所处的位置,虚拟化又分为两种:

1型虚拟化和2型虚拟化

1型虚拟化

Hypervisor 直接安装在物理机上,多个虚拟机在 Hypervisor 上运行。Hypervisor 实现方式一般是一个

特殊定制的 Linux 系统。Xen 和 VMWare 的 ESXi 都属于这个类型。


upload-ueditor-p_w_picpath-20160302-1456872106 

2型虚拟化

物理机上首先安装常规的操作系统,比如 Redhat、Ubuntu 和 Windows。Hypervisor 作为 OS 上的

个程序模块运行,并对管理虚拟机进行管理。KVM、VirtualBox 和 VMWare Workstation 都属于这个

类型。

upload-ueditor-p_w_picpath-20160302-1456872106

理论上讲:

1型虚拟化一般对硬件虚拟化功能进行了特别优化,性能上比2型要高;

2型虚拟化因为基于普通的操作系统,会比较灵活,比如支持虚拟机嵌套。嵌套意味着可以在KVM虚拟机

中再运行KVM。

 

KVM 


下面重点介绍KVM这种2型虚拟化技术。

基本概念

在 x86 平台上最热门运用最广泛的虚拟化方案莫过于 KVM 了。OpenStack 对 KVM 支持得也最好,我

们的教程也理所当然选择 KVM 作为 实验环境的 Hypervisor。

KVM 全称是 Kernel-Based Virtual Machine。也就是说 KVM 是基于 Linux 内核实现的。

KVM有一个内核模块叫 kvm.ko,只用于管理虚拟 CPU 和内存。

那 IO 的虚拟化,比如存储和网络设备由谁实现呢?

这个就交给 Linux 内核和Qemu来实现。

说白了,作为一个 Hypervisor,KVM 本身只关注虚拟机调度和内存管理这两个方面。IO 外设的任务交

给 Linux 内核和 Qemu。

Libvirt

大家在网上看 KVM 相关文章的时候肯定经常会看到 Libvirt 这个东西。Libvirt 是啥?


简单说就是 KVM 的管理工具

其实,Libvirt 除了能管理 KVM 这种 Hypervisor,还能管理 Xen,VirtualBox 等。

OpenStack 底层也使用 Libvirt,所以很有必要学习一下。

Libvirt 包含 3 个东西:后台 daemon 程序 libvirtd、API 库和命令行工具 virsh

1. libvirtd是服务程序,接收和处理 API 请求;

2. API 库使得其他人可以开发基于 Libvirt 的高级工具,比如 virt-manager,这是个图形化的 KVM 管理工具,后面我们也会介绍;

3. virsh 是我们经常要用的 KVM 命令行工具,后面会有使用的示例。 

作为 KVM 和 OpenStack 的实施人员,virsh 和 virt-manager 是一定要会用的。

准备 KVM 实验环境 
upload-ueditor-p_w_picpath-20160304-1457044908

 

KVM 是 OpenStack 使用最广泛的 Hypervisor,本节介绍如何搭建 KVM 实验环境

 安装 KVM

上一节说了,KVM 是 2 型虚拟化,是运行在操作系统之上的,所以我们先要装一个 Linux。Ubuntu、Redhat、CentOS 都可以,这里我们以 Ubuntu14.04 为例。

基本的 Ubuntu 操作系统装好之后,安装 KVM 需要的包 

$ sudo apt-get install qemu-kvm qemu-system libvirt-bin virt-manager bridge-utils vlan

 通过这些安装包我们顺便复习一下上一节介绍的 KVM 的相关知识。

1. qemu-kvm 和 qemu-system 是 KVM 和 QEMU 的核心包,提供 CPU,内存和 IO 虚拟化功能

2. libvirt-bin 就是 libvirt,用于管理 KVM 等 Hypervisor

3. virt-manager 是 KVM 图形化管理工具

4. bridge-utils 和 vlan,主要是网络虚拟化需要,KVM 网络虚拟化的实现是基于 linux-bridge 和 VLAN,后面我们会讨论。

Ubuntu 默认不安装图形界面,手工安装一下 

sudo apt-get install xinit

sudo apt-get install gdms

udo apt-get install kubuntu-desktop

 apt 默认会到官网上去下载安装包,速度很慢,我们可以使用国内的镜像站点。

配置/etc/apt/sources.list 

deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ trusty security main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse

 然后执行下面命令更新安装包 index

# apt update

Redhat 和 CentOS 安装相对简单,安装过程中选择虚拟化和图形组件就可以了。

小窍门:Ubuntu 默认是不允许 root 通过 ssh 直接登录的,可以修改 /etc/ssh/sshd_config,设置 

PermitRootLogin yes

 然后重启 ssh 服务即可

# service ssh restartssh stop/waitingssh start/running, process 27639


在虚拟机上做实验

作为 2型虚拟化的 KVM,是支持虚拟化嵌套,这使得我们可以在虚拟机中实验 KVM。 比如我在 VMWare Workstation 中安装了一个 Ubuntu14.04 的虚拟机,为了能让 KVM 能创建 嵌套的虚机,要把 CPU 的虚拟化功能打开。如下图在 VMWare 中设置以下 CPU 的模式


upload-ueditor-p_w_picpath-20160304-1457044908
 

spacer.gifUbuntu 启动后,用以下命令确认 CPU 支持虚拟化

# egrep -o '(vmx|svm)' /proc/cpuinfo# vmx

 确认 Libvirtd 服务已经启动

# service libvirt-bin statuslibvirt-bin start/running, process 1478

 

启动第一个 KVM 虚机 

upload-ueditor-p_w_picpath-20160302-1456872106

本节演示如何使用 virt-manager 启动 KVM 虚机。 

首先通过命令 virt-manager 启动图形界面

# virt-manager

upload-ueditor-p_w_picpath-20160307-1457304718

点上面的图标创建虚机

upload-ueditor-p_w_picpath-20160307-1457304719

给虚机命名为 kvm1,这里选择从哪里启动虚机。如果是安装新的 OS,可以选择第一项。如果已经有安装好的镜像文件,
选最后一项(如上图)

接下来需要告诉 virt-manager 镜像的位置。

upload-ueditor-p_w_picpath-20160307-1457304719

点击 “Browser”

upload-ueditor-p_w_picpath-20160307-1457304719

在我的系统中存放了一个 cirros-0.3.3-x86_64-disk.img 镜像文件 。cirros 是一个很小的 linux 镜像,非常适合测试用。大家可以到 http://download.cirros-cloud.net/ 下载,然后放到 /var/lib/libvirt/p_w_picpaths/ 目录下,这是 KVM 默认查找镜像文件的地方。

upload-ueditor-p_w_picpath-20160307-1457304719

为虚拟机分配 CPU 和内存

upload-ueditor-p_w_picpath-20160307-1457304719

点击 “Forward”, 再确认一下信息,就可以启动虚机了。

upload-ueditor-p_w_picpath-20160307-1457304719

virt-manager 会打开虚机 kvm1 的控制台窗口,可以看到启动情况

upload-ueditor-p_w_picpath-20160307-1457304720

virt-manager 可以对虚机进行各种管理操作,界面直观友好,很容易上手。 同时我们也可以用命令 virsh 管理虚机,比如查看宿主机上的虚机 

root@ubuntu:~# virsh list

Id    Name              State

--------------------------------

8     kvm1              running

 至此,第一个虚机已经跑起来了,采用的都是默认设置,后面我们会逐步讨论有关虚


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章