当前位置: 首页 > 编程日记 > 正文

OpenStack如何实现高可用集群介绍

OpenStack是目前基于开源的,一个非常流行的云管理平台项目。这个项目由几个主要的组件组合起来完成一些具体的工作。因此它的集群比较复杂,也有多种选择方式。OpenStack 作为一个类似于 Amazon EC2 和 S3 的云基础架构服务(Infrastructure as a Service, IaaS),现在越来越多的企业正在搭建OpenStack平台来提高IT运行效率和降低IT成本。本文希望帮助大家快速了解OpenStack集群,并以此结合相关软件的官方文档来搭建一个高可用性的云管理平台。

1. OpenStack高可用性相关概念 

1.1 高可用性系统

高可用系统至少关注以下两个问题:

系统宕机时间―系统服务无法访问的时间总和。

数据丢失―意外删除或破坏数据。

高可用性的一个关键方面是消除单点故障(SPOFs)。SPOF是单个的设备或软件故障将导致系统停机时间或数据丢失。为了消除单点故障,必须存在如下必要的冗余:

网络组件,如交换机和路由器

应用程序和自动服务迁移

存储组件

设施服务,如电力、空调、消防

高可用性系统通常达到99.99%或更多的正常运行时间,这大约相当于每年累计停机不到一个小时。为了实现这一目标,应保持高可用性系统发生故障后恢复时间约一到两分钟,有时更少。

对于基础设施服务来说,如果实现了必要的冗余,OpenStack目前能满足这样的可用性需求,这意味着OpenStack提供的各项服务的正常运行时间的99.99%是可用的。 然而,OpenStack并不能保证运行于基础设施上的个人的虚拟机实例99.99%的可用性。

1.2 无状态和有状态服务

无状态的服务是提供一个你的响应请求后,不需要进一步关注。无状态服务的高可用性,您需要提供冗余实例和负载均衡。 OpenStack无状态的服务包括nova-api,nova-conductor,glance-api,keystone-api,neutron-api nova-scheduler。

一个有状态的服务,后续请求将依赖于第一个请求的结果。有状态的服务管理更困难,因为一个行动通常涉及多个请求,所以只是提供额外的实例和负载均衡不会解决这个问题。例如Horizon 服务,如果用户界面重置了,后续任务被引导去了一个新服务器,它是没有用的。OpenStack有状态的服务包括OpenStack数据库和消息队列。

1.3 主动/被动

在一个主动/被动配置里,需要安装一个备用机,备用机通常处于待机状态,当主机宕机后,备用机启动提供服务。额外的应用需要安装(如: Pacemaker 或 Corosync)来监控这些服务,并必要时启动备用机来提供服务。

1.4 主动/主动

在主动/主动模式下,系统也需要备用机,但将同时管理主机和冗余系统。 这样,如果有一个失败了,用户不太可能注意到。 因为备份系统已经上线。 通常对于一个无状态的服务来说,使用一个虚拟IP地址和HAProxy等负载均衡器来达到负载均衡。 对于一个有状态的服务来说,需要保证包括冗余服务所有实例都有一个相同的状态。例如,更新数据库的一个实例也会更新所有其他实例。

2. 使用主动/被动,主动/主动混合模式实现集群

这只是一个实例来实现这些高可用性架构,但他们绝不是唯一的方法。首先做一下环境的假设,如图1所示一共有四个服务器,两个云控制器节点组成一个集群,两个网络节点组成一个集群,图中列出了一些主要的OpenStack组件。本例中没有列出计算结点,因为计算结点不需要配置集群。集群中的每一个OpenStack服务可以采用不同的模式,本例部分采用主动/主动模式,部分采用主动/被动模式。

使用主动被动,主动混合模式实现集群

图1  集群示例图

2.1 采用主动/主动的组件

2.1.1 使用Galera实现MySQL的集群

Galera是一个MySQL(也支持MariaDB,Percona)的同步多主集群软件。主要功能有:同步复制,并行复制,所有节点可以同时读写数据库,新节点加入数据自动复制, 失效节点自动被清除, 可以直接连接集群,使用感受上与MySQL完全一致。

