几个讨论题
仅供参考,如有雷同,纯属呵(qiao)呵(he)
1. 讨论:如何回馈 OpenStack 社区
张三:
- 积极关注并回馈社区,贡献代码,争取成为 committer;
- 积极将研发使用中遇到的问题及代码 ,回馈到社区;
- 将 issue、idea、丰富的 feature 提交到 bluePrint,提交到社区;
- 利用自己的一切资源致力于扩大中国 IT 力量在国际的影响力!(评:看到这句好欣慰!我想如果有更多这样的同学在,中国的 IT 前途很有希望);
李四:
- 关注各种社区并加入到符合自己实际状况的社区中,认真学习前辈的经验,在实际中发现和探索问题,并在社区中讨论自己解决不了的问题,以及帮助他人解答问题;
王五:
- 积极参加到社区的讨论中来,将一些发现的问题提交到 Issue;
- 如果有新的 idea,更丰富的 Feature 想法,可以写成 BluePrint 提交到社区;
赵六:
- 可以提交一些意见和建议(blueprint),自己在初学时遇到的一些问题(issue)
- 继续学习,争取早日进入社区,能够发现问题思考问题反馈问题
王二麻子:
- 能,现在水平有限,应该先从写文档和提交 issue、idea、blueprint 做起,同时打好编程基础,多做项目,多看书,多总结。
2. 讨论:OpenStack 管理的资源及提供的服务
OpenStack 管理哪些资源?提供哪些服务?这些服务在公有云上有没有对应的例子?(请尽量多举例)
OpenStack 管理的资源有:计算资源、存储资源、网络资源;
提供的服务有:
- Nova 计算服务;
- Cinder 块存储服务;
- Neutron 网络服务;
- Swift 高可用分布式对象存储服务;
- GLance 镜像服务;
- Keystone 身份验证服务;
- Horizon 图形界面;
- 扩展服务:Heat、Sahara
例子:
- 虚拟机 – Nova – 对应亚马逊上的 EC2
- 虚拟块存储 – Cinder – 对应亚马逊上的 EBS
- 虚拟网络 – Neutron – 对应亚马逊上的 VPC
- 对象存储 – Swift – 对应亚马逊上的 S3
- 权限认证 – Keystone – 在 AWS 的服务是看不见的,隐藏在叫作计费系统的后端(DOS 系统的后端)
- 镜像管理 – Glance – 对应亚马逊上的 VM Import/Export
- 控制面板 – Horizon – 对应亚马逊上的 Console
3. 讨论: OpenStack 之间的通信关系
OpenStack 之间有哪些通信关系?分别应用在什么地方?
OpenStack 组件之间的通信分为四类:
- 基于 HTTP 协议
- 基于 AMQP 协议(基于消息队列协议)
- 基于数据库连接(主要是 SQL 的通信)
- Native API(基于第三方的 API)
关于应用:
- 基于 HTTP 协议进行通信。通过各项目的 API 建立的通信关系,基本上都属于这一类,这些 API 都是 RESTful Web API,最常见的就是通过 Horizon 或者说命令行接口对各组件进行操作的时候产生的这种通信,然后就是各组件通过 Keystone 对用户身份进行校验,进行验证的时候使用这种通信,还有比如说 Nova Compute 在获取镜像的时候和 Glance 之间,对 Glance API 的调用,还有比方说 Swift 数据的读写,也是通过这个 HTTP 协议的 RESTful Web API 来进行的。
- 基于高级消息队列协议。基于 AMQP 协议进行的通信,主要是每个项目内部各个组件之间的通信,比方说 Nova 的 Nova Compute 和 Scheduler 之间,然后 Cinder 的 Scheduler 和 Cinder Volume 之间。
- 基于 SQL 的通信。通过数据库连接实现通信,这些通信大多也属于各个项目内部,也不要求数据库和项目其它组件安装在同一个节点上,它也可以分开安装,还可以专门部署数据库服务器,把数据库服务放到上面,之间通过基于 SQL 的这些连接来进行通信。OpenStack 没有规定必须使用哪种数据库,虽然通常用的是 MySQL
- 通过 Native API 实现通信。出现在 OpenStack 各组件和第三方的软硬件之间,比如说,Cinder 和存储后端之间的通信,Neutron 的 agent 或者说插件和网络设备之间的通信,这些通信都需要调用第三方的设备或第三方软件的 API。
4. 讨论:如何对 OpenStack 的组件做高可用部署或者负载均衡
请举例说明,如何对 OpenStack 的组件做高可用部署或者负载均衡?
高可用 HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。
负载均衡指集群中所有的节点都处于活动状态,它们分摊系统的工作负载。
分布式系统 OpenStack 要想做高可用部署或者负载均衡,需要遵循如下步骤:
- 针对不同的需求设计相应的方案,合理规划计算资源、网络资源、存储资源;
- 将服务、服务中的组件拆开部署,学习 swift 的跨地域部署,有利于提高服务可用性及 OpenStack 的负载均衡;
- 将同一服务部署在不同节点,形成双机热备和多机热备的高可用集群,最大化 SOA 架构的作用;
- 在复杂的数据中心环境中不断优化与第三方服务的对接和集成,最大化优化 OpenStack 从逻辑架构到物理架构的映射;
我的举例说明:
- 规模较大的情况下,把各种管理服务部署到不同的服务器上。把这些服务拆开部署 到不同的节点上,甚至要把同 一个服务的不同组件也拆开部署,比如说可以把 Nova 的数据库给独立拧出来部署成一个 MySQL 数据库集群,还有 Cinder 里面的 Scheduler 和 Volume 可以部署到不同的节点上,实际上因为 Swift 项目具有一定的独立性,所以 Swift 本身就有跨地域部署的生产环境,规模非常之大,跨地域部署,所以它的服务的可用性极高,自然有这种栽培的特性,可以提供极高可用性和数据持久性的对象存储服务。
- 出于高可用的考虑,生产环境中我们会把 OpenStack 的同一个服务部署到不同的节点上,形成双机热备或者多机热备的高可用集群。(或者用负载均衡集群)。
- 在复杂的数据中心环境中,还有很多第三方服务,比方说 LDAP 服务、DNS 服务等等,考虑如何与第三方服务进行对接和集成。
5. 讨论:比较 Swift 和 Cinder 两种存储之间的异同
异:
Swift 比较独立,Swift 是做对象存储的,提供的是对象存储的接口,采用的是全对等架构。Cinder 是提供块存储的,提供的是块存储的接口,屏蔽了底层的硬件异构性。
关于数据流流向,Swift 对它的操作不仅仅是通过它的 Swift Proxy Server 提供的 RESTful API 进行操作的,它的数据也是通过 RESTful API 走的,我们要把数据放在Swift里面或者从Swift里把数据拿出来,都是通过 RESTful Web API。但是在 Cinder 不一样,Cinder API 基本上只能提供一些操作和管理功能,是直接通过 FC/iSCSI 传输数据到服务器,数据不会通过 Volume 去走,也不会通过 RESTful API。
同:
Swift 和 Cinder 都是软件定义存储,都属于资源管理层中的存储管理模块,都是 OpenStack 最主要的存储组件
6. 讨论:比较 Neutron 和 Nova-Network 的异同
相同点:
- 都可以实现网络管理功能;
- (租户之间)都可以实现基于 Vlan 的隔离;
不同点:
- Nova-Network 只能实现简单的网络管理,Neutron 则比较强大;
- Nova-Network 在以前网桥的基础上加模块实现 2 种工作模式:Flat DHCP 和基于 Vlan 的隔离的工作模式;而 Neutron 对上不仅可以提供 Vlan 的隔离,还可以实现 SDN,对下还支持第三方 API、Plugin 的扩展;
- Neutron 支持每个租户创建自己的虚拟网络,定义自己网络拓扑,租户间隔离即 Rich Topologies。
7. 讨论:Heat 中的模板和 Sahara 中的模板的异同
相同点:
都是通过模板来实现对资源的创建,销毁,生命周期的管理等等
不同点:
- Heat 模板 Template 操作的对象是 Stack,并且只有一种方式进行调用,实现的是各个组件资源的整合和形成一个有机的整体
- Sahara 由于存在两种使用模式:用户模式(edp 模式)和管理模式(iaas 模式),所以模板的使用主要集中在 iaas 模式上,分为两种:集群模板和节点组模板。实现的是对 Hadoop 集群的快速创建
8. 讨论:Ceilometer 获取计量数据的方式
获取计量数据的方式:
(1)需要原始数据的来源
- 通过 MQP 消息中间件收集各个组件发出来的消息
- 通过 Ceilometer 的一些 agent 调用 OpenStack 各个 component 的 api 获得数据
- 如果要有效的采集和 Nova 相关的数据,通过在每个计算节点上运行 Ceilometer 的 polling agent 获得虚拟机的信息
(2)存在数据的存储:依赖第三方后端来实现,默认的后端数据库是 MongoDB。
(3)来自第三方系统:最主要的使用方式就是第三方系统,通过调用 Ceilometer API 获得计量数据,设置报警条件和预值,监听报警,进一步去实现计费和监控功能,具体使用的时候涉及到 Ceilometer 怎么设置,每项数据通过调用什么 API 获得,怎么设置报警的预值等等
9. 讨论:安装 Swift、Cinder 等其他服务的步骤
如果在目前已经完成的 OpenStack 演示环境部署的基础上,继续安装 Swift、Cinder 等其他服务,一般来说有哪些步骤?
Cinder
- 配置管理网络 nova-network;
- 安装、配置 NTP 服务(本机时间与网络时间同步,将本机作为服务器提供给其他主机使用);
- 下载安装 Cinder;
- 创建 cinder-volumns 并进行配置;
- 配置 keystone 验证、数据库访问(删除 sqlite 文件)及 RabbitMQ 消息中间件;
- 重启 volumn 服务。
或者描述为
- 安装 openstack 包
- 配置管理网络网卡
- 修改 hosts 为 block
- 重启
- 安装 NTP 安装LVM 包
- 创建 LVM 卷组 cinder-volumes
- lvm 扫描修改
- 安装配置块存储卷组件
- 验证安装
参考:http://www.aboutyun.com/thread-11681-1-1.html
Swift
- 创建 Swift 用户和组;
- 创建数据库并进行配置(删除 sqlite 配置文件);
- 创建镜像 glance 并配置 rsync.conf,配置完成后重启服务;
- 下载安装 swift;
- 对 swift 服务进行配置;
- 创建 Swift 并运行脚本。
10. 讨论:面对 Ceph 和 Swift 两种存储方案如何进行选型
(1)规模小,节点数量少的使用 Ceph,因为 Swift 至少要用到 5 个节点,划不来。
(2)需要提供云盘的服务的时候选择 Swift,做云盘就意味着要面对大量的用户,还希望用户的体验好,可以让用户来选择数据怎么存,这个时候选择 Swift 是更好的,一方面对于这种规模化部署的支持比较好,第二方面它有一些先进的 Feature,第三方面它的价格成本比 Ceph 要低一些
11. 讨论:OpenStack 和 Docker 如何结合
- 使用 Swift 做 Docker 镜像的存储后端
- 用 Nova 调度和管理 Docker 容器
- 使用 Heat 实现 Docker 容器
- 使用 Heat 实现 Docker 的 Orchestration
- 基于 Neutron 设计与实现适用于 Docker 的 SDN 方案
- 用 Glance 来管理 Docker 的镜像
网络 MOOC 学习笔记
From 高校帮 《OpenStack 入门 @讲师 李明宇》
By 胡飞
at 2016/4/7 14:45:11