Openstack底层通用技术及通用组件

一 CPU特权级
Openstack底层通用技术及通用组件_第1张图片

二 内核态与用户态
Openstack底层通用技术及通用组件_第2张图片

三 虚拟化管理程序
一种运行在基础物理服务器和操作系统之间中间软件层,可允许多个操作系统和应用共享硬件。也可叫做VMM(Virtual machine monitor),即虚拟机监视器。
Openstack底层通用技术及通用组件_第3张图片

四 虚拟化类型
1 半虚拟化
对客户操作系统(VM)的内核进行修改,将运行在Ring 0上的指令转为调用hypervisor
Openstack底层通用技术及通用组件_第4张图片
2 硬件辅助全虚拟化
Intel VT和AMD-V技术
客户操作系统可以直接使用Ring 0而无需修改
查看CPU是否支持
grep “vmx” /proc/cpuinfo //针对Intel CPU
grep “svn” /proc/cpuinfo //针对AMD CPU
Openstack底层通用技术及通用组件_第5张图片
3 操作系统虚拟化
允许操作系统内核拥有彼此隔离和分割的多用户空间实例。这些用户空间实例,也称之为容器。
基于linux内核中的namespace,chroot、cgroup实现
Openstack底层通用技术及通用组件_第6张图片

五 qemu
1 可以在一种架构(如PC机)下运行另一种架构(ARM)下的操作系统和程序。
2 X86架构,支持半虚拟化技术。
3 能让多个虚拟机使用同一镜像,并让每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器)。

六 Kvm
1 KVM是开源软件,全称kernel-based virtual machine(基于内核的虚拟机)。
2 是X86架构且支持硬件虚拟化技术(如Intel VT和AMD-V)的Linux全虚拟化解决方案。
3 KVM还需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。
4 KVM能让多个虚拟机使用同一镜像,并让每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器)。
5 在主流的Linux内核,如2.6.20以上的内核均已包含了KVM。

七 hypervisor软件比较
Openstack底层通用技术及通用组件_第7张图片

八 libvirt
Openstack底层通用技术及通用组件_第8张图片
1 libvirt是一套免费、开源的支持Linux下主流虚拟化管理程序的C函数库,其旨在为包含KVM在内的各种虚拟化管理程序提供一套方便、可靠的编程接口。
2 当前主流Linux平台上默认的虚拟化管理工具virt-manager(图形化),virtsh(命令行模式)均基于libvirt开发而成。
3 Libervirt关键名词解释
节点(Node):一个物理机器,上面可能运行着多个虚拟客户机。Hypervisor和Domain都运行在Node之上。
域(Domain):是在Hypervisor上运行的一个客户操作系统实例。域也被称为实例(instance,如亚马逊的AWS云计算服务中客户机被称为实例)、客户机操作系统(guest OS),虚拟机(virtual machine),它们都是指同一个概念。

九 OSI七层模型
Openstack底层通用技术及通用组件_第9张图片

十 软件定义网络(SDN)
Openstack底层通用技术及通用组件_第10张图片
1 SDN定义
将网络的控制平面与数据转发平面进行分离,从而通过集中的控制器中软件平台去实现控制底层硬件,实现对网络资源灵活的按需调配。
2 SDN架构
应用层:包括各种不同的业务和应用
控制层:主要负责处理数据平面资源的编排,维护网络拓扑、状态信息等。
基础设施层:负责基于流表的数据处理、转发和状态收集。

十一 Open vSwitch
Openstack底层通用技术及通用组件_第11张图片
1 Open vSwitch
简称OVS。常用在虚拟化平台,为虚拟机提供二层交换功能。支持Xen/XenServer,KVM,和VirtualBox多种虚拟化技术。
支持openflow协议。可以使用任何支持openFlow协议的控制器对OVS进行远程管理控制。
2 Open vSwitch相关概念
Bridge:Bridge代表一个以太网交换机(Switch),一个主机中可以创建一个或者多个Bridge设备。
Port:端口与物理交换机的端口概念类似,每个Port都属于Bridge。
Interface:连接到Port的网络接口设备。例如网卡。
Controller:OpenFlow控制器。
Datapath:负责执行数据交换,也就是把从接收端口收到的数据包在流表中进行匹配,并执行匹配到的动作。
Flow table:每个datapath都和一个“flow table”关联,当datapach接收到数据之后,OVS会在flow table中查找可以匹配的flow,执行相应的操作,例如转发数据到另外的端口。
3 Open vSwitch架构
Openstack底层通用技术及通用组件_第12张图片
4 Open vSwitch常用组件及操作
ovs-dpctl:命令行工具,用来配置交换机内核模块,可以控制转发规则。
ovs-dpctl dump-flows br0 //查看指定bridge上的datapath信息
ovs-vsctl:主要是获取或者更改ovs-vswitchd的配置信息,此工具操作的时候会更新ovsdb-server中的数据库。
ovs-vsctl add-br br0 //添加网桥
ovs-vsctl list-br //列出所有网桥
ovs-vsctl set-controller ovs-switch tcp:5.77.54.76:6633 //指定controller控制器
ovs-ofctl:用来控制OVS作为OpenFlow交换机工作时候的流表内容
ovs-ofctl add-flow ovs-switch "table=0, dl_src=01:00:00:00:00:00/01:00:00:00:00:00,actions=drop" //屏蔽所有进入OVS的以太网广播数据包