你可以安装带有wsrep(Write Set REPlication)补丁的MySQL版本。从如下地址可以下载到 https://launchpad.net/codership-mysql/0.7。由于Wsrep API支持同步复制,很适合用于配置OpenStack里MySQL高可用性。首先你可以启动一个实例来创建集群,然后其它的MySQL实例连接到这个集群。因为Galera mysql用到了领导机选举机制quorum,所以对于这个service来说至少需要三个控制结点。

2.1.2 RabbitMQ

RabbitMQ是默认的AMQP服务器,被许多OpenStack服务所使用。使RabbitMQ服务高可用性包括三个步骤: 安装RabbitMQ ,为HA队列配置RabbitMQ ,使用Rabbit HA队列配置OpenStack服务。

我们可以建立一个RabbitMQ的集群来构造一个RabbitMQ broker。可以创建至少两个的RabbitMQ 服务器。为了构造一个broker,我们必须确保所有的结点有相同的Erlang cookie文件。你可以停止所有的RabbitMQ,然后从rabbit一台服务器复制cookie到其它服务器上。我们必须配置openstack组件使用至少两个RabbitMQ结点。

2.1.3 HAProxy结点

HAProxy是一个非常快速和可靠的高可用性解决方案、支持负载均衡,并为基于TCP和http的应用程序提供代理。它特别适合高负荷的web站点,足以支持数以万计的连接访问。

你需要至少两个结点来运行HAProxy,可以分别运行于图1中的cloud controller node A和B上。你可以通过访问cluster的虚拟IP访问相关的openstack服务,虚拟IP和服务结点的关联就是通过HAProxy的配置文件实现的。 具体配置可参考官方文档。

2.1.4 API服务

所有OpenStack项目都有一个API服务用来控制云中的所有资源。 在主动/主动模式中,最常见的设置是扩展这些服务到至少两个节点上,并且使用负载平衡和虚拟IP(HAProxy & keepalived相关配置)。为了使我们的云高可用并且可扩展,我们必须确保:

当配置OpenStack Identity endpoints的时候,使用虚拟IP。

所有的OpenStack配置文件都会涉及到虚拟 IP。

2.1.5 调度程序

OpenStack调度器用于确定如何调度计算,网络和存储卷。最常见的设置是使用RabbitMQ作为消息系统。以下这些服务可连接到消息服务,请参考RabbitMQ配置方法进行配置:

nova-scheduler

nova-conductor

cinder-scheduler

neutron-server

ceilometer-collector

heat-engine

2.1.6 Memcached

大多数OpenStack服务都会使用一个应用程序用于存储持久和临时数据(如令牌)。 Memcached就是其中一个, Memcached容易扩展并且不需要任何特殊的技巧。可参考官方文档进行安装和配置。

2.2 采用主动/被动的组件

2.2.1 安装和配置Pacemaker 集群管理软件

主动/被动模式下,需要先安装和配置Pacemaker 集群管理软件。Pacemaker是Linux平台下的先进的高可用性和负载均衡管理软件。Pacemaker集群中的所有主机上,必须通过Corosync消息传递层建立集群通信。这涉及到安装以下软件包(以及和他们有依赖关系的软件包,通常你的包管理器会安装自动):

pacemaker

crmsh

corosync

cluster-glue

fence-agents(只适用于Fedora;所有其他发行版都使用cluster-glue)

resource-agents

安装完软件包之后,你需要设置Corosync,然后启动Corosync,最后启动Pacemaker。一旦Pacemaker服务已经开始,Pacemaker将创建一个默认空集群配置,没有资源。一旦你的Pacemaker集群已经创建,你就可以设置一些基本集群属性。具体配置可参考官方文档。

2.2.2 网络集群组件

a) Neutron L3 agent的高可用性

Neutron L3 agent提供了L3/NAT 转发,确保租户能访问到他们的虚拟机。通过采用Pacemaker来实现高可用。你需要把neutron L3 agent 资源加入到Pacemaker 集群。

b) Neutron DHCP agent的高可用性

Neutron DHCP agent通过dnsmasq来分发IP地址给虚拟机。你也需要把neutron DHCP agent 资源加入到Pacemaker集群。

c) Neutron metadata agent的高可用性

Neutron metadata agent 允许租户网络上的虚拟机访问 Compute API 元数据。 你需要把neutron metadata agent 资源加入到Pacemaker集群。

2.2.3 管理网络资源

你现在可以增加一个组来管理所有的网络资源。可以通过crm configure 命令连接到Pacemaker集群来创建组。

