OpenstackHA部署v10.docx
- 文档编号:4164521
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:42
- 大小:1.09MB
OpenstackHA部署v10.docx
《OpenstackHA部署v10.docx》由会员分享,可在线阅读,更多相关《OpenstackHA部署v10.docx(42页珍藏版)》请在冰豆网上搜索。
OpenstackHA部署v10
OpenstackHA部署
编写人:
王川
编写时间:
2014-00-00
部门名:
审核人:
审核时间:
编号
章节
修订内容
日期
版本号
修订人
批准人
1
创建
2014-00-00
v1.0
王川
修订页
1Openstack部署方式简介3
2Openstack组件关系4
3Openstack集群高可用策略6
4Openstack各组件部署7
4.1nova-api和nova-scheduler的高可靠性7
4.2nova-network的高可靠性7
4.3通过DRBD+Pacemaker+Corosync实现高可用的部署8
4.3.1DRBD简介8
4.3.2Pacemaker、Corosync简介10
4.3.3安装配置corosync14
4.3.4安装配置pacemaker20
4.3.5安装配置DRBD25
4.3.6Mysql高可用30
4.3.7RabbitMq高可用34
4.3.8Keystone组成和原理39
4.3.9Keystone和Glance高可用配置46
4.4虚拟机实例备份和恢复50
4.5快照的备份与恢复56
4.6镜像制作57
5未完待续62
1Openstack部署方式简介
Openstack在部署的时候分为控制节ControlNode和计算节点ComputeNode两种不同功能的节点。
控制节点提供除nova-compute以外的服务。
控制节点的这些组件和服务都是可以独立安装的,可以选择组合。
在原始的openstack安装部署方案中,控制节点ControlNode只有1个,且负责整个系统的管理和控制,当控制节点故障不能提供正常服务时,控制节点维护或者升级时,会出现单节点故障,控制节点的高可靠性是主要问题。
对于openstack控制节点单点问题,通用并经济解决的方案一般是通过软件实现热备(PS:
通过硬件冗余设备也可以实现高可用,但是存在冗余设备本身也有单点故障、对于目前的这个项目来说不经济等问题)
openstack高可用常见的部署模式有:
●Active-Passive主备模式:
在目前项目中我们采用此方案进行部署,原因是方案成熟
●Active-Active双主动模式:
目前暂时不用此方案,研究透彻后在下一版本中考虑使用
●集群模式:
openstack的一些组件和服务采用此模式,与Active-passive主备模式相互配合
2Openstack组件关系
我们目前使用的OpenStackE版由5大组件组成:
●计算nova
nova是计算、控制、网络、存储的核心组件又包括:
⏹nova-compute服务
⏹nova-network服务
⏹nova-api服务
⏹nova-scheduler服务
⏹nova-volum服务(目前这个项目中我们没有用到此服务)
●身份管理keystone
●镜像管理glance
●前端管理dashboard
●对象存储swift(在目前的这个版本中方案中由于镜像的存储量不大,所以我们没有用到swift)
openstack运行时架构,组件之间的系统内部交互图:
3Openstack集群高可用策略
构建高可用性的OpenStack(High-availabilityOpenStack),也就是建立冗余备份,常用策略有:
●集群工作模式。
多机互备,这样模式是把每个实例备份多份,没有中心节点,比如分布式对象存储系统Swift、nova-network多主机模式。
●自主模式。
有时候,解决单点故障(SPoF)可以简单的使用每个节点自主工作,通过去主从关系来减少主控节点失效带来的问题,比如nova-api只负责自己所在节点。
●主备模式。
常见的模式active-passive,被动节点处于监听和备份模式,故障时及时切换,比如mysql高可用集群、glance、keystone使用Pacemaker和Heartbeat等来实现。
●双主模式。
这种模式互备互援,RabbitMQ就是active-active集群高可用性,集群中的节点可进行队列的复制。
从架构上来说,这样就不用担心passive节点不能启动或者延迟太大了。
我们采用active-passive模式,Openstack的控制节点的热备部署实际上就是对控制节点上的各种服务各自实现这种备份、监听和切换。
通过使用Pacemaker+Corosync方案进行备份,通过故障转移来实现高可靠性。
控制节点提供的服务,也就是需要热备的服务如下,这些服务是分开提供的。
nova-api、nova-network、glance等可以分别在每个计算节点上工作,RabbitMQ可以工作在主备模式,mysql可以使用冗余的高可用集群
●nova-api
●nova-network
●nova-schedule
●nova-volume
●glance
●keysonte
●mysql
●rabbitmq
4Openstack各组件部署
4.1nova-api和nova-scheduler的高可靠性
每个计算节点可以运行自己的nova-api和nova-scheduler,提供负载均衡来保证这样正确工作。
这样当控制节点出现故障,计算节点的nova-api等服务都照常进行。
在计算节点同样安装nova-api组件和nova-scheduler组件
4.2nova-network的高可靠性
OpenStack的网络已经存在多种高可靠的方案,目前流行的最佳的解决方案是使用openstack本身支持的功能Multihost多主机方案。
即在每个计算节点上部署novanetwork,然后再/etc/nova/nova.conf配置文件中设置--multi_host=true选项就可以让网络服务处于高可用模式(highavailabilitymode),这样每个计算节点为⾃⼰主机上的虚拟机负责,为每个计算节点创建网桥并为网桥指定不同的IP(从fixed_ip中取)作为虚拟机网关,在每个主机起DHCP服务,同时要求
每个计算节点至少两个物理网卡,每个计算节点负责自己的虚拟机与外网的通信
4.3通过DRBD+Pacemaker+Corosync实现高可用的部署
4.3.1DRBD简介
DRBD(DistributedReplicatedBlockDevice)是一种块设备,可以被用于高可用(HA)之中.它类似于一个网络RAID-1功能.当你将数据写入本地文件系统时,数据还将会被发送到网络中另一台主机上.以相同的形式记录在一个文件系统中.本地(主节点)与远程主机(备节点)的数据可以保证实时同步.当本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用.
在高可用(HA)中使用DRBD功能,可以代替使用一个共享盘阵.因为数据同时存在于本地主机和远程主机上,切换时,远程主机只要使用它上面的那份备份数据,就可以继续进行服务了.
●DRBD是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。
数据镜像:
实时、透明、同步(所有服务器都成功后返回)、异步(本地服务器成功后返回)
●DRBD负责接收数据,把数据写到本地磁盘,然后发送给另一个主机。
另一个主机再将数据存到自己的磁盘中。
其他所需的组件有集群成员服
●DRBD是由内核模块和相关脚本而构成,用以构建高可用性的集群。
其实现方式是通过网络来镜像整个设备。
您可以把它看作是一种网络RAID。
原理图:
通过DRBD构架mysql数据库高可用架构图:
4.3.2Pacemaker、Corosync简介
Pacemaker是一个集群资源管理者。
他用资源级别的监测和恢复来保证集群服务(aka.资源)的最大可用性。
它可以用你所擅长的基础组件(Corosync或者是Heartbeat)来实现通信和关系管理。
Pacemaker包含以下的关键特性:
●监测并恢复节点和服务级别的故障
●存储无关,并不需要共享存储
●资源无关,任何能用脚本控制的资源都可以作为服务
●支持使用STONITH来保证数据一致性。
●支持大型或者小型的集群
●clusters支持quorate(法定人数)或resource(资源)驱动的集群
●支持任何的冗余配置
●自动同步各个节点的配置文件
●可以设定集群范围内的ordering,colocationandanti-colocation
●支持高级的服务模式
⏹Clones:
为那些要在多个节点运行的服务所准备的
⏹Multi-state:
为那些有多种模式的服务准备的。
(比如.主从,主备)
●统一的,可脚本控制的clustershell
Corosync主要负责不同节点之间的通信,它使用集群协议(Totem),通过UDP完成通信(端口5405,如果使用防火墙,请注意开放此端口),它默认工作在多播模式下,1.4.2以后版本也支持单播模式.Pacemaker使用Corosync作为信息服务,Corosync不是唯一可以用用来作为Pacemaker通信的软件,heartbeat也是一个。
通用的使用Pacemaker和Corosync的双节点主备方案构建Active/Passive冗余,架构图如下:
在本案中我们使用的集群软件来构建openstack的一些核心组件高可用,架构图如下:
Openstack的组件Mysql、RabbitMq、Keystone、Glance等通过DRBD+Pacemaker+Corosync实现高可用之后都是通过Pacemaker+Corosync提供生成虚拟ip(VIP)对外提供服务,各个组件集群可以生成自己的vip。
如下图所示:
4.3.3安装配置corosync
●安装corosync
#apt-getinstallcorosync
●修改/etc/default/corosyncSTART=yes
●进入主配置文件目录
[root@controlmaster~]#cd/etc/corosync/
[root@controlmastercorosync]#ls
corosync.conf.examplecorosync.conf.example.udpuservice.duidgid.d
[root@controlmastercorosync]#cpcorosync.conf.examplecorosync.conf
[root@controlmastercorosync]#vimcorosync.conf
主备节点都要做下面配置,配置文件corosync.conf内容如下:
#Pleasereadthecorosync.conf.5manualpage
compatibility:
whitetank
totem{
version:
2##版本号,只能是2,不能修改
secauth:
on##安全认证,当使用aisexec时,会非常消耗CPU
threads:
2##线程数,根据CPU个数和核心数确定
interface{##心跳用的NIC,可以设置为多个
ringnumber:
0##冗余环号,节点有多个网卡是可定义对应网卡在一个环内
bindnetaddr:
192.168.8.0##绑定心跳网段,并非内网NIC的IP,而是网络地址
mcastaddr:
226.94.8.8##心跳组播地址
mcastport:
5405##心跳组播端口,多个pacemaker网卡用同样LAN,可变端口号
ttl:
1
}
}
logging{
fileline:
off##指定要打印的行
to_stderr:
no##是否发送到标准错误输出
to_logfile:
yes##记录到文件
to_syslog:
no##记录到syslog
logfile:
/var/log/cluster/corosync.log##日志文件目录如没有手动创建/var/log/cluster/
debug:
off
timestamp:
on##是否打印时间戳,利于定位错误,但会消耗CPU
logger_subsys{
subsys:
AMF
debug:
off
}
}
service{
ver:
0
name:
pacemaker##定义corosync启动时同时启动pacemaker
#use_mgmtd:
yes
}
aisexec{
user:
root
group:
root
}
amf{
mode:
disabled
}
interface字段主要有以下几个参数:
1.ringnumber:
interface的ringnumber,用于区分不同的心跳,必须从0开始
2.bindnetaddr:
绑定的网络地址,经常以0结尾,也可以使用IPV6地址。
例如,如果本地心跳为192.168.5.92,子网255.255.255.0,则设置bindnetaddr为192.168.5.0;如果本地心跳为192.168.5.92,子网255.255.255.192,则设置bindnetaddr为192.168.5.64。
3.mcastport:
UDP端口号
4.broadcast:
该字段可选,设为YES时表示将使用广播地址,如果设为该选项,则可以不设mcastaddr字段
5.mcastaddr:
多播地址,不允许使用224.x.x.x之类的地址。
也可以使用IPV6地址。
●启动corosync主备节点都需要启动
[root@controlmastercorosync]#servicecorosyncstart
StartingCorosyncClusterEngine(corosync):
[确定]
[root@controlslavecorosync]#servicecorosyncstart
StartingCorosyncClusterEngine(corosync):
[确定]
●检查启动情况
查看corosync引擎是否正常启动:
[root@controlmastercorosync]#grep-e"CorosyncClusterEngine"-e"configurationfile"/var/log/messages
Oct1919:
21:
21controlmastercorosync[2360]:
[MAIN]CorosyncClusterEngine('1.4.1'):
startedandreadytoprovideservice.
Oct1919:
21:
21controlmastercorosync[2360]:
[MAIN]Successfullyreadmainconfigurationfile'/etc/corosync/corosync.conf'.
查看初始化成员节点通知是否正常发出:
[root@controlmastercorosync]#grepTOTEM/var/log/messages
Oct1919:
21:
21controlmastercorosync[2360]:
[TOTEM]Initializingtransport(UDP/IPMulticast).
Oct1919:
21:
21controlmastercorosync[2360]:
[TOTEM]Initializingtransmit/receivesecurity:
libtomcryptSOBER128/SHA1HMAC(mode0).
Oct1919:
21:
22controlmastercorosync[2360]:
[TOTEM]Thenetworkinterface[192.168.8.101]isnowup.
Oct1919:
21:
23controlmastercorosync[2360]:
[TOTEM]Processpausedetectedfor1264ms,flushingmembershipmessages.
Oct1919:
21:
23controlmastercorosync[2360]:
[TOTEM]Aprocessorjoinedorleftthemembershipandanewmembershipwasformed.
检查启动过程中是否有错误产生:
[root@controlmastercorosync]#grepERROR:
/var/log/messages|grep-vunpack_resources
Oct1919:
21:
22controlmastercorosync[2360]:
[pcmk]ERROR:
process_ais_conf:
YouhaveconfiguredaclusterusingthePacemakerpluginforCorosync.Thepluginisnotsupportedinthisenvironmentandwillberemovedverysoon.
Oct1919:
21:
22controlmastercorosync[2360]:
[pcmk]ERROR:
process_ais_conf:
PleaseseeChapter8of'ClustersfromScratch'(http:
//www.clusterlabs.org/doc)fordetailsonusingPacemakerwithCMAN
查看pacemaker是否正常启动:
[root@controlmastercorosync]#greppcmk_startup/var/log/messages
Oct1919:
21:
22controlmastercorosync[2360]:
[pcmk]info:
pcmk_startup:
CRM:
Initialized
Oct1919:
21:
22controlmastercorosync[2360]:
[pcmk]Logging:
Initializedpcmk_startup
Oct1919:
21:
22controlmastercorosync[2360]:
[pcmk]info:
pcmk_startup:
Maximumcorefilesizeis:
18446744073709551615
Oct1919:
21:
23controlmastercorosync[2360]:
[pcmk]info:
pcmk_startup:
Service:
9
Oct1919:
21:
23controlmastercorosync[2360]:
[pcmk]info:
pcmk_startup:
Localhostname:
●重启机器
shutdown–r0
●启动服务
/etc/init.d/corosyncstart
●检查是否一切正常
#corosync-cfgtool–s
●检查集群节点和人数
#corosync-quorumtool-l
4.3.4安装配置pacemaker
●安装pacemaker
#apt-getinstallpacemaker
●启动servicepacemakerstart
现在检查它是否识别出我们的集群:
#crm_mon-1
●因为这是两个主机的安装,你还需要禁用人数,由于splitbrain,因此要禁用人数检查:
#crmconfigurepropertyno-quorum-policy=ignore
●在这之后还可以禁用STONITH,如果不需要的话:
#crmconfigurepropertystonith-enabled=false
●设置基本集群属性
crmconfigureshow显示配置文件
crmconfigureedit修改成如下所示:
双节点集群应该忽略quorum机制
因为这是两个主机的安装,你还需要禁用人数,由于splitbrain,因此要禁用人数检查:
#crmconfigurepropertyno-quorum-policy=ignore
propertyno-quorum-policy="ignore"\#
pe-warn-series-max="1000"\#
pe-input-series-max="1000"\
pe-error-series-max="1000"\
cluster-recheck-interval="5min"
※no-quorum-policy=ignore当只有两个节点时需要设置。
两节点以上时不要进行设置。
※pe-warn-series-max,pe-input-series-maxandpe-errorseries-max设定为1000,可以保存更多的历史纪录。
※将集群的检查期间cluster-recheck-interval设置为5分钟。
●修改之后crmconfigurecommit提交
●crmsh基本介绍
[root@node1~]#crm<--进入crmsh
crm(live)#help##查看帮助
一些属性的解释
cibmanageshadowCIBs##CIB管理模块
resourceresourcesmanagement##资源管理模块
configureCRMclusterconfiguration##CRM配置,包含资源粘性、资源类型、资源约束等
nodenodesmanagement##节点管理
optionsuserpreferences##用户偏好
historyCRMclusterhistory##CRM历史
siteGeo-clustersupport##地理集群支持
raresourceagentsinformationcenter##资源代理配置
s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OpenstackHA 部署 v10