一.OpenStack的部署

学习任务:通过devstack自动化部署了解openstack的架构,并且最后部署一个openstack实验环境

1.俩种部署方式

开发环境如何虚拟化 虚拟化软件开源_数据库


自动化部署的单步执行就是手动部署

手动部署过程中命令的脚本自动化,自动化就是自动部署

2.devstack自动化部署原理

开发环境如何虚拟化 虚拟化软件开源_git_02


自动化原理:

抓取源代码,自动执行安装脚本,自动生成配置文件,自动解决依赖关系。

3.下载

devstack通过git来实现代码的版本管理

ubuntu下git安装:sudo apt-get install git , git通过http和ssh两种协议实现传输

通过git clone https://github.com/openstack-dev/devstack.git 将devstack的源代码下载到本机

下载好源代码后,分析其结构:

开发环境如何虚拟化 虚拟化软件开源_git_03

stack.sh 安装自动化部署的入口,执行这个文件开始部署

unstack.sh 卸载部署好的服务,清理部署好的环境,有利于下一次部署

localrc 配置文件,传入stack.sh的参数,包括nova部署在哪个节点,用户名和密码啥的

lib 每个服务的自动化安装脚本,每个openstack服务对应一个文件

openrc 环境变量文件,在执行openstack命令时要导入一些环境变量,比如命令的用户名或密码

开发环境如何虚拟化 虚拟化软件开源_git_04


这个图lib文件下的所有文件,对应每一个服务的自动化shell脚本

database/databases 对应数据库服务自动化安装脚本,默认采用mysql

nove_plugins 针对每一种虚拟化技术的对应脚本,像KVM就是hypervisor-libvirt

开发环境如何虚拟化 虚拟化软件开源_自动化部署_05


neutron 网络通用部分的自动化

neutron_plugins 插件自动化

neutron_thirdparyt 第三方公司开发的驱动自动化,

开发环境如何虚拟化 虚拟化软件开源_数据库_06


这是neutron的全部插件

cinder 块存储通用部分的自动化

cinder_plugins 块存储插件自动化

其余不常见的

heat(应用的自动化部署AWScloudformation)

ceilometer (监控和计费)

sahara(BigData-as-a-Service> BDaaS,将hadoop部 署在openstack的虛拟机上)将大数据和云计算结合的

ironic (PXE+IPMI, 物理节点的自动化部署)主机操作系统的自动化

trove(Database-as-a-service,将数据库部署在openstack的虚拟机上)

tempest(openstack单元测试框架)

opendaylight(开源的sdn控制器)

ldap(轻量型目录访问协议,与keystone整合,实现多级用户的鉴权)

结论:每一个服务对应着一些自动化脚本,由这些脚本实现服务的自动化

4. devstack的执行方式和原理

**执行原理:**stack.sh判断是否存在localrc文件

是,进入配置模式,通过读取localrc文件完成,localrc文件记录了刚才交互模式里面需要用户输入参数的值

开发环境如何虚拟化 虚拟化软件开源_数据库_07


开发环境如何虚拟化 虚拟化软件开源_git_08


很多配置都是使用类似localrc的模板,想用那个服务,就ENABLED_SERVICES=服务中具体里项目

开发环境如何虚拟化 虚拟化软件开源_自动化部署_09


开发环境如何虚拟化 虚拟化软件开源_数据库_10


开发环境如何虚拟化 虚拟化软件开源_git_11


目前使用最多的是VXLAN模式,也是一个发展趋势否,进入交互模式,通过与用户的交互输入stack.sh需要的参数,包括数据库密码,Rabbit MQ的密码,Service TOKEN的密码

开发环境如何虚拟化 虚拟化软件开源_开发环境如何虚拟化_12