基于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不须要设定锁管理server,它採用对等的锁管理方式,大大的提高了处理性能。
同一时候。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设备主要就是通过server或存储本身的硬件管理接口。或者外部电源管理设备。来对server或存储直接发出硬件管理指令。将server重新启动或关机,或者与网络断开连接。 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执行在每一个集群节点上。在server上相应的进程为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之间的关系。一般刚開始学习的人非常easy混淆这个概念:执行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
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3VveGlhb2ppZV80MTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">
④ 将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>
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”才会出现,其内容如右图。分别显示集群中的节点,集群服务的状态,和集群中的主节点。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3VveGlhb2ppZV80MTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">
測试
至此集群搭建完成
查看集群状态: 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四部曲
基于RHCS的web双机热备集群搭建的更多相关文章
- web双机热备添加心跳检测ip的时候填了网关导致外网ip不能上网
web双机热备添加心跳检测ip的时候填了网关导致外网ip不能上网 1 连接 机器其他机器, 通过机房做的服务器的局域网,ssh到这台的局域网ip,删除网卡配置文件的网关哪一行,重启网卡. 2 如果没有 ...
- 基于Hadoop 2.2.0的高可用性集群搭建步骤(64位)
内容概要: CentSO_64bit集群搭建, hadoop2.2(64位)编译,安装,配置以及测试步骤 新版亮点: 基于yarn计算框架和高可用性DFS的第一个稳定版本. 注1:官网只提供32位re ...
- 两台Windows的 IIS 应用站点 基于NLB + ARR 实现双机热备和负载
IIS负载均衡中我们使用微软的ARR,但提到网站的高可用性,ARR只能做请求入口的消息分发服务,这样如果我们的消息分发服务器给down掉啦,那么做再多的应用服务集群也都枉然. 这里我们主要针对解决这一 ...
- 基于uReplicator复制的kafka主备集群间的切换策略
一.概述 目前基于中间件uReplicator实现了kafka集群间的迁移复制,可以实现跨区.跨云的kafka集群间复制同步,也可以实现kafka集群的冷热互备架构:在实现集群间同步以后,需要解决一个 ...
- 基于主从复制的Mysql双机热备+amoeba实现读写分离、均衡负载
读写分离指的是客户只能在主服务器上写,只能在从服务器上读,当然了,这也是要看配置,你可以在主服务器配置读的功能,但是在从服务器上只能读不能写,因为从服务器是基于binlog对主服务器的复制,如果在从服 ...
- RAID与双机热备简单介绍与区别
一. RAID技术详解 RAID是英文Redundant Array of Independent Disks的缩写,翻译成中文意思是“独立磁盘冗余阵列”,有时也简称磁盘阵列(Disk Arra ...
- oracle双机热备概念
1. 双机热备概述 双机热备有两种实现模式,一种是基于共享的存储设备的方式,另一种是没有共享的存储设备的方式,一般称为纯软件方式. 基于存储共享的双机热备是双机热备的最标准方案. ...
- Mysql双机热备--预备知识
1.双机热备 对于双机热备这一概念,我搜索了很多资料,最后,还是按照大多数资料所讲分成广义与狭义两种意义来说. 从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务.当一台服务器 ...
- [转]OpenShift 集群搭建指南
转自:http://www.cnblogs.com/zhangning/p/7251810.html OpenShift 集群搭建指南 v1.0 搭建Hyper-v虚拟机或物理机 配置物理机静态IP, ...
随机推荐
- [NPM] Use npx to run commands with different Node.js versions
We will use npx to run a package using different versions of Node.js. This can become valuable when ...
- linux下的tar命令
tar 命令在打包的时候如果是通过绝对路径压缩打包,在不特殊参数时,解压时会在当前路径下创建打包时的路径,并提示警告: tar: Removing leading `/' from member na ...
- html5游戏驴子跳
在线演示 免费下载 分享一款HTML5开发的游戏,放松一下吧大家吧
- PyQt5教程——介绍(1)
PyQt5教程阅读须知 “PyQt5教程”系列若不做明显提示,默认翻译自zetcode. 有需要翻译精度的朋友可以自行阅读英文文档. 如果本系列博文侵犯了您的合法权益,请在博客中留下评论或联系:che ...
- jquery ajax 跨域
客户端“跨域访问”一直是一个头疼的问题,好在有jQuery帮忙,从jQuery-1.2以后跨域问题便迎刃而解.由于自己在项目中遇到跨域问题,借此机会对跨域问题来刨根问底,查阅了相关资料和自己的实践,算 ...
- TCP协议为什么会采用三次握手,若采用二次握手可以吗?
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的.可靠的.基于IP的传输层协议,采用三次握手确认建立一个连接. TCP为了保证报文传输的 ...
- xcode8 的坑 Info.plist 配置app权限
好多更新完Xcode8 的小盆友们(我也是小盆友啦),会发现当我们调用系统功能,相册,相机,麦克风等会出现崩溃,而控制台打印出一堆乱七八糟的看不懂的东西,但是最后一句话是有用的,给出了崩溃的原因 啦, ...
- ftpclient 编码备忘
if (FTPReply.isPositiveCompletion(ftpClient.sendCommand("OPTS UTF8", "ON"))) {// ...
- bg和fg命令
linux提供的fg和bg命令,可以让我们轻松调度正在运行的任务 假如你发现前天运行的一个程序需要很长的时间,但是需要干前天的事情,你就可以用ctrl-z挂起这个程序,然后可以看到系统的提示: [ ...
- libevent个人理解
1.利用了前置声明来在c语言的基础上进行封装操作.即在include目录下防止event.h等头文件,在这些头文件中只暴露struct的声明却不暴露其定义,对于如event_base等结构的操作均使用 ...