比较好的参考资料:
https://github.com/ntk148v/awesome-openstack
http://blog.csdn.net/u010305706/article/details/52206175
https://www.baidu.com/link?url=dk_kov2ZKWZZk5i50WwdUfI_aJYD6UiwHTJmb8QbO9OKBOeXVg8aOxRx4ZdHlELC6zaSi4_6NjSOVo6YIxTRWa&wd=&eqid=89f2abc5000147fb000000025a12bf9b
1. 如何学习OpenStack
参考:如何学习OpenStack
有一句说的很对:
如何学习和了解OpenStack,其实和你如何了解一个开源软件,其实差不多。国内由于很多原因,很多人都喜欢看中文的资料去了解和熟悉一个开源软件,这样其实效率是很低的。
【一万小时法则】一项研究显示,在任何领域取得成功的关键跟天分无关,只是练习的问题,需要练习1万个小时——10年内,每周练习20小时,大概每天3小时。中国有句古话“十年磨一剑”,其道理可谓异曲同工,没有几个会拒绝成功。但站立在金字塔顶的成功者,往往是少数人。
OpenStack资料汇总
-
Openstack的项目管理的网站
可以看到Opentstack项目的组件的Blueprints和bugs列表,阅读这些你就基本可以了解到Openstack过去,现在和未来. - 查看各公司贡献,模块开发数据分析
- IRC会议
- 如何提交代码中文资料和视频
2. OpenStack简介及创建虚机原理
参考:openstack创建虚机
组件逻辑关系图:
OpenStack新建云主机流程图:
(1)界面或命令行通过RESTful API向keystone获取认证信息。
(2)keystone通过用户请求认证信息,并生成auth-token返回给对应的认证请求。
(3)界面或命令行通过RESTful API向nova-api发送一个boot instance的请求(携带auth-token)。
(4)nova-api接受请求后向keystone发送认证请求,查看token是否为有效用户和token。
(5)keystone验证token是否有效,如有效则返回有效的认证和对应的角色(注:有些操作需要有角色权限才能操作)。
(6)通过认证后nova-api和数据库通讯。
(7)初始化新建虚拟机的数据库记录。
(8)nova-api通过rpc.call向nova-scheduler请求是否有创建虚拟机的资源(Host ID)。
(9)nova-scheduler进程侦听消息队列,获取nova-api的请求。
(10)nova-scheduler通过查询nova数据库中计算资源的情况,并通过调度算法计算符合虚拟机创建需要的主机。
(11)对于有符合虚拟机创建的主机,nova-scheduler更新数据库中虚拟机对应的物理主机信息。
(12)nova-scheduler通过rpc.cast向nova-compute发送对应的创建虚拟机请求的消息。
(13)nova-compute会从对应的消息队列中获取创建虚拟机请求的消息。
(14)nova-compute通过rpc.call向nova-conductor请求获取虚拟机消息。(Flavor)
(15)nova-conductor从消息队队列中拿到nova-compute请求消息。
(16)nova-conductor根据消息查询虚拟机对应的信息。
(17)nova-conductor从数据库中获得虚拟机对应信息。
(18)nova-conductor把虚拟机信息通过消息的方式发送到消息队列中。
(19)nova-compute从对应的消息队列中获取虚拟机信息消息。
(20)nova-compute通过keystone的RESTfull API拿到认证的token,并通过HTTP请求glance-api获取创建虚拟机所需要镜像。
(21)glance-api向keystone认证token是否有效,并返回验证结果。
(22)token验证通过,nova-compute获得虚拟机镜像信息(URL)。
(23)nova-compute通过keystone的RESTfull API拿到认证k的token,并通过HTTP请求neutron-server获取创建虚拟机所需要的网络信息。
(24)neutron-server向keystone认证token是否有效,并返回验证结果。
(25)token验证通过,nova-compute获得虚拟机网络信息。
(26)nova-compute通过keystone的RESTfull API拿到认证的token,并通过HTTP请求cinder-api获取创建虚拟机所需要的持久化存储信息。
(27)cinder-api向keystone认证token是否有效,并返回验证结果。
(28)token验证通过,nova-compute获得虚拟机持久化存储信息。
(29)nova-compute根据instance的信息调用配置的虚拟化驱动来创建虚拟机。
3. OpenStack 上传镜像
官方Centos OpenStack镜像下载地址
执行环境变量:
. /etc/openstack-control-script-config/demo-openrc
查看openstack所有镜像:
glance image-list
上传镜像:
glance image-create --name "centos6-1710" --file CentOS7.2.qcow2.tar.gz --disk-format qcow2 --container-format bare --visibility public --progress
可能出现如下错误:
原因可能是:
1)/etc/glance/glance-api.conf 或/etc/glance/glance-registry.conf配置中未设置如下设置
[paste_deploy]
flavor = keystone
2)glance配置时,demo这个用户未添加权限,切换为admin用户就可以: 执行环境变量:
. /etc/openstack-control-script-config/admin-openrc
再上传镜像
可以看到镜像上传成功了:
4. OpenStack 实例类型查看和添加
nano 查看当前已有实例类型配置
openstack flavor list
示例:
openstack添加实例类型
openstack flavor create --id 1 --vcpus 2 --ram 4096 --disk 100 m2.nano
执行结果:
也可以在horizon中创建:
5. OpenStack neutron使用
参考:http://www.cnblogs.com/popsuper1982/p/3800233.html
https://www.csdn.net/article/2015-06-18/2825000
openstack查看当前网络
openstack network list
执行结果:
openstack创建网络
openstack network create 【network name】
执行结果:
创建虚拟网络(网络名为vmnet):
openstack network create --share --external --provider-physical-network provider --provider-network-type flat vmnet
创建子网(bds-net):
openstack bds-net create --networkprovider --allocation-poolstart=10.1.1.10,end=10.1.1.240 --dns-nameserver114.114.114.114 --subnet-range10.1.1.0/24 provider
openstack为一个网络创建一个子网网络
openstack subnet create --network provider
--allocation-pool start=${START_IP_ADDRESS},end=${END_IP_ADDRESS}
--dns-nameserver ${DNS_RESOLVER} --gateway ${PROVIDER_NETWORK_GATEWAY}
--subnet-range ${PROVIDER_NETWORK_CIDR} provider
执行结果: