如何阅读OpenStack源码

1 OpenStack基础 1.1 OpenStack组件介绍 OpenStack是一个IaaS层的云计算平台开源实现,其对标产品为AWS。最开始OpenStack只有两个组件,分别为提供计算服务的Nova以及提供对象存储服务的Swift,其中Nova不仅提供计算服务,还包含了网络服务、块存储服务、镜像服务以及裸机管理服务。之后随着项目的不断发展,从Nova中根据功能拆分为多个独立的项目,如nova-volume拆分为Cinder项目提供块存储服务,nova-image拆分为Glance项目,提供镜像存储服务,nova-network则是neutron的前身,裸机管理也从Nova中分离出来为Ironic项目。最开始容器服务也是由Nova提供支持的,作为Nova的driver之一来实现,而后迁移到Heat,到现在已经独立为一个单独的项目Magnum,后来Magnum的愿景调整为主要提供容器编排服务,单纯的容器服务则由Zun项目接管。最开始OpenStack并没有认证功能,从E版开始才加入认证服务Keystone。 ...

August 28, 2017 · 13 min · 6493 words · Ringi Lee

OpenStack数据库版本控制工具简介

写在前面的话 自今年3月份以来就没有写过博客了,主要是由于工作的原因,加上拖延症,中断了大约半年时间。今天重新捡起来,准备好好总结反省这5个月时间的所得多学,记录下来防止以后又忘了。 ...

August 24, 2017 · 15 min · 7100 words · Ringi Lee

Cinder数据卷备份原理与实践

一、背景 1.1 数据保护技术概述 快照(Snapshot)、复制(Replication)、备份(Backup)是存储领域中最为常见的数据保护技术。快照用于捕捉数据卷在某一个时刻的状态,用户可以随时回滚到这个状态,也可以基于该快照创建新的数据卷。备份就是对数据进行导出拷贝并传输到远程存储设备中。当数据损坏时,用户可以从远端下载备份的数据,手动从备份数据中恢复,从而避免了数据损失。快照类似于git的commit操作,我们可以随时reset/checkout到任意历史commit中,但一旦保存git仓库的磁盘损坏,提交的commit信息将永久丢失,不能恢复。而备份则类似于git的push操作,即使本地的数据损坏,我们也能从远端的git仓库中恢复。简而言之,快照主要用于快速回溯,而备份则用于容灾,还能避免误删除操作造成数据丢失。数据复制则类似于mysql的master/slave主从同步,通常只有master支持写操作,slave不允许用户直接写数据,它只负责自动同步master的数据,但一旦master出现故障,slave能够提升为master接管写操作。因此复制不仅提供了实时备份的功能,还实现了故障自动恢复(即高可用)。 ...

March 30, 2017 · 17 min · 8370 words · Ringi Lee

cinder-volume服务如何实现AA高可用

1 何谓"锁" 锁是操作系统用来实现进程同步和数据一致性的常用手段之一,能够保证同一时刻只有一个进程访问互斥资源以及数据的完整性。计算机中的锁,根据运行环境可以大体分为以下三类: ...

March 16, 2017 · 11 min · 5324 words · Ringi Lee

Ceph RBD mirror功能介绍

1.Ceph RBD mirror简介 Ceph采用的是强一致性同步模型,所有副本都必须完成写操作才算一次写入成功,这就导致不能很好地支持跨域部署,因为如果副本在异地,网络延迟就会很大,拖垮整个集群的写性能。因此,Ceph集群很少有跨域部署的,也就缺乏异地容灾。Ceph RBD mirror是Ceph Jewel版本引入的新功能,支持两个Ceph集群数据同步,其原理非常类似mysql的主从同步机制,前者基于journaling,后者基于binlog,二者都是基于日志回放完成主从同步的。 ...

January 24, 2017 · 7 min · 3113 words · Ringi Lee

聊聊Nova Compute Driver的那些趣事

OpenStack设计准则 OpenStack是一个开源云计算平台项目,旨在为公共及私有云的建设与管理提供软件的开源实现。可扩展性和弹性是OpenStack设计的准则之一,即OpenStack的各个组件以及组件内部的模块都应该是可插拔的,并且可以随意的增加插件而不需要修改已有的接口。Driver机制就是其中的一个很好的例子,Nova通过不同的driver支持不同的hypervisor,Cinder通过不同的driver支持不同的存储后端,Neutron通过各种agent支持不同的网络类型,Sahara通过各种plugin支持不同的Hadoop发行版等等,在OpenStack几乎处处存在这样的影子。所有的driver都是可配置的,通过配置不同的driver,各个组件就能注册不同的驱动,从而支持不同的资源类型。 ...

January 07, 2017 · 8 min · 3540 words · Ringi Lee

深圳黑客松之旅

OpenStack黑客松活动是我一直神往的活动,因为这个活动不仅能够让自己在黑客味笼罩的环境中全身心融入bug fix状态,还能有机会与OpenStack各个项目的PTL、Core等大牛面对面交流(平时只能通过IRC或者邮件联系)。 ...

December 03, 2016 · 4 min · 1828 words · Ringi Lee

OpenStack虚拟机保护的几种方法

1.虚拟机保护的重要性 虚拟机是OpenStack中最重要的角色之一,我们接触比较多的Nova服务就是通过虚拟机方式提供计算虚拟化服务。除此之外,还有很多高层服务也是完全依赖于Nova服务提供的虚拟机,比如Sahara大数据服务、Magnum容器编排服务、Manila文件共享服务以及Trove数据库服务等,这些服务底层都是基于虚拟机实现的。虚拟机的保护至关重要,不仅承载着用户活动的业务,还保存着用户的重要数据。虚拟机意外丢失不仅可能导致用户业务中止,还可能导致重要数据的丢失,甚至造成重大生产事故,虚拟机的保护不容忽视! ...

November 09, 2016 · 5 min · 2397 words · Ringi Lee

OpenStack Nova组件对象模型以及数据库访问机制

1. 背景介绍 在OpenStack G版以前,Nova的所有服务(包括nova-compute服务)都是直接访问数据库的,数据库访问接口在nova/db/api.py模块中实现,而该模块只是调用了IMPL的方法,即该模块只是一个代理,真正实现由IMPL实现,IMPL是一个可配置的动态加载驱动模块,通常使用Python sqlalchemy库实现,对应的代码为nova.db.sqlalchemy.api: ...

November 01, 2016 · 8 min · 3704 words · Ringi Lee

OpenStack使用Ceph存储后端创建虚拟机快照原理剖析

1.背景知识 1.1 Ceph基础知识 Ceph是一个开源的统一分布式存储系统,最初由Sage Weill于2007年开发,其目标是设计基于POSIX的无单点故障的分布式存储系统,同时提了统一存储系统下的高可扩展的对象存储、块存储以及文件系统存储。其中rbd块存储目前最常见的应用场景之一是作为OpenStack的共享分布式存储后端,为OpenStack计算服务Nova、镜像服务Glance以及块存储服务Cinder提供共享的统一存储服务。RBD官方描述为: ...

October 25, 2016 · 8 min · 3759 words · Ringi Lee