技术开发 频道

OpenStack集群实现方式简介

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
相关文章