OpenStack 高可用性解决方案手动安装指南(一)

OpenStack 高可用性解决方案手动安装指南(一)

英文文档网址:http://docwiki.cisco.com/wiki/COE_Grizzly_Release:_High-Availability_Manual_Installation_Guide#Background



                              思科的OpenStack Grizzly版本发布:高可用性解决方案手动安装指南
目录:

1.背景 
2.高可用性简介   
3.依赖关系
   3.1关键提醒
   3.2操作系统
   3.3服务器要求  
   3.4组网需求 
4.安装
   4.1所有节点的通用安装步骤
     4.1.1 Ubuntu12.04的安装
     4.1.2Grizzly 软件包
     4.1.3网络搭建
     4.1.4时间同步:
   4.2负载均衡节点的安

      4.2.1 Keepalived和HAproxy
   4.3所有Swift节点的通用安装步骤
   4.4Swift 存储节点的安装步骤
   4.5Swift Proxy节点安装步骤 
   4.6验证Swift安装
   4.7Controller节点安装
     4.7.1MYSQL WSREP 和 Galera 安装
     4.7.2MySQL WSREP和Galera监控技术
     4.7.3升级客户端的库 
     4.7.4RabbitMQ的安装
     4.7.5Keystone 安装
     4.7.6Glance 安装
     4.7.7Quantum 安装
     4.7.8Nova安装
     4.7.9Cinder安装
     4.7.10Horizon安装
   4.8Compute节点安装
     4.8.1升级客户端库(Client Libraries)
     4.8.2Quantum安装
     4.8.3Nova安装
     4.8.4Cinder安装 
    4.9配置OpenStack的网络(Quantum)并部署第一台虚拟机
    4.0配置OpenStack 网络(Quantum)DHCP代理高可用
  5.支持
  6.致谢
  7.作者 

 

1.背景

OpenStack有两种常用的安装方法,手动安装或使用自动化工具安装,使用Puppet, Chef, JuJu等自动化安装工具

进行openstack部署引人关注。相比手动安装,虽然这些工具提供了极大的便利,却隐藏了openstack安装和配置

的详细信息。本文档适用于对使用自动化安装工具来部署HA不感兴趣的人,或对学习关于openstack grizzly HA

更多知识安装感兴趣的人。该文档包括以下OpenStack的组件:

Glance (镜像服务)

Keystone (认证服务)

Nova (计算服务)

Horizon (OpenStack界面与web用户界面)

Quantum (网络服务)

Cinder  (块存储服务)

Swift   (对象存储服务)


2.高可用性简介


   大多数OpenStack部署是从评估环境到高度可用和高度可扩展性环境中逐渐成熟来支持产品应用和服务的。通过

提供OpenStack部署的active/active、高度可扩展的模型,使得思科的OpenStack的高可用性指南不同于其他OpenStack

高可用性指南。该架构由以下几部分组成,通常用于为openstack服务提供高可用性:

   MySQL Galera是一种针对MYSQL/InnoDB数据库的同步多主机集群技术,它的特征如下:

同步响应

active/active 多主机集群拓扑

任意节点读写

真正的平行反应,行级

客户端直接连接,外观和用户体验同本地MySQL

没有从节点滞后和完整性问题

一些openstack服务利用消息队列在组件之间发送和接收消息,思科引用的架构使用RabbitMQ的消息系统,因为

RabbitMQ是在OpenStack组件里使用广泛。RabbitMQ的的集群和RabbitMQ镜像队列为OpenStack服务提供active/active,

高度可扩展的消息队列。

RabbitMQ Clustering:即RabbitMQ集群,如果你的RabbitMQ代理由单个节点组成,那么该节点的故障就会导致

down机,暂时不能提供服务,并且很有可能丢失信息。可以使用RabbitMQ的多个节点的集群来构造Rabb

-itMQ代理。就所有的服务的可用性而言,当丢失个别节点之后,RabbitMQ集群是有弹性的(能够复原的)

。为了可靠性和可扩展性,Rabbit代理操作需要的所有数据/状态需要在所有节点上进行复制(备份)。