3.小结

采用主动/主动的服务通常通过建立HAProxy及设置虚拟IP来达到高可用的效果,而采用主动/被动的服务则通过创建Pacemaker集群来达到高可用的效果。采用主动/主动的服务通常支持负载均衡,集群中的服务器被充分利用。而如果采用主动/被动的服务,那么主机和备机之间的切换需要一定的时间。实际应用中可以尽可能的选择主动/主动服务。本例中只有网络部分选择的是主动/被动服务,原因是目前OpenStack还不支持主动/主动的网络服务。如果有的企业比较注重用电的开支,也可以适当选用主动/被动的服务。主动/被动模式下,备机通常可以处在关机待命状态下以节省用电量。


本文转自    OpenStack2015 博客,原文链接:   http://blog.51cto.com/andyliu/1901003     如需转载请自行联系原作者

相关文章:

accp8.0html作业,Accp8.0HTML标签

第一章1、HTML超文本标记语言2、网页3、网页头部4、网页标题5、网页主体6、DOCTYPE声明3种级别:(1)Strict 严格类型(2)Transitional过渡类型(3)Frameset框架类型7、网页摘要标签8、字符编码:gb2312简体中文ISO-885901纯英文big5繁体UTF-8国际通用编码9、…

向iOS越狱彻底说再见!

老牌第三方软件商店 Cydia 关闭在即,iPhone 越狱时代又见落日归途?作者 | 仲培艺出品 | CSDNCydia 线上商店是针对完成越狱的 iOS 设备的一种破解软件,在越狱过程中被装入到系统,为 iOS 设备提供第三方 App 的服务平台&#xff0c…

ArrayList的subList方法

李说&#xff1a; ArrayList的subList方法获取到的是ArrayList的一段list&#xff0c;只是其中的一段视图。所以修改subList ,ArrayList同时会修改&#xff0c;因为本来就是同一个东西。 jdk文档中是这样说的&#xff1a; List<E> subList(int fromIndex, int toIndex) …

男孩子学计算机和学医哪个好,你认为学医好还是读211大学的电子信息好?

学医的好处。社会的地位和社会认可度较高。无可否认无论是在过去还是在将来&#xff0c;医生因为其救死扶伤的职业特点而被广泛大众所接受和认可。较高的社会地位会让你在将来的择偶、人际关系处理方面显得更有吸引力和话语权。工作稳定有保障。这点其实还是看题主的水平和实力…

Error Creating Control when creating a custom control

如果你在创建ASP.NET的Server Control 是遇到报错&#xff1a; "Error Creating Control" when creating a custom control 原因是 ToolboxData 元数据中的控件名称和控件的类(class)名不同&#xff0c;改为相同即可解决问题。转载于:https://www.cnblogs.com/DotNet…

精选180+Python开源项目,随你选!做项目何愁没代码

编辑 | Jane出品 | Python大本营每一位程序员&#xff0c;每天大部分时间都是在和代码打交道。但是对于广大的普通用户来说&#xff0c;最重要的不是代码&#xff0c;而是代码最终生成的应用程序。但是&#xff0c;每个项目都从头开始自己一行一行码代码&#xff0c;是非常不现…

八年级计算机网络公开课,计算机网络公开课教案.doc

计算机网络公开课教案公开课教案科目&#xff1a;计算机网络课题: 交换机配置文件备份与恢复知识目标:1、在本次课中要向学生传授交换机上传、下载服务器的安装和配置&#xff1b;2&#xff0e;学生学习交换机上传配置命令&#xff0c;完成交换机Flash内存中保存的配置文件上传…

Centos6.5升级系统自带gcc4.4.7到gcc4.8.0

下载 wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.0/gcc-4.8.0.tar.bz2 解压 tar -xjvf gcc-4.8.0.tar.bz2 进入 cd gcc-4.8.0 下载所需软件&#xff08; ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2 ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.…

photofunia

存个链接用~~~[url]http://www.photofunia.com/[/url]转载于:https://blog.51cto.com/wangyublues/120301

学计算机应用好还是汽车维修好,大学汽车运用与维修专业怎么样_学什么_前景好吗-520吉他网...