十二 Linux Bridge
桥接
定义1:是指依据OSI网络模型的链路层的地址,对网络数据包进行转发的过程,工作在OSI的第二层。
定义2:把一台机器上的若干网络接口“连接”起来。
Linux Bridge
Linux上用来做二层协议交换的虚拟设备,与现实世界中的交换机功能相似。这个虚拟设备可以绑定若干个以太网接口设备,从而将他们桥接起来。
安装:yun install bridge-util –y
Linux Bridge配置命令:brctl(可以通过brctl help查看命令帮助)

十三 python相关说明
1 openstack基于python2.7版本开发。
2 openstacl Liberty版本才开始支持python3.0。
3 检查操作系统默认python版本命令:
Python –v
4 pip是一个安装和管理Python包的工具
需要配置国内镜像源加速安装
vi ~/.pip/pip.conf
[global]
index-url = http://pypi.douban.com/simple
常用的pip命令:
pip install Package??pip show --files Package??pip uninstall Package
安装特定版本的package,通过使用==,>=,<=,>,<来指定版本号。
例如:pip install 'Markdown<2.0'

十四 REST
REST是一种架构风格,其核心是面向资源
基于http协议
HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE
GET用来获取资源,POST用来新建资源,PUT用来更新或新建资源,DELETE用来删除资源。

十五 WSGI
Openstack底层通用技术及通用组件_第13张图片
WSGI的全称是Web Server Gateway Interface,这是一个规范,描述了web server如何与web application交互,web application如何处理请求。
WSGI包含Server,Middleware,Application。
WSGI server接受客户端请求,传递给Middleware,Middleware根据相关配置路由给WSGI application处理。

十六 Paste Deployment
1 Paste Deployment(简称PD)是一个WSGI工具包。
2 基于PD的应用配置文件,内容被分成很多段(section),PD只关心带有前缀的段,比如[app:main]或者[filer:errors]
3 一个section的内容是以键=值来表示的。#是一个注释。在段的定义中,有以下几类:
[app:main]:定义WSGI应用,main表示只有一个应用,有多个应用的话main改为应用名字。
[server:main]:定义WSGI的一个server
[composite:xxx]:表示需要将一个请求调度定向(dispatched)到1个或者多个应用上
[fliter:]:定义”过滤器“,将应用进行进一步的封装。
[DEFAULT]:定义一些默认变量的值。

十七 MariaDB
MariaDB是一个采用Maria存储引擎的MySQL分支版本
MariaDB完全兼容MySQL,包括API和客户端协议
Openstack的核心项目Keystone、Cinder、Glance、Neuteon、Nova等均使用到它来存放相关持久数据。
常见操作:
create database keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone';

十八 RabbitMQ
1 Message Queue(MQ)定义
MQ是消费-生产者模型的一个典型代表,一端往消息队列中不断写入消息,而另外一端可以读取或者订阅队列中的消息。
2 RabbitMQ是一个基于erlang开发的基于AMQP协议(Advanced Message Queue Protocl)的开源实现。通常用于应用程序之间或者程序不同组件之间通过消息来进行集成。主要名称解释:
交换器(Exchange):它是发送消息的实体。
队列(Queue):这是接受消息的实体。
绑定器(Bind):将交换器和队列连接起来,并且封装消息的路由信息。
3 Openstack中模块Cinder、Neutron、Nova等项目的内部组件之间的通信是通过AMQP协议实现,消息由RabbitMQ作为中间件转发。

你可能感兴趣的:(Openstack)