一个特例是消息队列,它们默认存在于创建该消息队列的节点,尽管它们对于所有节点都是可见和可

到达的。

RabbitMQ Mirrored Queues:即RabbitMQ镜像队列,虽然交换和监听能让系统从单个节点的丢失中幸存,但消息

队列和它们的消息不能幸存,这是因为队列和它们的内容都驻留在一个确切的节点上,如此一来单

个节点的丢失就会导致其队列不可用。为了解决这些问题,RabbitMQ为消息队列开发了active/active 高

可用。这项工作通过允许队列在RabbitMQ集群的其他节点上进行镜像备份实现,这样的结果应该是集群中

的一个节点故障了,该队列可以自动地切换到其他镜像中的一个镜像继续操作,不会出现服务不可用。

这种解决方案仍然需要一个RabbitMQ集群,这意味着它不能成功地应对无缝隙切换因为网络分裂的原

因,也正是这个原因,不推荐通过WAN使用(尽管这样,客户端仍然可以根据实际需要从或近或远的地

方连接)。

HAProxy和Keepalived提供客户端和Openstack API端点之间的负载均衡。

HAProxy 是一个免费的,快捷和可以信赖的软件解决方案,它提供高可用、负载均衡、基于TCP和基于HTTP

的应用的代理。HAProxy执行事件驱动和支持高并发连接的单进程模块。

Keepalived 是一个用C写的路由软件,Keepalived的主要目标是为linux系统和基于linux的其他系统提供简单、

强健的用于负载均衡和高可用的工具。负载均衡架构依赖于广泛使用的linux虚拟服务器(IPVS)内核模

块提供的layer4(传输层)负载均衡。Keepalived使用一套检查机制去动态地和自适应地维护和管理负载均衡

服务器池根据服务器的健康程度。另一方面,高可用可以通过VRRP协议实现,VRRP是路由器中用于故障

切换的一个基本模块。

多重Quantum和DHCP代理设计:它指出,允许通过多个L3(网络层)的Quantum和DHCP代理来达到高可用和高扩

   展的目的。当前(Grizzly 发行版),多个DHCP代理可以服务一个Quantum网络,然而,同一时间里一个L3代理

仅仅只能服务一个Quantum网络,所以,L3代理存在的是单点故障,并且没有包含在思科的高可用部署指

南里。Quantum提供网络扩展常常被用于从物理数据中心网络到Quantum网络的映射。 在这种部署模型里,

Quantum依赖于物理数据中心提供L3的高可用而不是L3代理机构。

Glance 使用Swift作为后端去存储Openstack镜像。正如其余的OpenStack的API,HAProxy和Keepalived 给Glance 的API

和记录节端点。

Swift:大量的Swift代理节点常常用于给Swift代理服务提供高可用,Replication为存储在Swift对象-存储系统中的

数据提供高可用。Replication比较本地数据和远程的每个副本以确保所有数据都是最新的版本。面向对象

复制使用哈希表去快速比较每个partition(分区)的子段,container replication和account replication使用hash

和共享的高水位线(high water marks)进行文件版本的比较。


3.依赖关系


 3.1关键提醒

最常见的OpenStack的HA部署问题是配置文件不正确或没有以正确的顺序部署节点,为了减少你以后排除故障

的步骤,确保你部署的节点都是按照文档中的顺序进行的,同时验证所有配置文件的正确性。你很有可能在

安装中使用你自己的IP地址和密码,保证你能够理解该指南中与之相应的任何变化都是非常重要的。


不要在Swift存储节点的硬盘上配置RAID,Swift在没有DAID的时候性能更好而且磁盘冗余不是必须的,因为Swift

可以通过replication保护数据。因此,如果一个RAID控制器管理磁盘,必须保证你目前的每个磁盘都是独立的。

我们的例子使用磁盘/dev/sda安装操作系统,使用磁盘/dev/sdb-/dev/sdf 作为Swift storage。请记住根据你部署

环境的特征修改这些路径。Swift的详细信息和修改信息可以在这里找到(http://docs.openstack.org/admin-guid

e-cloud/content/considerations-and-tuning.html)。


