Openstack的本质

每台计算机都可以通过虚拟化技术虚拟出多台Virtual Machine,实际上是使用了操作系统内核的namespace和cgroup技术,将进程和资源进行了隔离,这样每台虚拟机就可以当作一台真实的机器去使用。如果有很多台服务器(组建集群),每台服务器上又创建多台虚拟机,那么这么多台虚拟机如何去统一管理呢?虚拟机之间内部通信需要使用网络,如何构建虚拟网络使得它们能够彼此通信呢?这就是Openstack所要做的,它的使命就是去管理整个集群的虚拟机。

Openstack封装了内部逻辑,仅给用户暴露外部接口,用户只需要使用Horizon操作界面,就可以创建、管理虚拟机了。那么它的底层到底是如何工作的?为什么只需要调用Restful API,就可以创建虚拟机了?

Openstack创建虚拟机

当用户在前台界面(Horizon)点击“创建虚拟机”的按钮时,会向服务器后端发送http请求,调用nova提供的API,nova-api接受到该请求后,会把创建虚拟机的消息发送到RabbitMQ中(消息中间件)。这时,nova-scheduler便会从RabbitMQ中拿到消息,计算各个计算结点上的资源,以确定到底是在哪台计算结点上进行创建。决定好之后,又会把消息发送到RabbitMQ中。此时nova-compute就是从消息中间件获取消息,调用libvirt API进行真正的虚拟机创建操作。在创建vm的过程中,如果nova-compute想更新数据库信息,会通过Messaging 向 nova-conductor发送消息,nova-conductor负责数据库访问,这样就避免了 nova-compute 直接访问数据库,增加了系统的安全性(因为数据库是安装在控制结点上的,需要从计算结点携带密码过去)。如果虚拟机都是创建在计算结点上的,那么每个计算结点上都必需安装Hypervisor(KVM)。

Openstack的进程采用异步调用的方式(利用RabbitMQ),使得各个组件解耦合,提高了系统的性能和伸缩性。

基于 Driver 的框架:

OpenStack 的计算节点支持多种 Hypervisor,包括 KVM, Hyper-V, VMWare, Xen等。Nova-compute 为这些 Hypervisor 定义了统一的接口,hypervisor 只需要实现这些接口,就可以 driver 的形式即插即用到 OpenStack 中。

Openstack的核心:KVM-QEMU

服务器最底层是硬件层,上面一层是操作系统内核。kvm是内核中的一个模块,真正创建虚拟机等核心功能就是由它来完成的。但是kvm只能对cpu和内存进行虚拟化,无法对网络和io(磁盘)进行虚拟化。内核的上一层就是整个操作系统,qemu是里面的一个软件,用来进行网络和io的虚拟化。所以kvm和qemu一起共同实现了服务器的虚拟化,即kvm-qemu。libvirt是kvm的管理工具,可以理解为是libvirt在命令kvm-qume创建虚拟机。libvirt由libvirtd(后台deamon进程),API库和virsh命令行工具组成,上层(virt-manager图形化工具)可以调用api执行virsh命令,最终完成创建虚拟机的操作。Openstack的Nova,Cinder,Glance等组件则是直接调用libvirt API去创建虚拟机以及管理所有的vm。(QEMU是一个模拟器,它给虚拟机模拟了和物理硬件一样的环境,QEMU就是kvm-qemu)

时间: 2024-10-01 02:26:06

Openstack的本质的相关文章

【转载】如何开始使用OpenStack命令行和API

[转载] [原文地址]http://lingxiankong.github.io/blog/2014/08/02/openstack-client-api/#userconsent# 当你开始使用OpenStack,基本上都是从一个已搭建好的环境入手,别人(operator)会告诉你horizon登录的租户名.用户名和密码. 但毕竟horizon不会封装OpenStack的所有特性,当你已经玩腻了页面上那些功能时,你想尝试更多更丰富的功能,那么恭喜你,你已经向中级玩家迈进了一步.中级玩家对Ope

OpenStack实操用到的网络知识