时间&#xff1a;2019-06-23 来源&#xff1a;网络资源 汽车运用与维修专业怎么样_学什么_前景好吗2019高考填报志愿时&#xff0c;汽车运用与维修专业怎么样、学什么、前景好吗等是广大考生和家长朋友们十分关心的问题。以下是大学生必备网整理的汽车运用与维修专业介绍、…

20T数据、百万奖金,同济和武大摘得开放数据创新应用大赛桂冠!

整理 | Jane出品 | AI科技大本营中国华录杯城市开放数据创新应用大赛&#xff0c;18 日在天津迎来了收官的决赛之战。本次大赛由中国华录集团有限公司和天津市津南区人民政府共同举办。利用天津市人民政府、企业开放的数据资源&#xff0c;吸引了众多国内高校科研团队和科技企业…

rrdtool报错

参考文档&#xff1a; http://serverfault.com/questions/662161/rrdtool-illegal-attempt-to-updatehttps://emacstragic.net/collectd-causing-rrd-illegal-attempt-to-update-using-time-errors/https://support.nagios.com/forum/viewtopic.php?f7&t26087 报错信息&am…

Grid R-CNN解读:商汤最新目标检测算法,定位精度超越Faster R-CNN

作者 | 周强来源 | 我爱计算机视觉Grid R-CNN是商汤科技最新发表于arXiv的一篇目标检测的论文&#xff0c;对Faster R-CNN架构的目标坐标回归部分进行了替换&#xff0c;取得了更加精确的定位精度&#xff0c;是最近非常值得一读的论文。今天就跟大家一起来细品此文妙处。一、作…

河南信息工程学校计算机协会申请书,协会成立申请书范文15篇.docx

协会成立申请书范文15篇协会成立申请书(一)&#xff1a;  尊敬的系团委领导&#xff1a;  摄影作为一门艺术不仅仅能够丰富同学们的学习生活&#xff0c;同时对学院的建设也起到一个不可黙灭的作用。为了发挥自身优势&#xff0c;参加学校社团文化建设&#xff0c;培养同学…

Luna的大学读书史(1,Intro)

Luna看了看自己的屋子&#xff0c;乱乱的一大摊&#xff0c;地上有的地方的灰都已经是厚厚的一层&#xff0c;有的角落甚至还结了蜘蛛网。床上的被子和衣服搅在一起&#xff0c;书桌上散乱的摆着几根笔和一个大号笔记本&#xff0c;草稿纸上画了若干莫名其妙的符号&#xff0c;…

【BIEE】数据透视表格第一列添加序号

现在有这么一个需求&#xff0c;需要在数据透视图的表格前面条件一列序号&#xff0c;作为行号&#xff0c;如下图&#xff1a;那么实现这个如何实现呢&#xff1f;只需要在BIEE分析编辑界面&#xff0c;新建一列&#xff0c;然后公式定义为&#xff1a;RCOUNT(RSUM(1)) &#…

2018最后一个月的Python热文Top10!赶紧学起来~

作者 | Mybridge译者 | linstancy整理 | Jane出品 | AI科技大本营过去一个月里&#xff0c;我们对近 1000 篇 Python 文章进行了排名&#xff0c;并挑选出热度前10的文章。这份清单的内容涵盖了包括 master python、REST APIs、twitter bot、random module、贝叶斯模型和线性回…

一处机房建设的败笔

第二个是关于空调的。是另一个机房&#xff0c;机房大概的布局如下图。左边空地是为日后扩展所留空间。右边有一排机柜&#xff0c;箭头所指为机柜前端方向。空调是一台艾默生的精密空调&#xff0c;被安装在机房的角落处。看出来什么问题吗&#xff1f;如果是你&#xff0c;你…

计算机组成原理实验pc,计算机组成原理实验报告5- PC实验

计算机组成原理实验报告5- PC实验2.5 PC实验姓名&#xff1a;孙坚 学号&#xff1a;134173733 班级&#xff1a;13计算机 日期&#xff1a;2015.5.15一&#xff0e;实验要求&#xff1a;利用CPTH 实验仪上的K16..K23 开关做为DBUS 的数据&#xff0c;其它开关做为控制信号&…

Python-socket编程

一.socket编程 Socket 是网络编程的一个抽象概念。通常我们用一个 Socket 表示“打开了一个网络链接”,而打开一个 Socket 需要知道目标计算机的 IP地址和端口号,再指定协议类型即可。 二.Python的socket编程实例 1.客户端操作 import socket s socket.socket()s.bind((, ))s.…