计算节点运行Cinder Volume给实例提供块存储服务,Cinder的默认驱动(volume_driver=nova.volume.driver.ISCSI

Driver)是一个利用linux逻辑卷管理器(LVM)的ISCSI解决方案。因此,你必须创建一个LVM卷组在ubuntu的正常安

装过程中或在安装结束之后。这个逻辑卷组的名字必须和文件cinder.conf中定义的volume_group一致。我们的例

子使用nova-volumes作为该逻辑卷组的名字,相对应的cinder.conf文件中的volume_group的名字也是nova-volumes.


在我们的例子中使用的密码是keystone_admin。每个account、service和配置文件都使用这个密码。在你的安

装过程当中你将会想修改这个密码,并且如果这个系统将要用于产品你就必须使用强密码和为每个account/

service使用不同的密码。


3.2操作系统
     安装过程使用的操作系统是Ubuntu 12.04 LTS(precise),precise是ubuntu的版本号,就是12.04。

3.2服务器要求

我们的部署使用了13个思科UCS C-系列服务器去来作为Controller,Compute,Load-Balancer和Swift Proxy/Storage。

这种环境是可以线性扩展的,因此个别节点可以被添加进来为任何特别的Openstack服务增加所需的容量。有五种

不同种类的节点在该文档中:

3个Controller节点,运行NOva API,Nova Conductor,Nova Consoleauth,Nova Novncproxy, Nova Scheduler,NoVNC,

Quantum server,Quantum OVS插件,Glance API/Registry,Keystone,Cinder API,Scheduler, OpenStack Dashboard, 

RabbitMQ Server, MySQL Server WSREP 和 Galera。

       提供openstack环境管理功能。

3个Compute节点,运行Nova Compute,Quantum OVS 和 DHCP agent,Cinder Volume和TGT service。

       在运行Nova 实例(虚拟机)和当前LVM卷时为Cinder 块存储提供系统管理程序。

2个Load-Balancer节点,运行HAproxy 和 Keepalived,为通过Controller和Swift Procy集群的通信进行负载均衡。

2个Swift Proxy节点 这些代理节点负责把Swift对象存储系统中的用户和用户的数据捆绑在一起。对每个请求,

代理节点将会在Swift 的ring 中查询account, container 或 object的位置然后相应地路由转发请求。公有

的API也会被代理节点暴露。

3个Swift Storage节点,每个Storage节点包含object服务, container服务和account 服务。在非常高的级别里,

   有的服务器包含用户数据并且相互执行响应以保持系统的一致状态。


 3.4组网需求

OpenStack 高可用 环境中使用了5个独立的网络,其中三个网络供租户使用。三个租户网络被使用作为一个

例子,这样一来租户网络可以被增加或减少基于你的部署需求。租户内的连接使用带有Open vSwitch(OVS)插件

的Quantum和Provider Network Extensions(详见:http://docs.openstack.org/trunk/openstack-network/admin/content/pro

vider_networks.html)。Provider Network Extensions允许云管理者创建Openstack网络直接映射到位于数据中心的

物理网络,同时支持本地、VLAN和GRE部署模型。我们的例子使用VLAN网络模型,这个网络的详细描述如下:

1个管理网络

这个网络别用于对节点执行管理功能。比如,通过SSH连接到节点去更改一个配置设置。这个网络通过使

用UCS服务器提供的CIMC界面来进行lights-out管理。最后,Openstack的API和Horizon web dashboard和这个

网络是相互联系的。

   这个网络中的每个节点都必须要有一个IP地址,如果像CIMC一样使用light-out管理,每个节点将会需要

这个网络中的两个地址。

这个网络通常是私有的。

3个租户网络

这些网络常常被用于提供到实例的连接。由于Quantum Provider Network Extensions正在被使用,所以让

租户直接进入一个能接入到Internet的“公有”网络是常见的。

           Compute节点将会有一个连到这种网络的界面,由于附加到这种网络的计算节点界面是被OVS管理的,所

以它们不应该包含一个IP地址。