搭建OpenStack平台或者维护OpenStack平台会用到一些交叉性的网络知识,一部分和Linux操作系统的配置有关.一部分和交换机.路由器.网桥等网络设备有关.当然,和网络有关的部分并不会涉及的特别深入,仍以基本操作为主,毕竟OpenStack平台本质上仍旧是一个以软件为中心的OS级底层平台. ? ? ? ? ?在使用OpenStack平台时,我们会在日常维护过程中频繁使用到这几个概念:网卡接口.网桥.VLAN.VXLAN.命名空间与名字空间.GRE. ? ? ? ? ?网卡,指的是Lin

OpenStack组件系列?Keystone搭建

一:版本信息 官网:http://docs.openstack.org/newton/install-guide-rdo/keystone.html 二:部署keystone 官网文档:http://docs.openstack.org/newton/install-guide-rdo/ 查看系统信息: [[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.0.1406 (Core) [[email prote

Nova 是如何统计 OpenStack 计算资源

引言 运维的同事常常遇到这么四个问题: Nova 是如何统计 OpenStack 计算资源的? 为什么 free_ram_mb, free_disk_gb 会是负数? 即使 free_ram_mb, free_disk_gb 为负数,为什么虚拟机依旧能创建成功? 因资源不足采用随机调度的方式会导致创建虚拟机失败,而指定 host 却能创建成功? 本文将从以上四个问题入手,结合 Kilo 版本 Nova 源码,在默认 Hypervisor 为 Qemu-kvm 的前提下(不同 Hypervisor

openstack 装逼之路~keystone部署

第一:版本信息 官网http://docs.openstack.org/newton/install-guide-rdo/keystone.html 我们按照Newton这个版本来部署,其实跟大家讲,openstack基本保持每6个月更新一个版本,面对如此快的版本更迭,我们其实瞅准了一个版本深入研究下去就好,深入到什么层次,为社区提交代码.任何每来一个新版本就去部署一次的主都是傻叉. 第二:部署keystone 参考部署官网:http://docs.openstack.org/newton/in

OpenStack虚拟机状态

OpenStack创建一个虚拟机,涉及到三种状态,vm_state,task_state和power_state. 先总结几点: 电源状态(power_state):是hypervisor的状态,从计算节点"由下而上"加载. 虚拟机状态(vm_state):反应基于API调用的一种稳定状态,符合用户体验,从上而下的API实现. 任务状态(task_state):代表API调用过程的过渡状态. 只要数据库可用,就可以强删虚拟机.("hard" delete of VM

openstack装B之路------Keystone部署以及操作

1.准备阶段 查看系统信息 [[email protected] ~]# cat /etc/redhat-release 查看内核版本 [[email protected] ~]# uname -r 安装官方yum源 [[email protected] ~]# yum -y install centos-release-openstack-newton 更新yum包 [[email protected] ~]# yum -y upgrade 安装工具 [[email protected] ~]

openstack里面的Provider network 和 Tenant network 的区别

openstack里面的网络相对复杂.经常有人对几个网络概念搞混淆,这里基本说明下 Openstack里面根据创建网络的用户的权限,Neutron network 可以分为: Provider network:管理员创建的和物理网络有直接映射关系的虚拟网络. Tenant network:租户普通用户创建的网络,其配置由 Neutorn 根据管理员在系统中的配置决定.受限于neutron配置. 根据网络的类型,Neutron network 可以分为: VLAN network(虚拟局域网) :

Openstack入坑指南

什么是云计算 概念 云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息,可以按需求提供给计算机和其他设备.用户不需要了解”云“中的基础设施细节,不必具有相应的专业知识,也无需直接控制.云计算描述了一种基于互联网的新的IT服务增加.使用和交付模式. 我们举一个例子来理解云计算,云计算中的”云“可以理解为天上的云,天上的云可以变成雨水降落到地上,落到地上的水蒸发后又变成云彩.这样就形成了一个循环. 这里的雨水表示计算资源,比如虚拟机.存储.网络等等. 云变水的过程表示获取资源的过