异步备份和还原数据库:.NET发现之旅(六)

信息系统是数据密集型的&#xff0c;数据的套帐&#xff0c;备份&#xff0c;还原是客户最希望有的功能&#xff0c;这一节课就讨论下C/S系统下数据库的异步备份和还原&#xff0c;B/S系统的数据备份和还原和这个类似。 既然是异步&#xff0c;首先会想到使用多线程技术。.NET平…

看动画轻松理解「链表」实现「LRU缓存淘汰算法」

作者 | 程序员小吴&#xff0c;哈工大学渣&#xff0c;目前正在学算法&#xff0c;开源项目 「 LeetCodeAnimation 」5500star&#xff0c;GitHub Trending 榜连续一月第一。本文为 AI科技大本营投稿文章&#xff08;欢迎给我们投稿&#xff0c;投稿请联系微信1092722531&#…

东北师大计算机考研报名人数,东北师范大学考研难吗?一般要什么水平才可以进入?...

问&#xff1a;从东北师范大学毕业的学生就业怎么样&#xff1f;值不值得报考&#xff1f;答&#xff1a;想要了解东北师范大学更多毕业生就业情况见>>>东北师范大学总之&#xff0c;东北师范大学就业率相对来说是比较良好的&#xff0c;如果大家对此学校感兴趣的话&a…

2009-徘徊-开场白

徘徊 不知道该怎么走coding已经随风散去思想不复存在&#xff0c;9月应该是个很好的月份。步入一个公司&#xff0c;当时的部长很强&#xff0c;虽然是ASP招我进来5天&#xff0c;走了。进入后的第一个是做一个RPGmaker的游戏coding 没什么关系08年刚开始似乎就很少编码了窝在宿…

未获得计算机访问权限,如何获取文件夹的访问权限

有些系统文件夹打不开&#xff0c;显示信息“拒绝你访问该文件夹”&#xff0c;有点让人摸不着头脑&#xff0c;明明我是管理员账号&#xff0c;明明整台电脑都是我的&#xff0c;你凭什么不让我访问呢&#xff0c;原来系统内是有比较复杂的权限分配的&#xff0c;我们可以稍作…

生成验证码点击可刷新

我把生成验证码与生成验证码图片封装成一个静态方法&#xff0c;放到ValidateCode类里 /// <summary> /// 生成验证码的类 /// </summary> public static class ValidateCode { /// <summary> /// 生成验证码 /// </summary> ///…

redhat enterprise linux 下配置本地yum源

一、在linux 6.1中本地yum源配置&#xff1a;首先编辑yum源配置文件我们可以再这个目录中新创建一个配置文件&#xff0c; #cd /etc/yum.repos.d, #vim yum.repo配置文件内容简介&#xff1a;[ ]内的是仓库的名字 name是仓库的描述也可以说是名字 baseurl 仓库的位置 enabled…

2018年最后几天学什么?给你关注度最高的10篇文章

作者 | Mybridge译者 | Linstancy整理 | Jane出品 | AI科技大本营【导语】我们从 12 月里近1400篇机器学习文章进行了排名&#xff0c;并挑选出最受大家关注的十篇文章。这些文章的内容主要是由 Google、DeepMind、OpenAI 等科技公司发布的自家在机器学习领域最新技术研究&…

详解Silverlight Treeview的HierarchicalDataTemplate使用

在Silverlight项目中&#xff0c;Treeview控件是比较常用的表示层次或者等级的控件&#xff0c;该控件可以非常清晰的显示数据之间的隶属关系。对于Treeview控件的基本使用已经有很多文章介绍&#xff0c;这里我想讲解一下Silverlight Treeivew的HierarchicalDataTemplate的使用…

win7计算机组策略打不开,win7系统gpedit.msc组策略打不开该怎么解决?方法步骤

电脑作为一款日常使用工具&#xff0c;用的时间长了&#xff0c;就会遇到各种事情&#xff0c;譬如win7系统gpedit.msc组策略打不开的状况&#xff0c;不用猜&#xff0c;正常情况下大伙第一次碰到win7系统gpedit.msc组策略打不开问题的肯定都会蒙圈&#xff0c;其实要完美解决…