基于RHCS的web双机热备集群搭建

基于RHCS的web双机热备集群搭建

RHCS集群运行原理及功能介绍

1、 分布式集群管理器(CMAN)

Cluster Manager,简称CMAN,是一个分布式集群管理工具,它运行在集群的各个节点上,为RHCS提供集群管理任务。CMAN用于管理集群成员、消息和通知。它通过监控每个节点的运行状态来了解节点成员之间的关系,当集群中某个节点出现故障,节点成员关系将发生改变,CMAN及时将这种改变通知底层,进而做出相应的调整。

2、锁管理(DLM)

Distributed Lock Manager,简称DLM,表示一个分布式锁管理器,它是RHCS的一个底层基础构件,同时也为集群提供了一个公用的锁运行机制,在RHCS集群系统中,DLM运行在集群的每个节点上,GFS通过锁管理器的锁机制来同步访问文件系统元数据。CLVM通过锁管理器来同步更新数据到LVM卷和卷组。 DLM不需要设定锁管理服务器,它采用对等的锁管理方式,大大的提高了处理性能。同时,DLM避免了当单个节点失败需要整体恢复的性能瓶颈,另外,DLM的请求都是本地的,不需要网络请求,因而请求会立即生效。最后,DLM通过分层机制,可以实现多个锁空间的并行锁模式。

3、配置文件管理(CCS)

Cluster Configuration System,简称CCS,主要用于集群配置文件管理和配置文件在节点之间的同步。CCS运行在集群的每个节点上,监控每个集群节点上的单一配置文件/etc/cluster/cluster.conf的状态,当这个文件发生任何变化时,都将此变化更新到集群中的每个节点,时刻保持每个节点的配置文件同步。例如,管理员在节点A上更新了集群配置文件,CCS发现A节点的配置文件发生变化后,马上将此变化传播到其它节点上去。 RHCS的配置文件是cluster.conf,它是一个xml文件,具体包含集群名称、集群节点信息、集群资源和服务信息、fence设备等。

4、栅设备(FENCE)

FENCE设备是RHCS集群中必不可少的一个组成部分,通过FENCE设备可以避免因出现不可预知的情况而造成的“脑裂”现象,FENCE设备的出现,就是为了解决类似这些问题,Fence设备主要就是通过服务器或存储本身的硬件管理接口,或者外部电源管理设备,来对服务器或存储直接发出硬件管理指令,将服务器重启或关机,或者与网络断开连接。 FENCE的工作原理是:当意外原因导致主机异常或者宕机时,备机会首先调用FENCE设备,然后通过FENCE设备将异常主机重启或者从网络隔离,当FENCE操作成功执行后,返回信息给备机,备机在接到FENCE成功的信息后,开始接管主机的服务和资源。这样通过FENCE设备,将异常节点占据的资源进行了释放,保证了资源和服务始终运行在一个节点上。RHCS的FENCE设备可以分为两种:内部FENCE和外部FENCE,常用的内部FENCE有IBM
RSAII卡,HP的iLO卡,还有IPMI的设备等,外部fence设备有UPS、SAN SWITCH、NETWORK SWITCH等

5、高可用服务管理器

高可用性服务管理主要用来监督、启动和停止集群的应用、服务和资源。它提供了一种对集群服务的管理能力,当一个节点的服务失败时,高可用性集群服务管理进程可以将服务从这个失败节点转移到其它健康节点上来,并且这种服务转移能力是自动、透明的。RHCS通过rgmanager来管理集群服务,rgmanager运行在每个集群节点上,在服务器上对应的进程为clurgmgrd。在一个RHCS集群中,高可用性服务包含集群服务和集群资源两个方面,集群服务其实就是应用服务,例如apache、mysql等,集群资源有很多种,例如一个IP地址、一个运行脚本、ext3/GFS文件系统等。在RHCS集群中,高可用性服务是和一个失败转移域结合在一起的,所谓失败转移域是一个运行特定服务的集群节点的集合。在失败转移域中,可以给每个节点设置相应的优先级,通过优先级的高低来决定节点失败时服务转移的先后顺序,如果没有给节点指定优先级,那么集群高可用服务将在任意节点间转移。因此,通过创建失败转移域不但可以设定服务在节点间转移的顺序,而且可以限制某个服务仅在失败转移域指定的节点内进行切换。

