看了许多天的文档,现在把我理解的记录下来,以便日后可以翻查。

Essex架构:



step1:通过UI/CLI请求VM配置
用户指定VM的参数,如name,flavor,keys等.

step2:验证授权,Horizon〈----〉keystone endpoint
1.Horizon 放松http请求给keystone,认证信息存放在http头部;
2.Keystone通过http发送临时的令牌(token)给Horizon;

step3:发送API请求给nova-api,Horizon〈----〉nova-api
Horizon发送POST请求给nova-api(附带keystone给的令牌);

step4:验证API令牌,nova-api〈---- keystone endpoint
1.nova-api发送http请求,向keystone验证令牌;
2.keystone验证API的令牌,然后返回带有接受/拒绝信息的http响应;

step5:执行API请求,nova-api〈----〉nova-db
nova-api分析收到的请求,并从nova-db中提取数据验证该请求。如果请求有效,它把关于VM的初始DB条目保存到数据库中;

step6:发送运行请求到队列,nova-api ----〉queue
nova-api将rpc.call放入调度器中,它发布一个带有VM信息的短消息给queue。

step7:队列发送运行请求到调度器,queue ----〉scheduler
调度器从消息队列中接受该短消息

step8:准备运行VM,schduler〈----〉nova-db
调度器从数据库中提取整个云架构的信息,然后根据这个信息,选择最合适的主机

step9:在计算节点中启动VM,schduler ----〉queue ----〉nova-compute
调度器发送消息给nova-compute(根据主机ID),然后触发VM运行

step10:通过hypervisor启动VM,nova-db ----〉nova-compute ----〉hypervisor
nova-compute从数据库中提取VM的相关信息,并根据这些信息,向hypervisor发出一条命令,授权hypervisor启动VM

step11:向glance请求VM镜像,hypervisor ----〉glance-api
hypervior通过镜像的id向glance请求相应的VM镜像

step12:从glance返回请求的镜像的URI,glance-api ----〉hypervisor
如果找到对应id的镜像,则返回该镜像的URI

step13:从swift下载镜像,proxy server的object store ----〉hypervisor
hypervisor通过URI下载镜像,下载完后,hypervisor启动该镜像


step14:配置网络,nova-compute ----〉queue ----〉nova-network
nova-compute通过rpc.call向nova-network请求网络信息

step15:指定和连接网络,nova-network ----〉nova-db
nova-network将网络信息和VM信息更新到数据库中

step16:请求附加卷,nova-compute ----〉queue ----〉nova-volume

step17:添加附加卷,nova-volume〈----〉nova-db
nova-volume将Share Strorage的附加卷更新到nova-db中