O015、OpenStack 架构
终于正式进入OpenStack 部分了。
今天开始正式学习OpenStack,OpenStack 从2010年到今天,已经第10个年头了 。每半年发布一个版本,版本以字母顺序命名,现在已经到第20个版本了(字母 T),OpenStack 最初只有两个模块(服务),现在模块数量已经超过40+ ,每个模块作为独立的子项目开发。
版本列表参考下面 Release Series (https://releases.openstack.org/index.html#release-series)
模块列表参考下面 Service Projects (https://releases.openstack.org/stein/index.html#service-projects)
面对如此庞大的阵容,作为初学者我们如何起步呢?这里我们通过实际操作由浅入深的学习和实践OpenStack,最终具备实施OpenStack的能力。
我们会把学习的重点放在OpenStack最核心的地方,见下图
作为 IaaS 层的云操作系统,OpenStack 为虚机提供并管理三大类资源:计算、存储、网络
这三个就是核心,所以我们学习的重点就是:搞清楚 OpenStack 是如何对计算、网络和存储资源进行管理的。在 40+ 模块中,管理这三类资源的模块其实并不多,这几个模块就是我们的学习重点。
要达到这个目的,我们自然需要研究 OpenStack 的整体架构。架构里哪些核心模块负责管理计算资源、网络资源和存储资源?模块之间如何协调工作?同时我们会构建一个实验环境,进到各个模块的内部,通过实际操作真正理解和掌握OpenStack。
OpenStack架构
结构是个好东西,他帮我们站在高处看清楚事务的整体结构,避免过早的进入细节而迷失方向,下图是OpenStack的Conceptual Architecture
中间菱形 是虚拟机,围绕VM的那些长方形代表OpenStack不同的模块(OpenStack叫服务,后面都用服务这个术语),下面分别介绍这些服务。
Nova 管理VM的生命周期,是OpenStack中最核心的服务。
Neutron 为OpenStack提供网络连接服务,负责创建和管理 L2 L3 网络,为VM听过虚拟网络和物理网络连接。
Glance 管理VM启动镜像,Nova创建VM时将使用Glance提供的镜像。
Cinder 为VM提供块存储服务。Cinder提供的每一个Volume在VM看来就是一块虚拟磁盘,一般用作数据盘。
Swift 提供对象存储服务。VM可以通过 RESTful API 存放对象数据。作为可选的方案,Glance可以将镜像存放在Swift中,Cinder也可以将Volume备份到Swift中。
Keystone 为OpenStack的各种服务提供认证和权限管理服务。简单的说,OpenStack上的每一个操作都必须通过Keystone的审核。
Ceilometer 提供OpenStack监控和计量服务,为报警、统计或者计费提供数据。
Horizon 为OpenStack用户提供一个Web的自服务portal。
在上面这些服务器中,哪些是OpenStack的核心服务呢?核心服务就是如果没有他,OpenStack就跑不起来。所以
1、Nova 管理计算资源,是核心服务
2、Neutron 管理网络资源,是核心服务
3、Glance 为VM提供OS镜像,属于存储范畴,是核心服务
4、Cinder 提供块存储,VM怎么也得需要数据盘吧,是核心服务
5、Swift 提供对象存储,不是必须的,是可选服务
6、Keystone 认证服务,没他OpenStack转不起来,是核心服务
7、Ceilometer 监控服务,不是必须的,是可选服务
8、Horizon 非常需要的一个操作界面
现在核心服务有了,我们把镜头拉近,看看核心服务的内部结构:Logical Architecture
在 Logical Architecture 中,可以看到每个服务又有若干个组件组成。以 Neutron为例,包含
1、Neutron Server、Neutron Plugins 和 Neutron Agents
2、Network Provider
3、Message Queue
4、Neutron Database
在后面的章节中我们会展开学习这些组件。
这里想要强调一点:上面是 Logical Architecture ,描述的是 Neutron 服务各个组成部分以及个组件之间的逻辑关系。而在实际的部署方案上,各个组件可以部署到不同的物理节点上。
OpenStack 本身是一个分布式系统,不但各个服务可以分布式部署,服务中的组件也可以分布式部署。这种分布式特性让OpenStack 具备极大的灵活性、伸缩性和高可用性。当然从另一个角度将,这也使得OpenStack比一般系统复杂,学习难度也大。
后面我们会深入学习各个核心
Release Series( https://releases.openstack.org/index.html)¶
OpenStack is developed and released around 6-month cycles. After the initial release, additional stable point releases will be released in each release series. You can find the detail of the various release series here on their series page. Subscribe to the combined release calendar for continual updates.
Series
|
Status
|
Initial Release Date
|
Next Phase
|
EOL Date
|
2019-10-16 estimated(schedule)
|
Maintained estimated 2019-10-16
|
|
||
2019-04-10
|
Extended Maintenanceestimated 2020-10-10
|
|
||
2018-08-30
|
Extended Maintenanceestimated 2020-02-24
|
|
||
2018-02-28
|
Extended Maintenanceestimated 2019-08-25
|
|
||
2017-08-30
|
Extended Maintenanceestimated 2019-03-03
|
|
||
2017-02-22
|
Unmaintainedestimated TBD
|
|
||
2016-10-06
|
|
2017-10-25
|
||
2016-04-07
|
|
2017-04-10
|
||
2015-10-15
|
|
2016-11-17
|
||
2015-04-30
|
|
2016-05-02
|
||
2014-10-16
|
|
2015-12-07
|
||
2014-04-17
|
|
2015-07-02
|
||
2013-10-17
|
|
2014-09-30
|
||
2013-04-04
|
|
2014-03-29
|
||
2012-09-27
|
|
2013-11-19
|
||
2012-04-05
|
|
2013-05-06
|
||
2011-09-22
|
|
2013-05-06
|
||
2011-04-15
|
|
|
||
2011-02-03
|
|
|
||
2010-10-21
|
|
|
Note: The schedule of Maintenance phases changed during Ocata. The old phases were used until Newton.
Service Projects( https://releases.openstack.org/stein/index.html)¶
Deliverable
|
Earliest Version
|
Most Recent Version
|
Stable Status
|
Notes
|
8.0.0
|
8.0.0
|
|||
8.0.0
|
8.0.0
|
|
||
3.0.0
|
3.0.0
|
|||
12.0.0
|
12.0.0
|
|||
14.0.0
|
14.0.0
|
|||
9.0.0
|
9.0.0
|
|||
9.0.0
|
9.0.0
|
|||
2.0.0
|
2.0.0
|
|||
8.0.0
|
8.0.0
|
|||
8.0.0
|
8.0.0
|
|
||
7.0.0
|
7.1.0
|
|||
18.0.0
|
18.0.0
|
|||
12.0.0
|
12.0.0
|
|||
15.0.0
|
15.0.0
|
|||
12.0.0
|
12.1.0
|
|||
1.2.0
|
1.3.0
|
|
||
15.0.0
|
15.0.0
|
|||
8.0.0
|
8.0.0
|
|||
8.0.0
|
8.0.0
|
|||
7.0.0
|
7.0.0
|
|||
8.0.0
|
8.0.0
|
|||
2.8.0
|
3.0.0
|
|||
0.2.0
|
0.3.0
|
|||
2.8.0
|
2.9.0
|
|||
7.0.0
|
7.0.0
|
|||
14.0.0
|
14.0.1
|
|||
19.0.0
|
19.0.0
|
|||
4.0.0
|
4.0.0
|
|||
6.0.0
|
6.0.0
|
|||
1.0.0
|
1.0.0
|
|||
2.0.0
|
2.0.0
|
|||
10.0.0
|
10.0.0
|
|||
6.0.0
|
6.0.0
|
|||
7.0.0
|
7.0.0
|
|||
6.0.0
|
6.0.0
|
|||
3.0.0
|
3.0.0
|
|
||
2.20.0
|
2.21.0
|
|||
1.0.0
|
1.0.0
|
|||
6.0.0
|
6.0.0
|
|||
11.0.0
|
11.0.0
|
|
||
4.0.0
|
4.3.1
|
|||
2.0.0
|
2.0.0
|
|||
8.0.0
|
8.0.0
|
|
||
3.0.0
|
3.0.0
|