6、集群配置管理工具

RHCS提供了多种集群配置和管理工具,常用的有基于GUI的system-config-cluster、Conga等,也提供了基于命令行的管理工具。

system-config-cluster是一个用于创建集群和配置集群节点的图形化管理工具,它有集群节点配置和集群管理两个部分组成,分别用于创建集群节点配置文件和维护节点运行状态。一般用在RHCS早期的版本中。Conga是一种新的基于网络的集群配置工具,与system-config-cluster不同的是,Conga是通过web方式来配置和管理集群节点的。Conga有两部分组成,分别是luci和ricci,luci安装在一台独立的计算机上,用于配置和管理集群,ricci安装在每个集群节点上,Luci通过ricci和集群中的每个节点进行通信。RHCS也提供了一些功能强大的集群命令行管理工具,常用的有clustat、cman_tool、ccs_tool、fence_tool、clusvcadm等,这些命令的用法将在下面讲述。

7、 Redhat GFS

GFS是RHCS为集群系统提供的一个存储解决方案,它允许集群多个节点在块级别上共享存储,每个节点通过共享一个存储空间,保证了访问数据的一致性,更切实的说,GFS是RHCS提供的一个集群文件系统,多个节点同时挂载一个文件系统分区,而文件系统数据不受破坏,这是单一的文件系统,例如EXT3、EXT2所不能做到的。

为了实现多个节点对于一个文件系统同时读写操作,GFS使用锁管理器来管理I/O操作,当一个写进程操作一个文件时,这个文件就被锁定,此时不允许其它进程进行读写操作,直到这个写进程正常完成才释放锁,只有当锁被释放后,其它读写进程才能对这个文件进行操作,另外,当一个节点在GFS文件系统上修改数据后,这种修改操作会通过RHCS底层通信机制立即在其它节点上可见。在搭建RHCS集群时,GFS一般作为共享存储,运行在每个节点上,并且可以通过RHCS管理工具对GFS进行配置和管理。这些需要说明的是RHCS和GFS之间的关系,一般初学者很容易混淆这个概念:运行RHCS,GFS不是必须的,只有在需要共享存储时,才需要GFS支持,而搭建GFS集群文件系统,必须要有RHCS的底层支持,所以安装GFS文件系统的节点,必须安装RHCS组件。

集群环境介绍

主节点,RealServer1: 192.168.10.121

备节点,RealServer2: 192.168.10.122

存储节点,Node1:       192.168.10.130

集群的浮动 IP:           192.168.10.254

配置主机之间的ssh互信

① 在每台主机上执行一下代码

/usr/bin/ssh-keygen -t rsa
/usr/bin/ssh-keygen -t dsa

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

② 建立 RealServer1和RealServer2之间的ssh互信

在RealServer1上执行:

ssh server2 cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
ssh server2 cat /root/.ssh/id_dsa.pub >> /root/.ssh/authorized_keys

在RealServer2上执行:

ssh server1 cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
ssh server1 cat /root/.ssh/id_dsa.pub >> /root/.ssh/authorized_keys

配置target 存储

yum install iscsi-target-utils -y
service tgtd restart
chkconfig tgtd on
HOSTNAME="iqp.2014-08-25.edu.nuist.com:storage.disk"
tgtadm --lld iscsi --mode target --op  new --tid 1 --targetname $HOSTNAME
tgtadm --lld iscsi --op new --mode logicalunit --lun 1 --tid 1 -b /dev/sdb
tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL

#tgtadm --lld iscsi --op show --mode target |grep Target
tgt-admin -s

配置所有节点的initiator

yum install iscsi-initiator* -y
service iscsi start
service iscsid start
chkconfig iscsid

iscsiadm -m discovery -p 192.168.10.130:3260 -t sendtargets
iscsiadm -m node --targetname iqp.2014-08-25.edu.nuist.com:storage.disk -p 192.168.10.130:3260 --login

创建一个GFS2文件系统(只在其中一个节点)(在192.168.10.121上创建)(创建一个lvm)

pvreate /dev/sdb
vgcreate webvg /dev/sdb
lvcreate -L 2G -n webvg_lv1 webvg

在每个节点上安装集群软件

yum -y install cman*
yum -y install rgmanager*
yum -y install gfs2-utils
yum -y install system-config-cluster*
yum -y install lvm2-cluster

