深挖OpenStack
文章平均质量分 87
熊孩子会撒野
披风疾行/仰天欲摘星
心写镜湖/鹿饮处空鸣
展开
-
深挖Openstack Nova - 实例创建(1)
nova版本:Liberty一、创建实例涉及的主要目录结构(1)/nova/api/ec2/cloud.py:云控制器,执行EC2 REST API的调用,这个调用是通过AMQP RPC分派到其他节点(2)/nova/image/s3.py:从S3获取数据,建立镜像等相关方法(3)/nova/image/glance.py:使用Glance作为后端的镜像服务的实现(4)/nova/compute/...原创 2018-06-04 23:32:16 · 1458 阅读 · 0 评论 -
深挖Openstack Cinder - CLI命令(1)
命令总览:一、卷相关1. 创建卷2. 列出所有卷3. 删除卷4. 强制删除卷5. 重命名卷6. 查看卷详情7. 重置卷状态8. 查看元数据9. 设置/取消元数据10. 更新所有元数据11. 迁移卷到新主机12. 扩展卷13. 管理卷14. 停止管理卷15. 设置卷启动状态16. 上传卷到镜像服务17. 修改卷只读模式二、卷快照1. 创建卷快照2. 删除卷快照3. 列出所有卷快照4. 查看卷快照5....原创 2018-07-01 16:59:18 · 776 阅读 · 0 评论 -
深挖Openstack Glance - 基本知识
一. glance的作用:提供虚拟机镜像的发现、注册、检索,使用RESTful接口接收外部请求 二. 版本说明glance有两个版本API v1/v2,其中v2版本(F版)较为简洁,将glance-api和glance-registry合并在一块。1. glance-api:接收REST API的请求,分析消息请求信息并分发命令(如新增、删除、更新等)2. glance-registry:负责接收...原创 2018-06-11 10:49:10 · 985 阅读 · 0 评论 -
深挖Openstack Cinder - CLI命令(2)
=========继承上篇 Cinder CLI命令(1)==========接下来就分别分析每一个CLI命令一. 卷相关 1. 创建卷cinder create[--consisgroup-id <consistencygroup-id>] [--snapshot-id <snapshot-id>] [--source-volid&...原创 2018-07-01 16:59:32 · 1927 阅读 · 0 评论 -
深挖Openstack Cinder - CLI命令(3)
=========请看上篇 Cinder CLI命令(2)==============四. 后端服务1. 列出所有后端服务cinderservice-list [--host <hostname>] [--binary <binary>]参数:参数 含义 host 根据主机名来筛选 binary 根据服务名称来筛选 2. 启用服务cinderservice-enabl...原创 2018-07-01 16:59:42 · 2909 阅读 · 0 评论 -
深挖Openstack Glance - 源码分析(1)
v1版本API功能解析1. 创建image2. 更新image3. 获取image信息(metadata和data)4. 删除image5. 获取image列表6. 获取image元数据(metadata)7. 下载image这些功能都在/glance/api/v1/images.py里,该文件主要是提供与image相关的操作。接下来将对这些功能逐个分析:1. 创建image@utils.muta...原创 2018-06-12 14:42:17 · 1094 阅读 · 0 评论 -
深挖Openstack keystone - 源码分析(1)
一. Policy策略Policy机制就是用来控制某一个User在某个Tenant中某个操作的权限。对于Keystone服务来说,policy就是一个json文件,默认是/etc/keystone/policy.json。{ "admin_required": "role:admin", "cloud_admin": "rule:admin_required and d...原创 2018-07-17 08:57:09 · 1332 阅读 · 0 评论 -
深挖Openstack Compute HA(1)
OpenStack在计算节点HA(High Available,高可用)上一直没有成熟且可靠的方案,碰巧项目中有遇到这种HA的功能需求,故尝试着做一个这种方案,以便能够实时保障用户的实例安全、持续可用,当节点发生故障时,影响情况对用户透明。 所以我们的方案是,及时监测计算节点的状态,当节点发生故障时将实例进行疏散,将原节点的实例转移到另外一个新节点上重新运行,保证实例...原创 2018-08-20 20:29:58 · 1204 阅读 · 0 评论 -
深挖Openstack Compute HA(2)
================================= 紧接着上篇 HA(1) ==================================== 接下来继续讲第二大模块:[实例疏散] 在PING模块中如果获取到计算节点中只要有任何一个网Ping不通,就会根据不同的网络状态进行组合,执行相应的疏散操作,让出故障的计算节点上的实例能够快速在另外一个计算节...原创 2018-08-20 21:00:05 · 601 阅读 · 0 评论 -
深挖Openstack Nova - evacuate疏散函数
一. 当实例所在的节点发生故障不可用时,可执行evacuate操作,在另外一个新节点rebuild该实例,实现高可用。这可以是OpenStack计算节点HA的一种实现方案。二. API调用nova.servers.evacuate(server=fm['id']), on_shared_storage=True1. on_shared_storage参数在2.14版本后废除,自动检查是否为共享存储...原创 2018-06-08 10:15:47 · 5567 阅读 · 1 评论 -
深挖Openstack Nova - Compute模块
一. nova-compute是一个非常重要的守护进程,负责创建和终止虚拟机实例,即管理着虚拟机实例的生命周期,包括instance的launch、shutdown、reboot、suspend、resume、terminate、resize、migration、snapshot等。 二. 例如对于创建虚拟机请求,nova-api接收到客户端请求后,经过nova-scheduler调度器调度,再将...原创 2018-06-07 10:25:48 · 3753 阅读 · 0 评论 -
深挖Openstack Nova - 实例创建(2)
--------------- 紧接上篇 nova实例创建(1) --------------------3. 分析show方法在2.1中的image = self.image_service.show(context, internal_id)中,由于S3是EC2的存储平台,所以调用/nova/image/s3.py的show方法def show(self, context, image_id)...原创 2018-06-04 23:38:15 · 424 阅读 · 0 评论 -
深挖Openstack Nova - 实例创建(3)
--------------- 紧接上篇 nova实例创建(2) --------------------5. 分析create方法在最开始的run_instances方法中可知创建实例是通过self.compute_api.create方法来实现的,该方法是在/nova/compute/api.py里# 建立所有类型的实例都要执行# 返回一个元组(实例或者是reservation_id的元组)...原创 2018-06-05 11:08:44 · 599 阅读 · 0 评论 -
深挖Openstack Nova - Scheduler调度策略(1)
一. Scheduler的作用就是在创建实例(instance)时,为实例选择出合适的主机(host)。这个过程分两步:过滤(Fliter)和计算权值(Weight)1. 过滤:过滤掉不符合我们的要求,或镜像要求(比如物理节点不支持64bit,物理节点不支持Vmware EXi等)的主机,留下符合过滤算法的主机集合。2. 计算权值通过指定的权值计算算法,计算在某物理节点上申请这个虚机所必须的消耗...原创 2018-06-06 09:37:11 · 4967 阅读 · 2 评论 -
深挖Openstack Glance - 源码分析(2)
3. 获取image信息原创 2018-06-13 11:41:47 · 458 阅读 · 0 评论 -
深挖Openstack Nova - 实例创建(4)
--------------- 紧接上篇 nova实例创建(3) --------------------(8)完成配额管理instances = self._provision_instances(context, instance_type, min_count, max_count, base_options, boot_meta, security_groups, ...原创 2018-06-05 15:17:50 · 437 阅读 · 0 评论 -
深挖Openstack Nova - 实例创建(5)
--------------- 紧接上篇 nova实例创建(4) --------------------继续深入_provision_instances方法:3》在循环中,实例创建时需发送状态更新通知# 为实例的初始化建立发送一个状态更新通知,表示实例状态从不存在到建立# send_update_with_states:# 在一个实例中,发送compute.instance.update来通...原创 2018-06-05 18:12:16 · 504 阅读 · 0 评论 -
深挖Openstack Nova - Scheduler调度策略(2)
当OpenStack自带的调度算法无法满足自己的业务需求时,这时我们可以增加自定义调度算法。现在有如下需求:需求1. 同一项目的多个实例分散到不同的计算节点上;需求2. 机柜感知 - 同一项目的多个实例分散到不同的机柜上;需求3. 要求实例B不放在与实例A相同的节点上。思路:需求1:(1)自带的ServerGroupAntiAffinityFilter过滤器可解决,创建实例时指定scheduler...原创 2018-06-06 09:55:55 · 1511 阅读 · 0 评论 -
深挖Openstack Cinder - 数据库表结构
”深挖数据库表结构,相当于从原子角度去剖析整个模块组成。“ --- 我说的表清单1. backups – 数据备份2. cgsnapshots – 一致性组快照3. consistencygroups – 一致性组.4. driver_initiator_data – 驱动发起人数据5. encryption – 加密6. image_volume_cache_entries7. iscsi_t...原创 2018-06-14 10:03:05 · 2204 阅读 · 0 评论 -
深挖Openstack Compute HA(3)
在测试HA方案时,会用到很多CLI命令去查看当前节点的状态和信息。其中有一些经验总结,如下:1. 相互疏散的节点是Status为enabled的computer节点2. Computer节点为disabled时,将不会有新的VM实例调度过去3. 测试关机状态 就是在物理机上关闭电源,从而所有网络都是不通的4. 当所有网络都不通时,该如何处理? 就是会选择不到任何...原创 2018-08-25 12:36:44 · 1450 阅读 · 0 评论