网上大侠们分享的资料都非常好,就看你会不会用,如何使用,再次对本文所引用资料的作者表示感谢,如有侵权,请告知。

大致过程

虚拟机创建的50个步骤以及100个知识点(仅作为个人笔记使用)_Request


虚拟机创建的50个步骤以及100个知识点(仅作为个人笔记使用)_Request_02


虚拟机创建的50个步骤以及100个知识点(仅作为个人笔记使用)_知识点_03


虚拟机创建的50个步骤以及100个知识点(仅作为个人笔记使用)_虚拟机_04

虚拟机创建的50个步骤以及100个知识点(仅作为个人笔记使用)_知识点_05

虚拟机创建的50个步骤以及100个知识点(仅作为个人笔记使用)_虚拟机_06

虚拟机创建的50个步骤以及100个知识点(仅作为个人笔记使用)_Request_07

虚拟机创建的50个步骤以及100个知识点(仅作为个人笔记使用)_Request_08

虚拟机创建的50个步骤以及100个知识点(仅作为个人笔记使用)_参考资料_09



参考资料

Icehouse 创建Instance代码分析

http://www.cnblogs.com/popsuper1982/p/3800426.html


http://www.cnblogs.com/popsuper1982/p/3927390.html

http://www.cnblogs.com/popsuper1982/p/3930350.html

http://www.cnblogs.com/popsuper1982/p/3931783.html

http://www.cnblogs.com/popsuper1982/p/3932330.html

http://www.cnblogs.com/popsuper1982/p/3932821.html