格式化文件系统(格式化一次即可)

mkfs.gfs2 -p lock_dlm -t httpd_cluster:webvg_lv1 -j 2 /dev/webvg/webvg_lv1

使用 system-config-cluster 图形工具产生 cluster.conf配置文件

① 启动system-config-cluster,创建httpd_cluster

② 添加新节点

③ 添加fence

④ 将fence和节点绑定

⑤ 添加资源:添加 IP 资源

⑥ 添加资源:添加GFS资源

⑦ 添加资源:添加Script资源

⑧ 创建失效域

⑨ 创建集群服务

配置完成后的文件内容如下

<?xml version="1.0" ?>
<cluster config_version="2" name="httpd_cluster">
	<fence_daemon post_fail_delay="0" post_join_delay="3"/>
	<clusternodes>
		<clusternode name="RealServer1" nodeid="1" votes="1">
			<fence>
				<method name="1">
					<device name="fence1" nodename="RealServer1"/>
				</method>
			</fence>
		</clusternode>
		<clusternode name="RealServer2" nodeid="2" votes="1">
			<fence>
				<method name="1">
					<device name="fence2" nodename="RealServer2"/>
				</method>
			</fence>
		</clusternode>
	</clusternodes>
	<cman expected_votes="1" two_node="1"/>
	<fencedevices>
		<fencedevice agent="fence_manual" name="fence1"/>
		<fencedevice agent="fence_manual" name="fence2"/>
	</fencedevices>
	<rm>
		<failoverdomains>
			<failoverdomain name="httpd_fail" ordered="0" restricted="1">
				<failoverdomainnode name="RealServer1" priority="1"/>
				<failoverdomainnode name="RealServer2" priority="1"/>
			</failoverdomain>
		</failoverdomains>
		<resources>
			<ip address="192.168.10.254" monitor_link="1"/>
			<script file="/etc/init.d/httpd" name="httpd"/>
			<clusterfs device="/dev/webvg/webvg_lv1" force_unmount="1" fsid="8669" fstype="gfs2" mountpoint="/var/www/html" name="docroot" options=""/>
		</resources>
		<service autostart="1" domain="httpd_fail" name="httpd_srv" recovery="relocate">
			<ip ref="192.168.10.254"/>
			<script ref="httpd"/>
			<clusterfs ref="docroot"/>
		</service>
	</rm>
</cluster>

将产生后的cluster.conf通过scp复制到其他节点上。(第一次需要手动复制,集群服务启动后可以通过system-config-cluster向所有节点分发配置文件。)

在RealServer1 和RealServer2 上安装apache

yum install httpd

配置RealServer1(RealServer2类似)

NameVirtualHost 192.168.10.121:80

ServerName   www.example.com

<VirtualHost 192.168.10.121:80>
	DocumentRoot /var/www/html
	ServerName   www.example.com
</VirtualHost>

设置apache开机不启动

chkconfig httpd off

启动集群服务

service cman start
service rgmanager start
lvmconf --enable-cluster
service clvmd start

集群启动后,开启system-config-cluster后,如下图。可以对集群的配置文件进行修改,修改完成后可以通过Send to  Cluster向所有节点分发配置文件。该工具内置版本控制的功能,每次修改配置文件后,会自动产生一个新版本。集群服务启动后,“Cluster Manager”才会出现,其内容如右图。分别显示集群中的节点,集群服务的状态,和集群中的主节点。

测试

至此集群搭建完毕

查看集群状态: clustat

查看挂载状态: mount

手动切换主被节点:clusvcadm -r httpd_srv 备用主机名称

查看浮点ip附着在那台主机上: ip addr

通过浏览器访问apache: http://192.168.10.254

参考

1. 51CTO朱伟宏老师的视频教程,地址:http://edu.51cto.com/course/course_id-2.html

2. 百度文库:红帽集群套件RHCS四部曲







时间: 2024-10-08 21:06:45

基于RHCS的web双机热备集群搭建的相关文章

MSCS双机热备集群截图

MSCS双机热备集群 DNS记录截图 其中一节点的MSCS截图

Keepalived现实Web双机热备(高可用)