这种网络通常采用公开路由IP寻址,如果外部的NAT没有被上游的网络边缘所使用。(注:本文中对应所有界面

的IP寻址由各种各样的私有寻址块产生。)

   1个存储网络

这个网络常用于提供Swift Proxy和Storage节点之间的单独连接,这确保了存储通信不被实例通信所干扰。

这个网络通常采用私有IP寻址。

   图1 是用来帮助进行可视化网络部署和本文档中配置步骤的补充。我们强烈建议打印图片以便可以很方便

地在整个安装过程中引用。

图1:Openstack HA 网络设计细节

   图片网址:http://docwiki.cisco.com/wiki/File:Grizzly-ha-network-design-details-v1.0.png



其他网络服务

DNS:在此设置的DNS服务器(192.168.26.186)用于OpenStack节点的名字解析。如果DNS没有被使用,在所有节点的

/etc/hosts文件里应该包含以下所有节点: 

127.0.0.1 localhost

192.168.220.40  control.dmz-pod2.labcontrol

192.168.220.41  control01.dmz-pod2.lab       control01

192.168.220.42  control02.dmz-pod2.lab  control02

192.168.220.43  control03.dmz-pod2.lab  control03

192.168.220.60  swiftproxy.dmz-pod2.lab       swiftproxy

192.168.220.61  swiftproxy01.dmz-pod2.lab   swiftproxy01

192.168.220.62  swiftproxy02.dmz-pod2.lab   swiftproxy02

192.168.220.51  compute01.dmz-pod2.lab          compute01

192.168.220.52  compute02.dmz-pod2.lab          compute02

192.168.220.53  compute03.dmz-pod2.lab          compute03


NTP:在这步设置中,外部的NTP服务器用于时间同步。

Physical Network Switches: 在该步设置中,每个节点物理连接到Cisco Nexus交换机作为一个顶级架构层接入设备。

在连接到每个节点的eth0网卡的接口上配置中继。

 

注意:上游的 routers/aggregation交换机很有可能被L3的VWLAN接口终止。如果这些接口以第一跳冗余协议比如

HSRP或VRRP规定的冗余方式部署,那么你应该小心分配到L3的交换机/路由器的IP地址,因为它们可能和

Quantum路由器公共子网的IP地址(默认为.3)冲突。例如,如果你使用HSRP并且用.1作为备用地址,.2作为第

一个L3交换机IP,.3作为第二个L3交换机IP,你将会收到第二个L3交换机的IP地址重复错误。这个问题可以通

过在上游L3设备设置高阶IP或在创建的时候修改Quantum子网的配置得到1个起始范围高于正在使用的物理

交换机/路由器IP的IP(即从.4或更大) 来解决。我们的例子使用的IP地址范围从.10开始分配以避免这个

问题。

 
4.安装

节点的安装应该按照下面的顺序:

   1.Load-Balancer Nodes节点:slb01,slib02

2.Swift Storage节点:swift01,swift02,swift03

3.Swift Proxy节点:swiftproxy01,swiftproxy02,swiftproxy03

4.Controller节点:control01,control02

5.Compute节点:compute01.compute02,compute03


4.1所有节点的通用安装步骤


4.1.1 Ubuntu12.04的安装

Ubuntu Precise 12.04(AMD64位)的安装可以从CD/镜像文件安装或自动安装(即快速安装)。如果你不熟悉

Ubuntu precise的安装,你可以参考建立节点指南(http://docwiki.cisco.com/wiki/OpenStack:Essex_Build_Node#S

tarting_the_Ubuntu_Installation)中的第四节。使用下面Networking部分为你的每个节点去正确地配置网络适

配器。正如前面的关键提醒部分所提及的一样,确保为Compute节点创建一个名为nova-volumes的LVM卷组,不要

配置Swift Storage节点。最后,选择SSH服务器作为唯一的补充软件包在Ubuntu Precise的安装过程中。

4.1.2Grizzly 软件包

