设为首页 收藏本站
查看: 1292|回复: 0

[经验分享] 玩转OpenStack

[复制链接]

尚未签到

发表于 2017-6-24 16:37:44 | 显示全部楼层 |阅读模式
一、OpenStack包含那些内容
DSC0000.png

  1、预备知识
  首先会有虚拟化和云计算的“预备知识”,会介绍 KVM,IaaS 等技术。
  2、OpenStack核心
  包含OpenStack的架构和和各个核心组件。


二、虚拟化的介绍
  虚拟化是云计算的基础。简单的说,虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的 CPU、内存、IO 硬件资源,但逻辑上虚拟机之间是相互隔离的。

  物理机我们一般称为宿主机(Host),宿主机上面的虚拟机称为客户机(Guest)。
  那么 Host 是如何将自己的硬件资源虚拟化,并提供给 Guest 使用的呢?
这个主要是通过一个叫做 Hypervisor 的程序实现的。
  根据 Hypervisor 的实现方式和所处的位置,虚拟化又分为两种:
1型虚拟化和2型虚拟化

1型虚拟化
  Hypervisor 直接安装在物理机上,多个虚拟机在 Hypervisor 上运行。Hypervisor 实现方式一般是一个特殊定制的 Linux 系统。Xen 和 VMWare 的 ESXi 都属于这个类型。
DSC0001.jpg


2型虚拟化
  物理机上首先安装常规的操作系统,比如 Redhat、Ubuntu 和 Windows。Hypervisor 作为 OS 上的一个程序模块运行,并对管理虚拟机进行管理。KVM、VirtualBox 和 VMWare Workstation 都属于这个类型。
DSC0002.jpg

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

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

DSC0003.png


基本概念
  在 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


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

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

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



如何安装KVM
  KVM 是 OpenStack 使用最广泛的 Hypervisor,本节介绍如何搭建 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 -y
  通过这些安装包我们顺便复习一下上一节介绍的 KVM 的相关知识。


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

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

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

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

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









sudo apt-get install xinit

sudo apt-get install gdm

sudo apt-get install kubuntu-desktop
  小提示:



Redhat 和 CentOS 安装相对简单,安装过程中选择虚拟化和图形组件就可以了。
  在虚拟机上做实验
作为 2型虚拟化的 KVM,是支持虚拟化嵌套,这使得我们可以在虚拟机中实验 KVM。 比如我在 VMWare Workstation 中安装了一个 Ubuntu14.04 的虚拟机,为了能让 KVM 能创建 嵌套的虚机,要把 CPU 的虚拟化功能打开。如下图在 VMWare 中设置以下 CPU 的模式。
DSC0004.jpg
Ubuntu 启动后,用以下命令确认 CPU 支持虚拟化










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

# vmx
  确认 Libvirtd 服务已经启动









# service libvirt-bin status

libvirt-bin start/running, process 1478

启动第一个KVM虚拟机
DSC0005.jpg


使用 virt-manager 启动 KVM 虚机
  首先通过命令 virt-manager 启动图形界面



# sudo virt-manager    #在root用户下执行这条命令需要加上sudo否则报错
  Error: (注意这个坑)
DSC0006.png

DSC0007.jpg

  点上面的图标创建虚机
DSC0008.jpg

  给虚机命名为 kvm1,这里选择从哪里启动虚机。如果是安装新的 OS,可以选择第一项。如果已经有安装好的镜像文件,选最后一项(如上图)
  接下来需要告诉 virt-manager 镜像的位置。
DSC0009.jpg

  点击 “Browser”
DSC00010.jpg

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



wget -P /tmp/images http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
DSC00011.jpg

  为虚拟机分配 CPU 和内存
DSC00012.jpg

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

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

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









root@ubuntu:~# virsh list

Id    Name              State

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

8     kvm1              running
  至此,第一个虚机已经跑起来了,采用的都是默认设置,后面我们会逐步讨论有关虚机更细节的内容,比如存储和网卡的设置。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-387587-1-1.html 上篇帖子: 虚拟化类型 层次关系 下篇帖子: ubuntu下nginx+php5的部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表