Request Flow for Provisioning Instance in Openstack(http://ilearnstack.com/2013/04/26/request-flow-for-provisioning-instance-in-openstack/),如果被墙挡住了,我转到了[转]Request Flow for Provisioning Instance in Openstack

Understanding OpenStack Authentication: Keystone PKI (https://www.mirantis.com/blog/understanding-openstack-authentication-keystone-pki/)

[转]Understanding OpenStack Authentication: Keystone PKI


数字证书原理(http://blog.sina.com.cn/s/blog_44ee37cd01016r1h.html)

这些概念都是了解SSL和https的必须的,而且我们在部署Openstack的时候,所有的服务最好也部署成HTTPS的。

下面这两篇文章会帮你更好的了解SSL

http://httpd.apache.org/docs/2.2/ssl/ssl_intro.html

http://www.codeproject.com/Articles/326574/An-Introduction-to-Mutual-SSL-Authentication

对于Openssl,推荐下面的链接

http://pages.cs.wisc.edu/~zmiller/ca-howto/如果被墙屏蔽了可以访问How To Setup a CA

Openssl的证书操作

对于certtool,推荐libvirt的官方文档,讲的非常的形象具体

http://wiki.libvirt.org/page/TLSSetup

keystone除了authentication的功能,还有authorization。

对于访问控制Access Control,发现有多种http://en.wikipedia.org/wiki/Access_control,而Openstack采用的是Role Based Access Control RBAC。

其中在V2中采用的每个Service下面的policy.json文件,访问控制是每个Service自己决策的。后来在V3中,除了policy.json文件,还可以将Policy在数据库中创建,实现了keystone的统一管理。

推荐下面的文章

Customizing OpenStack RBAC policies

[转] Customizing OpenStack RBAC policies

Mandatory Access Control (MAC)在Openstack中也有应用,就是对Libvirt对Host文件的访问控制AppArmor。当你使用virsh命令进行操作的时候,如果发现自己是root,但是还没有权限,八成就是它的原因了。

推荐http://ubuntuforums.org/showthread.php?t=1008906

[转] Introduction to AppArmor

Keystone V3中的概念就比较多了,也相对复杂,文档较少,比较推荐下面的文章。

http://www.florentflament.com/blog/setting-keystone-v3-domains.html

[转]Setting Keystone v3 domains

如果有人问我,看懂各个Service代码的钥匙是什么,我必须说,是paste文件,看懂了这个文件,就很容易找到对应的入口代码。对于Paste,我推荐

WSGI and Paste

http://pythonpaste.org/deploy/

http://indico.cern.ch/event/44/session/9/#all其中Developing Applications with the Web Server Gateway Interface


nova-api接收请求,也不是随便怎么来都接收的,而是需要设定rate limits,默认的实现是在ratelimit的middleware里面实现的。然而有时候,我们希望实现distributed rate-limiting,从而Turnstile是一个不错的选择。

https://github.com/klmitch/turnstile
http://pypi.python.org/pypi/turnstile

openstack nova 基础知识——Quota(配额管理)

http://www.sebastien-han.fr/blog/2012/09/19/openstack-play-with-quota/

有关nova的database schema参考下面的文章

http://www.prestonlee.com/2012/05/03/openstack-nova-essex-mysql-database-schema-diagram-and-sql/

MySQL的HA有下面几种方式:

http://dev.mysql.com/doc/mysql-ha-scalability/en/index.html

要想系统的学习Mysql replication,推荐下面的这本书

《MySQL High Availability Tools for Building Robust Data Centers》

参考下面的两篇文章

http://www.sebastien-han.fr/blog/2012/04/08/mysql-galera-cluster-with-haproxy/

http://www.sebastien-han.fr/blog/2012/04/01/mysql-multi-master-replication-with-galera/

要弄懂Pacemaker,推荐读《SUSE high availability guide》

https://www.suse.com/documentation/sle_ha/singlehtml/book_sleha/book_sleha.html

本人做了一些笔记和实验,请参考

High Availability手册(1): 环境

High Availability手册(2): 架构

High Availability手册(3): 配置

有关nova-conductor的文章

http://cloudystuffhappens.blogspot.com/2013/04/understanding-nova-conductor-in.html

在Openstack中,RPC的发送是通过RabbitMQ

RabbitMQ可以通过Pacemaker进行HA,当然也可以搭建自己的RabbitMQ Cluster

学习RabbitMQ当然首推《RabbitMQ in Action》

本人也做了一些笔记

RabbitMQ in Action (1): Understanding messaging

RabbitMQ in Action (2): Running and administering Rabbit

RabbitMQ in Action(5): Clustering and dealing with failure

还没完全读完,敬请谅解

当然Openstack中对于RabbitMQ的使用,一篇很好的文章是

NOVA源码分析——NOVA中的RabbitMQ解析

本人也对RPC的调用过程进行了代码分析

Openstack中RabbitMQ RPC代码分析 

request_spec中的第一个信息就是p_w_picpath的properties信息,尤其是当你想支持多种Hypervisor的时候,Xen的p_w_picpath, KVM的p_w_picpath, Hyper-V的p_w_picpath各不相同,如何保证p_w_picpath跑在正确的Hypervisor上?在p_w_picpath里面这种hypervisor_type property就很必要。

请阅读下面的文章http://www.cloudbase.it/filtering-glance-p_w_picpaths-for-hyper-v/

在Openstack文档中,这个例子很好的展示了host aggregates和Flavor extra_specs的配合使用

http://docs.openstack.org/trunk/config-reference/content/section_compute-scheduler.html

neutron创建network执行的那些命令

http://www.cnblogs.com/popsuper1982/p/3849822.html

多个router和多个network

http://www.cnblogs.com/popsuper1982/p/3835466.html


在Openstack里面,对于KVM,应用到的Image格式主要是两种RAW和qcow2,

raw格式简单,容易转换为其他的格式。需要文件系统的支持才能支持sparse file,性能相对较高。

qcow2是动态的,相对于raw来说,有下列的好处:

  • 即便文件系统不支持sparse file,文件大小也很小

  • Copy on write

  • Snapshot

  • 压缩

  • 加密

具体的格式和特点,参考下面的文章

QEMU KVM libvirt手册(4) – p_w_picpaths

[转] The QCOW2 Image Format

创建一个p_w_picpath,有多种方法

一种方法是通过virt-install,讲hard disk设为一个p_w_picpath文件, 从CDROM启动一个虚拟机,按照正常的安装流程来,最后操作系统安装好,p_w_picpath再经过qemu-img进行处理,压缩,最终形成p_w_picpath。

参考文章

QEMU KVM libvirt 手册(1) 

当然现在有了更先进的方法,就是libguestfs,它可以轻松基于已有版本的p_w_picpath创建一个你想要的p_w_picpath,就是virt-builder

参考文章

libguestfs手册(3): virt命令 

当然一个可以在Openstack里面使用的p_w_picpath,绝不是仅仅安装一个操作系统那么简单。

OpenStack Virtual Machine Image Guide中详细写了一个Linux Image的各种需求

说完了创建p_w_picpath,还需要了解修改p_w_picpath,我们的文件注入,就是对p_w_picpath的修改。

有三种方式:通过mount一个loop device,通过qemu的network block device,或者最先进的,通过libguestfs

总结成了一篇文章

如何修改p_w_picpath文件 

对于qemu-nbd,有文章

QEMU KVM Libvirt手册(6) – Network Block Device 

对于libguestfs,我也写了一些笔记

libguestfs手册(1): 架构

libguestfs手册(2):guestfish command

libguestfs手册(3): virt命令

对于文件注入,有文章

nova file injection 

对于如何打snapshot,分多种,有文章

QEMU KVM Libvirt手册(5) – snapshots 

Snapshot Types

External Snapshot management

[转] External(and Live) snapshots with libvirt

[转] Snapshotting with libvirt for qcow2 p_w_picpaths

QEMU KVM libvirt 手册(3) - Storage Media

QEMU KVM Libvirt手册(7): 硬件虚拟化

QEMU KVM Libvirt手册(8): 半虚拟化设备virtio

machine参数是总线Architecture,通过qemu-system-x86_64 --machine ?查看,default就是参数中的值。

accel=kvm说明虚拟化使用的是kvm

cpu表示处理器的参数以及处理器的一些flags,可以使用命令qemu-system-x86_64 --cpu ?查看

smp是对称多处理器,

-smp 1,sockets=1,cores=1,threads=1

qemu仿真了一个具有1个vcpu,一个socket,一个core,一个threads的处理器。

socket, core, threads是什么概念呢

(1)socket就是主板上插cpu的槽的数目,也即管理员说的”路“
(2)core就是我们平时说的”核“,即双核,4核等
(3)thread就是每个core的硬件线程数,即超线程

在Openstack中,neutron的很多网络功能都是由openvswitch实现的,因而本人专门研究了一下openvswitch,参考下面的文章

OpenFlow学习笔记

Openvswitch手册(1)

Openvswitch手册(2)

Openvswitch手册(3)

Openvswitch手册(4)

[转]Comparing sFlow and NetFlow in a vSwitch

[转]Rapidly detecting large flows, sFlow vs. NetFlow/IPFIX

Openvswitch手册(5)

Openvswitch手册(6)

Openvswitch手册(7)

Openvswitch手册(8)

Openvswitch手册(9)

Openvswtich 学习笔记

对于网络的管理,有很多好的工具可以使用

[转] iptables

HTB Linux queuing discipline manual - user guide笔记

iproute2学习笔记

tcpdump

[转]Linux操作系统tcpdump抓包分析详解

[转] IPTables for KVM Host

[转] Firewall and network filtering in libvirt

[转] XEN, KVM, Libvirt and IPTables

http://tldp.org/HOWTO/Traffic-Control-HOWTO/

http://rlworkman.net/howtos/iptables/iptables-tutorial.html