Canonical的 Ubuntu Cloud Archive(https://wiki.ubuntu.com/ServerTeam/CloudArchive)允许用户在Ubuntu 12.04

LTS 服务器版上安装较新版本的OPenStack(和依赖包),因为它们在Ubuntu LTS的后续发布版本上仍然能够使用。

Canonical承诺至少在Ubuntu发布后18个月内,在Ubuntu server 12.04LTS的Ubuntu Cloud Archive里维护和支持Open

stack发布的新版本。Ubuntu Cloud Archive文件应该被用于所有的OpenStack节点(即不需要负载均衡节点)。

   在整个安装过程中使用sudo模式或root账户:

           sudo su

添加cloud archive的gpg密钥到你的Ubuntu-keyring:

   apt-get install ubuntu-cloud-keyring

启用Ubuntu Cloud Archive仓库通过添加下述内容到/etc/apt/sources.list.d/grizzly.list:

deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/grizzly main

更新你的系统:

apt-get update && apt-get upgrade

4.1.3Networking

我们使用VLAN实现分隔某些网络,确保VLAN包已经安装和你的网络交换机已经配置VLAN。否则,只能通过

物理接口复制网络设置:

apt-get install vlan -y

负载均衡节点slb01 /etc/network/interfaces:

# The loopback network interface

auto lo

iface lo inet loopback



# The primary network interface

auto eth0

iface eth0 inet static

address 192.168.220.81

netmask 255.255.255.0

network 192.168.220.0

broadcast 192.168.220.255

gateway 192.168.220.1

# dns-* options are implemented by the resolvconf package, if installed

dns-nameservers 192.168.220.254

dns-search dmz-pod2.lab

负载均衡节点slb02 /etc/network/interfaces:

   # The loopback network interface

auto lo

iface lo inet loopback



# The primary network interface

auto eth0

iface eth0 inet static

address 192.168.220.82

netmask 255.255.255.0

network 192.168.220.0

broadcast 192.168.220.255

gateway 192.168.220.1

# dns-* options are implemented by the resolvconf package, if installed

dns-nameservers 192.168.220.254

dns-search dmz-pod2.lab

存储节点 swift01 /etc/network/interfaces:

# The loopback network interface

auto lo

iface lo inet loopback



# Management Network

auto eth0

iface eth0 inet static

address 192.168.220.71

netmask 255.255.255.0

network 192.168.220.0

broadcast 192.168.220.255

gateway 192.168.220.1

dns-search dmz-pod2.lab

dns-nameservers 192.168.220.254





# Storage Network

auto eth0.222

iface eth0.222 inet static

address 192.168.222.71

netmask 255.255.255.0

存储节点 swift02 /etc/network/interfaces:

# The loopback network interface

auto lo

iface lo inet loopback



# Management Network

auto eth0

iface eth0 inet static

address 192.168.220.72

netmask 255.255.255.0

network 192.168.220.0

broadcast 192.168.220.255

gateway 192.168.220.1

dns-search dmz-pod2.lab

dns-nameservers 192.168.220.254





# Storage Network

auto eth0.222

iface eth0.222 inet static

address 192.168.222.72

netmask 255.255.255.0

存储节点 swift03 /etc/network/interfaces:

# The loopback network interface

auto lo

iface lo inet loopback



# Management Network

auto eth0

iface eth0 inet static

address 192.168.220.73

netmask 255.255.255.0

network 192.168.220.0

broadcast 192.168.220.255

gateway 192.168.220.1

dns-search dmz-pod2.lab

dns-nameservers 192.168.220.254




# Storage Network

auto eth0.222

iface eth0.222 inet static

address 192.168.222.73

netmask 255.255.255.0

代理节点 swiftproxy01 /etc/network/interfaces:

# The loopback network interface

auto lo

iface lo inet loopback



# Management Network

auto eth0

iface eth0 inet static

address 192.168.220.61

netmask 255.255.255.0

network 192.168.220.0

broadcast 192.168.220.255

gateway 192.168.220.1

dns-search dmz-pod2.lab

dns-nameservers 192.168.220.254



# Storage Network

auto eth0.222

iface eth0.222 inet static

address 192.168.222.61

netmask 255.255.255.0

代理节点 swiftproxy02 /etc/network/interfaces:

# The loopback network interface

auto lo

iface lo inet loopback



# Management Network

auto eth0

iface eth0 inet static

address 192.168.220.62

network 192.168.220.0

netmask 255.255.255.0

broadcast 192.168.220.255

gateway 192.168.220.1

dns-search dmz-pod2.lab

dns-nameservers 192.168.220.254



# Storage Network

auto eth0.222

iface eth0.222 inet static

address 192.168.222.62

netmask 255.255.255.0

控制节点 control01 /etc/network/interfaces:

# The loopback network interface

auto lo

iface lo inet loopback



# The primary network interface

auto eth0

iface eth0 inet static

address 192.168.220.41

netmask 255.255.255.0

network 192.168.220.0

broadcast 192.168.220.255

gateway 192.168.220.1

# dns-* options are implemented by the resolvconf package, if installed

dns-nameservers 192.168.220.254

dns-search dmz-pod2.lab

控制节点 control02 /etc/network/interfaces:

# The loopback network interface

auto lo

iface lo inet loopback



# The primary network interface

auto eth0

iface eth0 inet static

address 192.168.220.42

netmask 255.255.255.0

network 192.168.220.0

broadcast 192.168.220.255

gateway 192.168.220.1

# dns-* options are implemented by the resolvconf package, if installed

dns-nameservers 192.168.220.254

dns-search dmz-pod2.lab

控制节点 control03 /etc/network/interfaces:

# The loopback network interface

auto lo

iface lo inet loopback



# The primary network interface

auto eth0

iface eth0 inet static

address 192.168.220.43

netmask 255.255.255.0

network 192.168.220.0

broadcast 192.168.220.255

gateway 192.168.220.1

# dns-* options are implemented by the resolvconf package, if installed

dns-nameservers 192.168.220.254

dns-search dmz-pod2.lab

计算节点 compute01 /etc/network/interfaces:

# The loopback network interface

auto lo

iface lo inet loopback



# The primary network interface

auto eth0

iface eth0 inet static

address 192.168.220.51

netmask 255.255.255.0

network 192.168.220.0

broadcast 192.168.220.255

gateway 192.168.220.1

# dns-* options are implemented by the resolvconf package, if installed

dns-nameservers 192.168.220.254

dns-search dmz-pod2.lab



# Public Network: Bridged Interface

auto eth1

iface eth1 inet manual

up ifconfig $IFACE 0.0.0.0 up

up ip link set $IFACE promisc on

down ifconfig $IFACE 0.0.0.0 down

计算节点 compute02 /etc/network/interfaces:

# The loopback network interface

auto lo

iface lo inet loopback



# The primary network interface

auto eth0

iface eth0 inet static

address 192.168.220.52

netmask 255.255.255.0

network 192.168.220.0

broadcast 192.168.220.255

gateway 192.168.220.1

# dns-* options are implemented by the resolvconf package, if installed

dns-nameservers 192.168.220.254

dns-search dmz-pod2.lab



# Public Network: Bridged Interface

auto eth1

iface eth1 inet manual

up ifconfig $IFACE 0.0.0.0 up

up ip link set $IFACE promisc on

down ifconfig $IFACE 0.0.0.0 down

计算节点 compute03 /etc/network/interfaces:

# The loopback network interface

auto lo

iface lo inet loopback



# The primary network interface

auto eth0

iface eth0 inet static

address 192.168.220.53

netmask 255.255.255.0

network 192.168.220.0

broadcast 192.168.220.255

gateway 192.168.220.1

# dns-* options are implemented by the resolvconf package, if installed

dns-nameservers 192.168.220.254

dns-search dmz-pod2.lab



# Public Network: Bridged Interface

auto eth1

iface eth1 inet manual

up ifconfig $IFACE 0.0.0.0 up

up ip link set $IFACE promisc on

down ifconfig $IFACE 0.0.0.0 down

重启网络:

/etc/init.d/networking restart

 

(个人水平有限,错误在所难免,转载请注明出处:http://blog.csdn.net/bangbanglovetting

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值