zoukankan      html  css  js  c++  java
  • Openstack新建云主机的流程

    前言

    前天晚上没睡觉,所以昨天睡得很早,导致今天4点就起来了

    时间是人最宝贵的财富,于是我打消了钻在被子里刷剧的念头,爬起来整理一下在Openstack中新建一个云主机的流程。

    Openstack可以让你在登录dashboard之后只需要点一下”创建主机“的按钮,选择相应配置,在几十秒内就可以创建好一台云主机供你使用,这么牛逼的事情是怎么做到的呢?

    别着急,听我跟你慢慢道来

    新建一个云主机流程总览图

     

    图中流程-1

    首先你访问dashboard之后,显示的是一个登录页面,人家horizon告诉你:想用Openstack新建云主机?那你先把你的账号密码交给我,等我找我大哥keystone确认你的身份之后才能放你进去

     

    原来我还一直以为这里登录的时候只是一个简单的django框架使用pymysql直接查询数据库,而实际上这里的表单信息是提交到了keystone,然后通过keystone查询数据库进行验证的

    图中流程-2

    keystone接收到前端表单传过来的域、用户、密码信息以后,查询了数据库,确认身份后将一个token(就像是办了身份证~~~)返回给该用户,让这个用户以后再进行操作的时候不需要再提供账号密码,而是拿出token来

    图中流程-3

    horizon拿到token之后,实际上这里在web页面上的显示就是登录成功了,接着找到创建云主机的按钮并点击

    填写云主机相关配置信息

    填了这么一大堆配置信息,点击启动实例之后,horizon就带着三样东西去找nova-api了:

      1.创建云主机的请求

           2.云主机相关配置信息

      3.刚刚keystone返回给的token

    图中流程-4

    你horizon来找我nova-api办事可我也不认识你啊,这样,你把身份证给我,我去找我大哥keystone问问(这些组件都有一个共同的大哥keystone,但他们自己之间却不认识)。然后他就带着horizon的token去找keystone

    图中流程-5

    keystone一看nova-api带来的token,这不就是自己刚发的那个么,但程序可没这么聪明,它还得乖乖查一次数据库,然后告诉nova-pai,这兄弟信得过,你就照它说的做吧

    图中流程-6

    nova-api从大哥那回来,接收了horizon提供的两样东西,一是云主机配置信息,二是创建请求,这nova-api手底下也有一帮小兄弟,这帮人之间沟通可不太方便都得通过一块小黑板(mq消息队列),把自己的需求写在小黑板上,能做的了这事的人自然就去做了。但配置信息现在还不能写在小黑板上,得找到确定去干活的人之后才行啊,所以nova-api就把配置信息放到数据库里

    图中流程-7

    数据库把配置信息收好之后,对nova-api说了声,我放好了

    图中流程-8

    放好配置信息后nova-api就在小黑板上写“现在要创建一台云主机,配置信息我已经放到数据库了,小s你给安排安排吧”

    图中流程-9

    这个小s就是nova-schedular,他就像是nova-api的秘书,nova-api的有事都是通过它交代给其他人的,这一步就是他从小黑板上看到了nova-api的信息

    图中流程-10

    小s现在知道了要创建云主机,但它要看一看云主机都要什么配置,才好决定该把这事交给谁去做(这里是指多个nova-compute的情况,各个计算节点的资源使用情况都在小s这里),所以他让数据库把云主机配置信息发给他看看

    图中流程-11

    数据库收到请求之后,把云主机配置信息发给小s

    图中流程-12

    小s拿到配置信息后,使用调度算法决定了要让nova-compute去干这个事,就在小黑板上写“nova-compute你给创建个云主机,配置都在数据库里了”

    图中流程-13

    nova-compute看到小黑板上的东西之后,本应该直接去数据库拿取配置信息,但因为nova-compute的特殊身份,nova-compute所在计算节点上全是云主机,万一有一台云主机被黑客入侵从而控制计算节点,直接拖库是很危险的。所以不能让nova-compute知道数据库在什么地方

    图中流程-14

    nova-compute没办法去数据库取东西难道就不工作了吗?那可不行啊,他不知道去哪取,但他哥们知道啊,于是他在小黑板上写“nova-conductor,你帮我去数据库取一下配置信息”

    图中流程-15

    nova-conductor从小黑板上看到了nova-compute的请求

    图中流程-16

    nova-conductor告诉数据库我要查看某某云主机的配置信息

    图中流程-17

    数据库把云主机配置信息发送给nova-conductor

    图中流程-18

    nova-conductor把配置信息写在小黑板上

    图中流程-19

    nova-compute从小黑板上读取云主机的配置信息

    图中流程-20

    nova-compute拿到了云主机配置信息一看,人家可是专业的,立马就知道该怎么做了,先去找glance-api拿镜像吧,刚才讲了那么多,可都是在nova组件内部的,这次去找别的组件可不是写在小黑板上了,它得带着自己的身份证去,告诉glance-api,我要xxx镜像

    图中流程-21

    glance-api看nova-compute过来,他可不认识nova-compute,让nova-compute拿出身份证,拿着人家身份证找到自己大哥keystone看看这人靠不靠谱,keystone一看,没问题,按他说的做吧(在nova验证horizon被当做两步,这里化做一步,是为了简化重复的流程)

    图中流程-22

    glance-api把镜像资源信息返回给nova-compute(这里主要说创建云主机的过程,除nova外其他组件内部先不提)

    图中流程-23

    接着nova-compute找到neutron-server(图里画错了,因为是偷别人的图,自己的图画了半天画不好。。。),告诉他我要xxx网络资源

    图中流程-24

    neutron-server也不认识他,拿着他的身份证找keystone确认了一下身份

    图中流程-25

    nuetron-server把网络资源信息返回给nova-compute

    图中流程-26

    nova-compute找到cinder-api要存储资源,云主机得有硬盘啊,得存东西啊(同样,这里图中也有错误)

    图中流程-27

    cinder-api也不认识他,拿着他的身份证找keystone确认了一下身份

    图中流程-28

    cinder-api把存储资源信息返回给nova-compute

    图中流程-29

    nova-compute拿到了所有资源之后,他其实也只是个收集信息的,他把工作全都交给了真正创建虚拟机的Hypervisor(kvm,zen等虚拟化技术)

    到此为止,你已经拥有了一台云主机了,流程看似复杂实际上在几十秒就完成了

  • 相关阅读:
    Delphi XE4 FireMonkey 开发 IOS APP 发布到 AppStore 最后一步.
    Native iOS Control Delphi XE4
    Delphi XE4 iAD Framework 支持.
    using IOS API with Delphi XE4
    GoF23种设计模式之行为型模式之命令模式
    Android青翼蝠王之ContentProvider
    Android白眉鹰王之BroadcastReceiver
    Android倚天剑之Notification之亮剑IOS
    Android紫衫龙王之Activity
    GoF23种设计模式之行为型模式之访问者模式
  • 原文地址:https://www.cnblogs.com/awmpy/p/6637869.html
Copyright © 2011-2022 走看看