Keepalived现实Web双机热备(高可用) 通过在两台主.备调度器上实现Keepalived高可用解决调度器单点失败问题 主.备调度器上配置LVS,正常情况下主调度器工作 主调度器异常时,Keepalived启用备用调度器,保证了调度器的高可用 调度器保证了后台服务的高可用 Keepalived机制把同一个IP一直分配在同一个Web服务器 如下实现web服务器的高可用: web1 :  192.168.10.20     主 web2:   192.168.10.22     备 虚拟IP

【Postgresql】postgresql9.3.9版本基于流复制方式双机热备方案

系统环境:centos6.5数据库版本: postgres9.3.9虚拟机2台:Master:10.0.2.160Slave:10.0.2.69数据存储位置:/usr/local/pgsql/data/ 安装pgsql数据库 安装过程可参考我上一篇博客:http://blog.51cto.com/13632960/2117902 两台机器都需要安装完成,我在做热备的时候,Master数据库开启,Slave关闭. 创建流复制用户 Master端进入数据库并执行: CREATE USER repus

基于主从复制的Mysql双机热备+amoeba实现读写分离、均衡负载

读写分离指的是客户只能在主服务器上写,只能在从服务器上读,当然了,这也是要看配置,你可以在主服务器配置读的功能,但是在从服务器上只能读不能写,因为从服务器是基于binlog对主服务器的复制,如果在从服务器上写的话,会造成主从不一致的结果.mysql实现读写分离,写的压力虽然没有减少,但是读的压力瞬间就减少了一半. Amoeba的中文意思是阿米巴.变型虫Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy代理服务器.它集中地响应应用的请求,依据用户事先设置的规则

oracle双机热备概念

1. 双机热备概述      双机热备有两种实现模式,一种是基于共享的存储设备的方式,另一种是没有共享的存储设备的方式,一般称为纯软件方式.      基于存储共享的双机热备是双机热备的最标准方案.      对于这种方式,采用两台(或多台)服务器,使用共享的存储设备(磁盘阵列柜或存储区域网SAN).两台服务器可以采用互备.主从.并行等不同的方式.在工作过程中,两台服务器将以一个虚拟的IP地址对外提供服务,依工作方式的不同,将服务请求发送给其中一台服务器承担.同时,服务器通过心跳线(目前往往采用

电子邮件系统双机热备部署方案

双机热备部署 双机热备针对的是服务器的临时故障所做的一种备份技术,通过双机热备,来避免长时间的服务中断,保证系统长期.可靠的服务.企业为了避免服务器故障产生数据丢失等现象,旧的技术是利用RAID技术和数据备份技术,但是数据备份只能解决系统出现问题后的恢复.无论是硬件还是软件问题,都可能会造成邮件服务的中断,而RAID及数据备份技术恰恰就不能解决避免服务中断的问题. 发生宕机事故后到恢复服务器运行,再轻微的问题或者强悍的技术支持,服务器也会中断一段时间,可能会造成邮件的丢失,对于一些需要不间断在线

RAID与双机热备简单介绍与区别

一.    RAID技术详解 RAID是英文Redundant Array of Independent Disks的缩写,翻译成中文意思是“独立磁盘冗余阵列”,有时也简称磁盘阵列(Disk Array).    简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术.组成磁盘阵列的不同方式成为RAID级别(RAID Levels).数据备份的功能是在用户数据一旦发生损坏后,利用备份信息可以使损坏数据

OpenShift 集群搭建指南

OpenShift 集群搭建指南 v1.0 搭建Hyper-v虚拟机或物理机 配置物理机静态IP,启用Hyper-v服务. 规划服务器节点 节点 说明 主机名 IP Master 主控制节点 openshiftmaster.dynastech.com 192.168.30.95 Etcd 协调服务节点 openshiftetcd.dynastech.com 192.168.30.96 Node1 计算节点1 openshiftnode1.dynsatech.com 192.168.30.102

用haproxy搭建web群集并由keepalived 实现双机热备

搭建haproxy+keepalived高可用群集. 一.案例概述 1.haproxy是目前比较流行的一种集群调度工具,是一款免费开源的软件,并且具有一定得安全性:haproxy较适用于负载较大的web节点,并且支持数万的并发量.同类调度工具还有很多,如LVS和Nginx.相比较而言,LVS性能最好,但是搭建相对复杂,Nginx的upstream模块支持群集功能,但是对群集节点健康检查功能不强,性能没有haproxy好.haproxy主要实现web群集的负载均衡haproxy官方网站:http: