设为首页 收藏本站
查看: 942|回复: 0

[经验分享] 别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(1)

[复制链接]

尚未签到

发表于 2015-4-11 13:20:35 | 显示全部楼层 |阅读模式
  还是先上图吧,无图无真相
DSC0000.png
  别以为真懂Openstack!先别着急骂我,我也没有说我真懂Openstack
  我其实很想弄懂Openstack,然而从哪里下手呢?作为程序员,第一个想法当然是代码,Code Talks,什么都可以忽悠,代码是实实在在的,何况原来也深入读过Lucene, Hadoop的源代码,总以为从代码下手,背后的原理变了然了。
  说干就干,我喜欢读取代码的方式是按照情景阅读,比如在Lucene中跟踪索引的过程,跟踪搜索的过程,比如在Hadoop中,跟踪写入文件的过程,跟踪Map-Reduce的过程,于是在Openstack中决定跟踪虚拟机创建的整个过程
  好在很多先贤已经做过这方面的事情,想来也没有那么的困难。
  比较推荐一篇 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
DSC0001.png
  然而真的开始了这个旅程,却发现Openstack中涉及的知识绝非只有python代码,而必须有大量的外围知识方可理解。
  Openstack社区强大,各门各派武林高手竞相亮招,不断的贡献各种各样的插件,模块:

  • 模块繁多:除了Iaas平台的基本组件keystone, nova, glance, neutron, cinder之外,很多人都想在Openstack里面创建新的模块,如雨后春笋冒了出来,Telemetry (Ceilometer), Orchestration (Heat), Database Service (Trove), Data processing (Sahara), Bare metal (Ironic), Queue service (Marconi), Key management (Barbican), DNS Services (Designate), Deployment (TripleO),哦,太多了,研究不过来,好吧,先收缩一下雄心壮志,专注IaaS层吧,所以有关这些模块的知识点,本文没有涉及。
  • 插件繁多:除了Openstack支持的一些开源插件外,各大厂商都争先恐后的开发自己的插件,似乎害怕被Openstack社区拒之门外。我没有钱去买去试这么多厂家的设备和插件,所以只能使用开源免费默认的KVM,LVM,Openvswitch等,所以有关各种厂商的插件的知识点,本文没有涉及。
DSC0002.png
  
  好了,我已经退缩到不能再退缩的scope了,下面就进入Openstack的虚拟机创建之旅。
  我学习知识采用贪心算法,遇到在哪个步骤先遇到某个知识点就研究,可能这个知识点在其他的模块也有应用,到时候就发现这个知识点已经被遍历过了,当然也没有太过贪心,遇到过于繁复,过于生僻的,也当机立断,进行剪枝。
一、Keystone
DSC0003.png
步骤1: 任何客户端想要访问任何服务,都需要先从keystone拿到Token
  还记得原来那个短短的UUID的Token么?例如"aef56cc3d1c9192b0257fba1a420fc37"
  后来变成了一长串不知道是什么的东东:
  MIIDsAYJKoZIhvcNAQcCoIIDoTCCA50CAQExCTAHBgUrDgMCGjCCAokGCSqGSIb3DQEHAaCCAnoEggJ2ew0KICAgICJhY2Nlc3MiOiB7DQogICAgICAgICJtZXRhZGF0YSI6IHsNCiAgICAgICAgICAgIC4uLi5tZXRhZGF0YSBnb2VzIGhlcmUuLi4uDQogICAgICAgIH0sDQogICAgICAgICJzZXJ2aWNlQ2F0YWxvZyI6IFsNCiAgICAgICAgICAgIC4uLi5lbmRwb2ludHMgZ29lcyBoZXJlLi4uLg0KICAgICAgICBdLA0KICAgICAgICAidG9rZW4iOiB7DQogICAgICAgICAgICAiZXhwaXJlcyI6ICIyMDEzLTA1LTI2VDA4OjUyOjUzWiIsDQogICAgICAgICAgICAiaWQiOiAicGxhY2Vob2xkZXIiLA0KICAgICAgICAgICAgImlzc3VlZF9hdCI6ICIyMDEzLTA1LTI1VDE4OjU5OjMzLjg0MTgxMSIsDQogICAgICAgICAgICAidGVuYW50Ijogew0KICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6IG51bGwsDQogICAgICAgICAgICAgICAgImVuYWJsZWQiOiB0cnVlLA0KICAgICAgICAgICAgICAgICJpZCI6ICI5MjVjMjNlYWZlMWI0NzYzOTMzZTA4YTRjNDE0M2YwOCIsDQogICAgICAgICAgICAgICAgIm5hbWUiOiAidXNlciINCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAgICAgInVzZXIiOiB7DQogICAgICAgICAgICAuLi4udXNlcmRhdGEgZ29lcyBoZXJlLi4uLg0KICAgICAgICB9DQogICAgfQ0KfQ0KMYH/MIH8AgEBMFwwVzELMAkGA1UEBhMCVVMxDjAMBgNVBAgTBVVuc2V0MQ4wDAYDVQQHEwVVbnNldDEOMAwGA1UEChMFVW5zZXQxGDAWBgNVBAMTD3d3dy5leGFtcGxlLmNvbQIBATAHBgUrDgMCGjANBgkqhkiG9w0BAQEFAASBgEh2P5cHMwelQyzB4dZ0FAjtp5ep4Id1RRs7oiD1lYrkahJwfuakBK7OGTwx26C+0IPPAGLEnin9Bx5Vm4cst/0+COTEh6qZfJFCLUDj5b4EF7r0iosFscpnfCuc8jGMobyfApz/dZqJnsk4lt1ahlNTpXQeVFxNK/ydKL+tzEjg
  这里面是什么,不可能是一般的乱码吧。
  于是看到了这篇文章
  Understanding OpenStack Authentication: Keystone PKI (https://www.mirantis.com/blog/understanding-openstack-authentication-keystone-pki/)
  [转]Understanding OpenStack Authentication: Keystone PKI
  才了解了这个过程
DSC0004.png
  看懂这个图,如果没有点信息安全课程的底子,还真不行。什么各种CA, Certificate, Key,直接就晕了。
  于是看了《Principles of Information Security,4ed》的第八章Cryptography,以及《Information Security Principle and Practice》才有所了悟。
  下面这篇博客也对相关的概念作了形象的描述
  数字证书原理(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
DSC0005.png
  
  要使用SSL,两个必备的工具Openssl和certtool,其中Openssl比较常用,而certtool是用于配置libvirt远程连接的官方推荐的工具。
  对于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的一大工作
  在V2中,结构比较简单,用一个三角形就可以明白

  Keystone V3中的概念就比较多了,也相对复杂,文档较少,比较推荐下面的文章。
  http://www.florentflament.com/blog/setting-keystone-v3-domains.html
  [转]Setting Keystone v3 domains
  我也画了一幅图,来帮助理解这个过程。
  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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-55981-1-1.html 上篇帖子: 用命令测试安装好的OpenStack环境 下篇帖子: OpenStack调研:OpenStack是什么、版本演变、组件关系(Havana)、同类产品及个人感想
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表