一、简介

RHCS 即 RedHat Cluster Suite ,中文意思即红帽集群套件。红帽集群套件(RedHat Cluter Suite, RHCS)是一套综合的软件组件,可以通过在部署时采用不同的配置,以满足你的对高可用性,负载均衡,可扩展性,文件共享和节约成本的需要。对于需要最大 正常运行时间的应用来说,带有红帽集群套件(Red Hat Cluster Suite)的红帽企业 linux 集群是最佳的选择。红帽集群套件专为红帽企业 Linux 量身设计,它提供有如下两种不同类型的集群:
1、应用/服务故障切换-通过创建n个节点的服务器集群来实现关键应用和服务的故障切换
2、IP 负载均衡-对一群服务器上收到的 IP 网络请求进行负载均衡利用红帽集群套件,可以以高可用性配置来部署应用,从而使其总是处于运行状态-这赋予了企业向外扩展(scale- out)linux 部署的能力。对于网络文件系统(NFS)、Samba 和Apache 等大量应用的开源应用来说,红帽集群套件提供了一个随时可用的全面故障切换解决方案。

二、术语

分布式集群管理器(CMAN)
Cluster Manager,简称CMAN,是一个分布式集群管理工具,它运行在集群的各个节点上,为RHCS提供集群管理任务。
CMAN用于管理集群成员、消息和通知。它通过监控每个节点的运行状态来了解节点成员之间的关系,当集群中某个节点出现故障,节点成员关系将发生改变,CMAN及时将这种改变通知底层,进而做出相应的调整。
锁管理(DLM)
Distributed Lock Manager, 简称DLM,表示一个分布式锁管理器,它是RHCS的一个底层基础构件,同时也为集群提供了一个公用的锁运行机制,在RHCS集群系统中,DLM运行在集 群的每个节点上,GFS通过锁管理器的锁机制来同步访问文件系统元数据。CLVM通过锁管理器来同步更新数据到LVM卷和卷组。
DLM不需要设定锁管理服务器,它采用对等的锁管理方式,大大的提高了处理性能。同时,DLM避免了当单个节点失败需要整体恢复的性能瓶颈,另外,DLM的请求都是本地的,不需要网络请求,因而请求会立即生效。最后,DLM通过分层机制,可以实现多个锁空间的并行锁模式。
配置文件管理(CCS)
Cluster Configuration System,简称CCS,主要用于集群配置文件管理和配置文件在节点之间的同步。CCS运行在集群的每个节点上,监控每个集群节点上的单一配置文件 /etc/cluster/cluster.conf的状态,当这个文件发生任何变化时,都将此变化更新到集群中的每个节点,时刻保持每个节点的配置文件 同步。例如,管理员在节点A上更新了集群配置文件,CCS发现A节点的配置文件发生变化后,马上将此变化传播到其它节点上去。rhcs的配置文件是cluster.conf,它是一个xml文件,具体包含集群名称、集群节点信息、集群资源和服务信息、fence设备等,这个会在后面讲述。
栅设备(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等
高可用服务管理器
高可用性服务管理主要用来监督、启动和停止集群的应用、服务和资源。它提供了一种对集群服务的管理能力,当一个节点的服务失败时,高可用性集群服务管理进程可以将服务从这个失败节点转移到其它健康节点上来,并且这种服务转移能力是自动、透明的。RHCS通过rgmanager来管理集群服务,rgmanager运行在每个集群节点上,在服务器上对应的进程为clurgmgrd。在一个RHCS集群中,高可用性服务包含集群服务和集群资源两个方面,集群服务其实就是应用服务,例如apache、mysql等,集群资源有很多种,例如一个IP地址、一个运行脚本、ext3/GFS文件系统等。在RHCS集群中,高可用性服务是和一个失败转移域结合在一起的,所谓失败转移域是一个运行特定服务的集群节点的集合。在失败转移域中,可以给每个节点设置相应的优先级,通过优先级的高低来决定节点失败时服务转移的先后顺序,如果没有给节点指定优先级,那么集群高可用服务将在任意节点间转移。因此,通过创建失败转移域不但可以设定服务在节点间转移的顺序,而且可以限制某个服务仅在失败转移域指定的节点内进行切换。
集群配置管理工具
RHCS提供了多种集群配置和管理工具,常用的有基于GUI的system-config-cluster、Conga等,也提供了基于命令行的管理工具。
system-config-cluster是一个用于创建集群和配置集群节点的图形化管理工具,它有集群节点配置和集群管理两个部分组成,分别用于创建集群节点配置文件和维护节点运行状态。一般用在RHCS早期的版本中。Conga是一种web集群配置工具,与system-config-cluster不同的是,Conga是通过web方式来配置和管理集群节点的。Conga有两部分组成,分别是luci和ricci,luci安装在一台独立的计算机上,用于配置和管理集群,ricci安装在每个集群节点上,Luci通过ricci和集群中的每个节点进行通信。RHCS也提供了一些功能强大的集群命令行管理工具,常用的有clustat、cman_tool、ccs_tool、fence_tool、clusvcadm等。

三、环境准备:

服务器:

ansible server : 192.168.8.40
node2.chinasoft.com: 192.168.8.39
node3.chinasoft.com: 192.168.8.41
node4.chinasoft.com: 192.168.8.42

1、配置/etc/hosts文件,不使用DNS解析域名

192.168.8.39 node2.chinasoft.com node2
192.168.8.42 node4.chinasoft.com node4
192.168.8.41 node3.chinasoft.com node3

2、时间同步、在ansible服务器配置免密码访问node2、node3、node4
在ansible服务器中添加rhcs组
# vim /etc/ansible/hosts
加入如下内容:

[rhcs]
node2.chinasoft.com
node3.chinasoft.com
node4.chinasoft.com

时间同步

# ansible rhcs -a "ntpdate -u 192.168.8.102"
node2.chinasoft.com | success | rc=0 >>
29 Apr 12:05:30 ntpdate[26149]: step time server 192.168.8.102 offset 4.144328 sec node3.chinasoft.com | success | rc=0 >>
29 Apr 12:05:30 ntpdate[23829]: adjust time server 192.168.8.102 offset 0.208051 sec node4.chinasoft.com | success | rc=0 >>
29 Apr 12:05:30 ntpdate[4932]: step time server 192.168.8.102 offset 2.731589 sec # ansible rhcs -a "date"
node2.chinasoft.com | success | rc=0 >>
Fri Apr 29 12:05:35 CST 2016 node4.chinasoft.com | success | rc=0 >>
Fri Apr 29 12:05:35 CST 2016 node3.chinasoft.com | success | rc=0 >>
Fri Apr 29 12:05:35 CST 2016

/etc/hosts文件是否相同

# ansible rhcs -m shell -a "cat /etc/hosts"
node2.chinasoft.com | success | rc=0 >>
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.8.39 node2.chinasoft.com node2
192.168.8.42 node4.chinasoft.com node4
192.168.8.41 node3.chinasoft.com node3 node4.chinasoft.com | success | rc=0 >>
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.8.39 node2.chinasoft.com node2
192.168.8.42 node4.chinasoft.com node4
192.168.8.41 node3.chinasoft.com node3 node3.chinasoft.com | success | rc=0 >>
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.8.39 node2.chinasoft.com node2
192.168.8.42 node4.chinasoft.com node4
192.168.8.41 node3.chinasoft.com node3

3、使用centos6.5作为yum源
注意:如果启用了epel源,其会通过epel安装Luci依赖的rpm包,这会被rhcs认为是不安全的。因此,安装luci时要禁用epel源。
检查Yum源

# ansible rhcs -m shell -a "yum repolist"
node2.chinasoft.com | success | rc=0 >>
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
repo id repo name status
base localyum 3995
updates localyum 3995
repolist: 7990 node3.chinasoft.com | success | rc=0 >>
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
repo id repo name status
base localyum 3995
updates localyum 3995
repolist: 7990 node4.chinasoft.com | success | rc=0 >>
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
repo id repo name status
base localyum 3995
updates localyum 3995
repolist: 7990

4、关闭几台服务器上的防火墙和selinux(避免干扰)

具体可参考前面的博文:CentOS 6.5环境实现corosync+pacemaker实现DRBD高可用
http://blog.csdn.net/reblue520/article/details/51271281

四、安装ricci和luci工具

1、在各ha节点上安装ricci
# ansible rhcs -m yum -a "name=ricci state=present disablerepo=epel"
# ansible rhcs -m yum -a "name=ricci state=present"

管理机安装luci并启动luci服务(8.40 安装ansible服务的机器)实际使用中,如果没有专用的跳板机,也可以以三个节点中的某节点来替代
# yum install -y luci --disablerepo=epel
# service luci start

2、启动HA节点的ricci服务并设置为开机启动

# ansible rhcs -m service -a "name=ricci state=started enabled=yes"
node2.chinasoft.com | success >> {
"changed": true,
"enabled": true,
"name": "ricci",
"state": "started"
} node3.chinasoft.com | success >> {
"changed": true,
"enabled": true,
"name": "ricci",
"state": "started"
} node4.chinasoft.com | success >> {
"changed": true,
"enabled": true,
"name": "ricci",
"state": "started"
}

随便找一台ha节点机器执行netstat -tunlp 可以看到ricci服务已启动
# netstat -tunlp | grep ricci
tcp        0      0 :::11111                    :::*                        LISTEN      26995/ricci


五、通过HA WEB配置集群
访问https://192.168.8.40:8084 可以看到HA节点的web控制台
输入root用户和密码即可登录


1、为HA节点添加ricci的密码,配置集群要用到

# ansible rhcs -m shell -a "echo centos | passwd --stdin ricci"
node2.chinasoft.com | success | rc=0 >>
Changing password for user ricci.
passwd: all authentication tokens updated successfully. node3.chinasoft.com | success | rc=0 >>
Changing password for user ricci.
passwd: all authentication tokens updated successfully. node4.chinasoft.com | success | rc=0 >>
Changing password for user ricci.
passwd: all authentication tokens updated successfully.

依次点击Manager Clusters/create创建一个名为mycluster的集群,创建会自动重新启动HA节点,需要等几分钟生效

2、故障转移域配置,如我们当前配置:故障后下线又上线不自动切换,优先级分别为node2、node3、node4

定义节点启动的优先级,数字越小级别越高

3、定义资源

添加一个VIP:地址为192.168.8.77

在HA节点上安装apache软件
# ansible rhcs -m yum -a "name=httpd state=present"
删除默认欢迎主页
# ansible rhcs -m shell -a "rm -rf /etc/httpd/conf.d/welcome.conf"

添加一个编辑各自节点主页内容为当前主机名的脚本
# vim setindex.sh
#!/bin/bash
#
echo "<h1>`uname -n`" > /var/www/html/index.html

# chmod +x setindex.sh 
将脚本拷贝到各节点
# for i in {2..4}; do scp -p setindex.sh node$i.chinasoft.com:/tmp/; done

执行脚本
# ansible rhcs -m shell -a "/tmp/setindex.sh"

验证主页是否修改成功
# ansible rhcs -a "cat /var/www/html/index.html"
node2.chinasoft.com | success | rc=0 >>
<h1>node2.chinasoft.com

node3.chinasoft.com | success | rc=0 >>
<h1>node3.chinasoft.com

node4.chinasoft.com | success | rc=0 >>
<h1>node4.chinasoft.com

4、定义服务
添加一个名为webservice的服务,并关联之前定义的webdomain

添加资源如:VIP和SCRIPTS(httpd服务)

启动服务

通过访问http://192.168.8.77/
可以看到服务运行在了node3上面,通过nodes使node3下线,此时转移到了node4上,因为将node4的优先级调整为了1
让node3重新上线此时服务依旧运行在node4上面

通过在任意HA节点上运行clustat、cman_tool status及cman_tool services命令可以看到集群的状态

通过rpm命令可以看到rhcs集群底层是把cman和corosync以插件的方式运行的

centos6.5环境基于conga的web图形化界面方式配置rhcs集群的更多相关文章

  1. centos6.5最小化安装之后装图形化界面

    查看自己系统环境 # cat /etc/issue 先要安装KDE桌面环境,执行命令: # yum groupinstall "X Window System" "KDE ...

  2. centos6.4安装过程中无法出现图形化界面

    今天在VMware9.0安装centos6.4的时候,前面的步骤都没问题,到跳过媒体检查这一步后,就发现和之前的不一样了,这次安装不是图形界面,导致后面的安装不方便 一开始以为是centos的版本不一 ...

  3. centos6.5环境基于corosync+cman+rgmanager实现RHCS及iscsi+gfs2+clvm的文件系统集群

    centos6.5环境基于corosync+cman+rgmanager实现RHCS及iscsi+gfs2+clvm文件系统集群 一.环境准备 服务器列表: ansible server : 192. ...

  4. 分享一个基于小米 soar 的开源 sql 分析与优化的 WEB 图形化工具

    soar-web 基于小米 soar 的开源 sql 分析与优化的 WEB 图形化工具,支持 soar 配置的添加.修改.复制,多配置切换,配置的导出.导入与导入功能. 环境需求 python3.xF ...

  5. 基于 IBM WAS ND v6.1 搭建稳定高效的集群环境

    如今的电子商务及电子政务应用系统的发展已经到了一个新的阶段,应用系统的成熟度和可用性都达到了更高的水准.因此庞大的部署规模和海量的用户访问成为目前大型电子商务及电子政务应用系统的显著特征.在这样的情况 ...

  6. 【转帖】远程显示(操作) 服务器 GUI 程序(图形化界面) (基于 X11 Forwarding + Centos + MobaXterm)

    远程显示(操作) 服务器 GUI 程序(图形化界面) (基于 X11 Forwarding + Centos + MobaXterm) https://zhuanlan.zhihu.com/p/310 ...

  7. 远程显示(操作) 服务器 GUI 程序(图形化界面) (基于 X11 Forwarding + Centos + MobaXterm)

    在做 数据分析(数据挖掘 或 机器学习)的时候,我们经常需要绘制一些统计相关的图表,这些统计.绘图的程序常常是跑在服务器上的,可是服务器出于性能和效率的考虑,通常都是没有安装图形化界面的,于是这些统计 ...

  8. 基于hadoop2.6.0搭建5个节点的分布式集群

    1.前言 我们使用hadoop2.6.0版本配置Hadoop集群,同时配置NameNode+HA.ResourceManager+HA,并使用zookeeper来管理Hadoop集群 2.规划 1.主 ...

  9. 亿级 Web 系统搭建:单机到分布式集群

    本文内容 Web 负载均衡 HTTP 重定向 反向代理 IP 负载均衡 DNS 负载均衡 Web 系统缓存机制的建立和优化 MySQL 数据库内部缓存 搭建多台 MySQL 数据库 MySQL 数据库 ...

随机推荐

  1. Android微信数据导出

    在Nexus 5(Android 4.4)+WeChat 5.4,和Nexus 5(Android 5.0)+Wechat 6.0上测试可用. 获取加密的sqlite3数据库EnMicroMsg.db ...

  2. db nosql redis / Redis Sentinel

    s Redis基础原理和日常操作方法 http://itsm.cns*****.com/kindeditor/img/20170527/759128afca564051b491e6a51a5bad40 ...

  3. HBase基础之常用过滤器hbase shell操作

    创建表 create 'test1', 'lf', 'sf' lf: column family of LONG values (binary value) -- sf: column family ...

  4. 条理清晰的搭建SSH环境之添加所需jar包

    一.首先介绍要添加框架环境: JUnit Struts2 Hibernate Spring (1)配置JUnit /**-------------------------添加JUnit-------- ...

  5. JavaSE考试前练习

    汽车租赁管理系统(CarRents)  120分钟 要求:请使用JavaEE实现一个汽车租赁管理系统,汽车租赁的属性主要包含:车牌(License).公里数(kilo).品牌(brand),租金(mo ...

  6. jedis实现操纵redis的常用api及使用场景

    简单记录一下,和描述一下常用的业务场景.好记性不如烂笔头. pom.xml <!--整合redis--> <dependency> <groupId>redis.c ...

  7. 修改tomcat启动窗口的名称

    场景:我们在启动tomcat的时候,一般会出现tomcat窗口,默认窗口名字是tomcat,如果我们想知道这个tomcat的端口号,我们需要查看配置文件,很麻烦有木有.如果我们可以直接把端口号设置在窗 ...

  8. Python复习笔记(一)高级变量类型

    目标 列表元组 字典 字符串 公共方法 变量高级 01. 列表 02. 元组 03. 字典 04. 字符串 1)判断类型 - 9 2) 查找和替换 - 7 3) 大小写转换 - 5 4) 文本对齐 - ...

  9. 服务器上的XML

    若想让浏览器能访问Web项目,需要配置服务器里的XML文件,XML文件是类似于HtML文件的纯文本文件,可以通过Web服务器轻松的存储和生成. XML可以通过ASP,PHP,数据库生成XML

  10. 21. Spring Boot Druid 数据源配置解析

    1.数据源配置属性类源码 package org.springframework.boot.autoconfigure.jdbc; @ConfigurationProperties( prefix = ...