一.概念介绍
HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。它与被认为是不间断操作的容错技术有所不同。HA系统是目前企业防止核心计算机系统因故障停机的最有效手段。
高可用性(High Availability)提供了一种最小化网络中由于单点故障而带来的风险的方法。例如对于部署防火墙的企业,从网络安全方面考虑,所有进出信息流都必须经过防火墙。这时防火墙就是一个单点故障。对于很多企业来说,长时间的服务中断(或许就几分钟)是不可接受的,这就引入了高可用性的需求。随着网络应用的增多和服务实时性需求的增加,用户对高可用性的需求也越来越强。作为网络中单点故障设备,防火墙有必要提供高可用性解决方案。
Cluster manager 简称CMAN,是一个分布式集群管理工具,运行在集群的各个节点上,为RHCS提供集群管理任务。它用于管理集群成员、消息和通知。它通过监控每个节点的运行状态来了解节点成员之间的有关系。当集群中某个节点出现故障时,节点成员关系将发生改变,CMAN及时将这种改变通知底层,进而做出相应的调整。
CMAN根据每个节点的运行状态,统计出一个法定节点数,作为集群是否存活的依据。当整个集群中有多于一半的节点处于激活状态时,表示达到了法定节点 数,此集群可以正常运行,当集群中有一半或少于一半的节点处于激活状态时,表示没有达到法定的节点数,此时整个集群系统将变得不可用。CMAN依赖于CCS,并且CMAN通过CCS读取cluster.conf文件。
rgmanager主要用来监督、启动、停止集群的应用、服务和资源。当一个节点的服务失败时,高可用集群服务管理进程可以将服务从这个失败节点转移至其点健康节点上,这种服务转移能力是自动动,透明的。RHCS通过rgmanager来管理集群服务,rgmanager运行在每个集群节点上,在服务器上对应的进程为clurgmgrd。
在RHCS集群中,高可用生服务包括集群服务和集群资源两个方面。集群服务其实就是应用,如APACHE,MYSQL等。集群资源有IP地址,脚本,EXT3/GFS文件系统等。
在RHCS集群中,高可用性服务是和一个失败转移域结合在一起的。由几个节点负责一个特定的服务的集合叫失败转移域,在失败迁移域中可以设置节点的优先级,主节点失效,服务会迁移至次节点,如果没有设置优先,集群高可用服务将在任意节点间转移。
集群系统的主要优点:
1.高可扩展性:
2.高可用性HA:集群中的一个节点失效,它的任务可传递给其他节点。可以有效防止单点失效。
3.高性能:负载平衡集群允许系统同时接入更多的用户。
4.高性价比:可以采用廉价的符合工业标准的硬件构造高性能的系统。
二.配置环境
server1 172.25.29.1 主 luci ricci
server2 172.25.29.2
server3 172.25.29.3
server4 172.25.29.4 主 ricci
1.配置yum源
2.在server1和server4分别安装ricci,并设置密码westos,启动ricci
3.在server1安装luci并启动luci管理端
4.界面登陆设置
注:账户密码为所安装系统的账户密码,测试环境为server1,root,redhat
按图中进行创建设置
注:设置当中,server1与server4会重新启动,启动后需重新启动ricci和luci
创建成功
5.命令界面查看
三.安装fence系统
我们把集群创建好后,却无法测试一下集群是否生效,现在咱们装上这个电源管理fence,真实情况下这是一个硬件,来让服务器直接断电的,这时候大家会问 了为什么要给服务器直接断电,这样不会丢失数据吗?现在设想一个情况,有三台服务器,两台是结点,一台是存储服务器如nfs或者scsi,结点1是正常向 外提供服务的机器,但是结点1突然挂掉了,高可用集群就会将服务迁移到结点2,而且存储也接到了结点2,为了防止结点1继续向存储服务器上写数据,我们就 要让他断电,因为直接断电,服务器不会执行sync,也就是将内存上的数据写到磁盘上,这样就保护了存储服务器的硬盘。
1.安装fence
yum install fence-* -y
创建fence
生成随机密钥文件 重启服务
查看fence服务正常启动 端口正常打开
将密钥文件传给server1 和server4
2.创建fence设备
打开高可用web luci管理系统,选择Fance Devices
选择Add,如下图,Name指的是添加vmfence设备的名称,写完之后选择Submit
选择server1,点击Add Fence Method ,添加Method Name fence1
选择server2,点击Add Fence Method ,添加Method Name fence2,方法同server1
在fence1下面的Fence Drive的Method,选择Add Tence Instance,绑定虚拟机vm1
server4的做法如server1
3.测试
在server1上将server4节点破坏掉,这时高可用的fence机制起了作用,vm4已经重启
4.附:服务器自带内置fence添加
服务器自带的fence,每台机器都要设置一个fence,每台主机控制自己的fence
添加fence,选择dell服务的自带fence项iDRAC,加密类型设置为none
两个节点添加分别添加各自的fence
测试,节点宕掉,server1重启
四.在搭建好的集群上添加服务Nginx(双机热备)
1.配置好server1和server4的nginx服务,配置好server2和server3的http服务
首先在server1和server4上安装配置好的nginx服务(只需将server1/usr/local/nginx文件夹拷到server4下,并创建nginx用户即可),server2和server4已经安装好http服务,
测试server1和server4上的nginx轮询服务是否正常
正常,可以继续配置web端
2.配置luci web端
(1)添加服务 这里采用的是双机热备
选择Failover Domains,如图,填写Name(nginxfail),如图选择,前面打勾的三个分别是结点失效之后可以跳到另一个结点、只服务运行指定的结点、当结点失效之跳到另一个结 点之后,原先的结点恢复之后,不会跳回原先的结点。下面的Member打勾,是指服务运行server1和 server4结点,后面的Priority值越小,优先级越高,选择Create
(2)选择Resourcs,点击Add,选择添加IPAddress如图,添加的ip必须是未被占用的ip,24是子网掩码的位数,5指的是等待时间为5秒。选择Submit
(3)以相同的方法添加Script,nginx是服务的名字,/etc/init.d/nginx是服务启动脚本的路径,选择Submit
注:将nginx的脚本放置到/etc/init.d/nginx下,脚本为自己编写,用户启动nginx
全局资源配置完毕
(3)选择Service Groups,点击Add如图,apache是服务的名字,下面两个勾指分别的是自动开启服务、运行 ,选择Add Resource,将全局资源IP Address 和Script加入
选择Submit,完成,weblb服务组running
3.测试
clustat ,将server1的webib服务转移到server4上
服务没有停止,已经转义到server4上
4.常用命令
clustat 查看状态
clusvcadm -r weblb -m server4 将weblb转移到server4上
clusvcadm -e weblb 重新激活weblb
clusvcadm -d weblb 停止weblb
五.在搭建好的集群上添加服务sicis共享磁盘(双机热备)
1.配置好server2上的服务端scisi,在server1和server4的配置好客户端iscisi,
yum install scisi-* -y 服务端server2
yum install iscisi-* -y 客户端server1,server4
2.配置server2环境
(1)将server2上添加一块8G的硬盘
(2)配置scisi文件
vim /etc/tgt/targets.conf
配置只能server1和server4访问
3.配置server1和server4 iscisi 服务端
(1)在server1上发现scisi共享磁盘
打开iscisi服务 /etc/init.d/iscsi start
在server1上加入scisi共享磁盘
在server1上fdisk -l查看8G磁盘已经显示正常
(2)在server4上发现scisi共享磁盘
打开iscisi服务 /etc/init.d/iscsi start
查看 /etc/lvm/lvm.conf文件
3显示的是集群模式
5.在server1上创建创建为lvm分区
(1)创建pv、vg、lv
(2)创建分区
6.在server1挂载sicis磁盘
7.在server4挂载sicis磁盘,在server4上同步partproble server1创建好的lvm磁盘
一开始用cat /proc/partition 查询不到,是因为没有同步分区列表
在server4上挂载创建好名为clustervg/demo的iscis磁盘
六.在搭建好的集群上添加服务mysql数据库(双机热备)
1.配置好server1上安装mysql服务端
启动mysql服务
2.将iscis共享磁盘挂到mnt下,并关闭数据库,将var/lib/mysql数据考入/mnt下(此时是iscis盘)
3.取消挂载,更改var/lib/mysql所属人为mysql,要不然iscsi内的数据运行会出问题,重新在server1上启动数据库,运行数据库正常,证明使用iscsi内的数据正常
4.取消server1上数据库挂载并将数据库关闭
5.在server4上挂载iscsi磁盘,重新在server4上启动数据库,运行数据库正常,证明使用iscsi内的数据正常
6.取消server4上数据库挂载并将数据库关闭
7.打开web luci管理系统设置mysql主备模式
(1)设置全局资源 IP Address、Filesystem和script
(2)设置Service Groups
8.确认后开启服务
七.创建高可用集群共享盘,可以同时读取写入
1.在server1上将原来的iscsi磁盘格式化为高可用集群共享盘
2.将原来的/var/lib/local的数据库文件拷入/mnt下的高可用集群共享盘,并
3.查询高可用集群共享盘的UUID,将其设置为开机自动挂载
vim /etc/rc.local
4.使用mysql正常
5.在server4上也挂载高可用集群共享盘/dev/clustervg/demo,并向server1一样设置开机自动挂载
6.启动mysql正常,高可用集群共享盘两边同时可以正常使用
7.测试,将db由server1迁移到server2,服务正常运行,没有中断
本文转自一百个小排 51CTO博客,原文链接:http://blog.51cto.com/anfishr/1965443,如需转载请自行联系原作者