简介
- RHCS即 RedHat Cluster Suite ,中文意思即红帽集群套件。
红帽集群套件(RedHat Cluter Suite, RHCS)是一套综合的软件组件,可以通过在部署时采用不同的配置,以满足你的对高可用性,负载均衡,可扩展性,文件共享和节约成本的需要。
它提供有如下两种不同类型的集群:
- 可用性:应用/服务故障切换-通过创建n个节点的服务器集群来实现关键应用和服务的故障切换
- 负载均衡:IP 负载均衡-对一群服务器上收到的 IP 网络请求进行负载均衡
特点
- 最多支持128个节点(红帽企业Linux 3 和红帽企业Linux 4 支持 16 个节点)。
- 可同时为多个应用提供高可用性。
- NFS/CIFS 故障切换:支持 Unix 和 Windows 环境下使用的高可用性文件。
- 完全共享的存储子系统:所有集群成员都可以访问同一个存储子系统。
- 综合数据完整性:使用最新的 I/O 屏障(barrier)技术,如可编程的嵌入式和外部电源开关装置(power switches)。
- 服务故障切换:红帽集群套件可以确保及时发现硬件停止运行或故障的发生并自动恢复系统,同时,它还可以通过监控应用来确保应用的正确运行并在其发生故障时进行自动重启。
集群中的相关术语
- 节点(node)
运行集群进程的一个独立主机,称为节点,节点是HA的核心组成部分,每个节点上运行着操作系统和集群软件服务,在集群中,节点有主次之分,分别称为主节点和备用/备份节点,每个节点拥有唯一的主机名,并且拥有属于自己的一组资源,例如,磁盘、文件系统、网络地址和应用服务等。主节点上一般运行着一个或多个应用服务。而备用节点一般处于监控状态。 - 资源(resource)
资源是一个节点可以控制的实体,并且当节点发生故障时,这些资源能够被其它节点接管。 - 事件(event)
也就是集群中可能发生的事情,例如节点系统故障、网络连通故障、网卡故障、应用程序故障等。这些事件都会导致节点的资源发生转移,HA的测试也是基于这些事件来进行的。 - 动作(action)
事件发生时HA的响应方式,动作是由shell脚步控制的,例如,当某个节点发生故障后,备份节点将通过事先设定好的执行脚本进行服务的关闭或启动。进而接管故障节点的资源。
集群大致结构
简单制作的集群的大致结构,先有一个大致的思想:
最上层是LVS负载均衡层,中间一层是Real Server层,就是服务节点部分,最后一层是共享存储层,主要用于给GFS文件系统提供共享存储空间。
实验环境(RHEL6.5版本):
主机名 | IP | 服务 |
---|---|---|
server1 | 172.25.254.1 | HA1(高可用节点1:ricci) 和 RHCS基于Web的集群管理工具 图形界面(luci) |
server2 | 172.25.254.2 | HA1(高可用节点2:ricci) |
server2 | 172.25.254.3 | 后面作iscci共享存储,暂时不用 |
fountion真机 | 172.25.254.60 | fence集群 |
RHCS实现高可用的部署:
注:
从红帽企业版 Linux 6.1 开始,您在任意节点中使用 ricci 推广更新的集群配置时要求输入密码。所以在前面两台主机安装完成ricci后需要修改ricci用户的密码,这个是后面节点设置的密码,并且要作时间同步;然后启动安装的服务
为了避免其他因素影响实验,关闭所有的防火墙,禁用selinux
- 两HA节点(server1与server2)搭建高级yum源:
[root@server1 ~]# vim /etc/yum.repos.d/rhel-source.repo
[root@server1 ~]# cat /etc/yum.repos.d/rhel-source.repo
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.254.60/rhel6.5
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[HighAvailability] ##高可用
name=HighAvailability
baseurl=http://172.25.254.60/rhel6.5/HighAvailability
gpgcheck=0
[LoadBalancer] ##负载均衡
name=HighAvailability
baseurl=http://172.25.254.60/rhel6.5/LoadBalancer
gpgcheck=0
[ResilientStorage] ##存储
name=HighAvailability
baseurl=http://172.25.254.60/rhel6.5/ResilientStorage
gpgcheck=0
[ScalableFileSystem] ##文件系统
name=HighAvailability
baseurl=http://172.25.254.60/rhel6.5/ScalableFileSystem
gpgcheck=0
[root@server1 ~]# scp /etc/yum.repos.d/rhel-source.repo root@server2:/etc/yum.repos.d
出现这个界面说明高级yum源搭建成功
- server1和server2安装服务:
ricci 高可用
luci RHCS基于Web的集群管理工具 图形界面
[root@server1 ~]# yum install -y ricci luci
[root@server1 ~]# passwd ricci #修改密码
[root@server1 ~]# /etc/init.d/ricci start
[root@server1 ~]# /etc/init.d/luci start
[root@server1 ~]# chkconfig ricci on
[root@server1 ~]# chkconfig luci on
[root@server1 ~]# netstat -tnlp
[root@server2 ~]# yum install -y ricci
[root@server2 ~]# passwd ricci
[root@server2 ~]# /etc/init.d/ricci start
[root@server2 ~]# chkconfig ricci on
查看端口,打开浏览器链接https://172.25.3.1:8084
- Cluster Name:集群名字,名字随便取的,不过自己要知道名字代表什么。
- User the Same Password for ALL Nodes:勾上这个,代表所有的节点使用ricci的密码都是一样的,那么你写了一个密码,剩下的系统会自动给你写上。
- Download Packages:勾上这个代表RHCS客户端在加入到集群的时候,系统会自动的去安装集群相关的服务并且运行。
- Reboot Nodes Before Joining Cluster:RHCS客户端加入到集群后,会重启。
- Enable shared Storage Support:可以分享存储支持。
在虚拟机上查看是否配置成功
RHCS客户端被安装和集群相关的服务有以下这些,确保这些服务都运行。
无论是那个节点,只要加入到集群中来,这个节点会自动的把集群相关的服务安装的你的机器上
- ricci:ricci没有起来,会一直转圈圈
- Cman(cluster manager)集群管理服务:任何一个集群上的节点cman没起来,集群就起不来。集群的存与活,看集群节点上的cman是否正常(cman_tools status命令查看集群状态)
- Rgmanager: 集群资源访问控制:将当前集群的状态反应给你看(clustat -i 1命令查看集群状态)
- modclusterd:集群模块
- clvmd: 集群逻辑卷,我在任何一个节点上做逻辑卷,把这个逻辑卷的信息通告给其它节点,其它节点就有这个逻辑卷的信息
fence管理集群(为障切换打基础)
fountion真机配置
[root@foundation60 ~]# yum search fence
[root@foundation60 ~]# yum install -y fence-virtd.x86_64 fence-virtd-libvirt.x86_64 fence-virtd-multicast.x86_64
[root@foundation60 ~]# fence_virtd -c
Interface [br0]:
[root@foundation60 ~]# mkdir /etc/cluster ## 需要创建新文件
[root@foundation60 ~]# cd /etc/cluster/
[root@foundation60 cluster]# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1 ## 截取随机数,生成密钥
[root@foundation60 cluster]# ls
fence_xvm.key
[root@foundation60 cluster]# scp fence_xvm.key root@172.25.254.1:/etc/cluster
[root@foundation60 cluster]# scp fence_xvm.key root@172.25.254.2:/etc/cluster
## 可以用hexdump查看这个文件
[root@foundation60 cluster]# cat fence_xvm.key
[root@foundation60 cluster]# hexdump -C fence_xvm.key
[root@foundation60 cluster]# systemctl status fence_virtd.service
[root@foundation60 cluster]# systemctl start fence_virtd.service
[root@foundation60 cluster]# systemctl status fence_virtd.service
## 接着在浏览器将节点和fence建立联系
添加时候输入虚拟机的唯一识别码UIDD
测试:
[root@server1 ~]# fence_node server2 ##输入此命令使server2宕机
故障切换
- RHCS的一个很重要概念:Failover Domain故障转移域,更准确地说应该是服务故障转移域(一个服务包括多个资源如VIP FileSystem…)key当i定义一个节点故障后,此节点上的资源能够转移的目标节点,进而限制了资源转移的范围
FENCE设备是RHCS集群中必不可少的一个组成部分,通过FENCE设备可以避免因出现不可预知的情况而造成的“脑裂”现象,FENCE设备的出现,就是为了解决类似这些问题,Fence设备主要就是通过服务器或存储本身的硬件管理接口,或者外部电源管理设备,来对服务器或存储直接发出硬件管理指令, 将服务器重启或关机,或者与网络断开连接。
FENCE的工作原理:
当意外原因导致主机异常或者宕机时,备机会首先调用FENCE设备,然后通过FENCE设备将异常主机重启或者从网络隔离,当FENCE操作成功执行后,返回信息给备机,备机在接到FENCE成功的信息后,开始接管主机的服务和资源。这样通过FENCE设备,将异常节点占据的资 源进行了释放,保证了资源和服务始终运行在一个节点上。
删 除 Fence 设备
注意:
无法删除使用中的 fence 设备。要删除某个节点目前正在使用的 fence 设备,请首先为使用该设备的 所有节点更新节点 fence 配置,然后删除该设备。
要删除 fence 设备,请按照以下步骤执行:
1.在「 Fence 设备 」 配置页面中选择 fence 设备左侧的复选框选择要删除的设备。
2.点击 删 除 并等待配置更新。此时会出现一条信息说明已经删除了该设备。 当更新配置后,显示中不再会出现删除的 fence 设备。
服务器宕机后 ip漂移
先大致了解一下,后面图片会详细说明
打开 https://172.25.3.1:8084
登录 root redhat
Failover Domain 故障切换域(失效率,优先级)
Add
Name:webfile
第一个第二个打勾
No Failback 不选这个ip会漂移回去
Priority 优先级 数字越小优先级越高
server1,2的member都打勾 ##意思是两太服务器都可运行上面这个失效率
Resources 资源(一个服务能被正常运行,工作,他需要满足哪些条件,这个条件就是资源的意思)
Add IP Address
IP Address 172.25.3.100
Netmask 24
等待时间 5s
Add Script
Name httpd
Full Path... /etc/init.d/httpd
Service Groups 使用之前创建的失效率和资源(让服务正常运行)
Name: apache (可随意)
两个打勾
选择Automatically Start This Service:自动开启服务
选择Run Exclusive:独占运行
Failover Domain: weibfile
Add Resource
添加刚才的两个配置即可
sercer1,server2安装httpd服务,编辑默认文件
检查
由于server2优先级高于server1,curl访问时到server2
server2用命令echo c> /proc/sysrq-trigger宕掉服务器
5s之后服务器自动重启,在宕机期间,查询会到server1服务器上,恢复之后继续回到server2
添加服务
HA 服务是一组在统一实体中配置的集群资源,可为客户端提供指定的服务。HA 服务在集群配置文件/etc/cluster/cluster.conf(在每个集群节点中)中以资源树的形式出现。在集群配置文件中,每个 资源树都使用一个 XML 代表,它指定每个资源及其属性,以及在资源树中与其他资源的关系(上级、下级和平级关系)。
在资源树的上/下级关系中采用以下规则:
1.上级资源在下级资源之前启动。
2.在停止上级资源前必须停止全部下级资源。
3.对于正常工作的资源,其下级资源必须全部正常工作。
添加一个服务,这里以httpd为例:
- 在server1和server2上均配置好httpd,编写各自的网页(index.html文件);
[root@server1 ~]# yum install httpd -y
[root@server1 ~]# vim /var/www/html/index.html
[root@server1 ~]# cat /var/www/html/index.html
server1
[root@server2 ~]# yum install httpd -y
[root@server2 ~]# vim /var/www/html/index.html
[root@server2 ~]# cat /var/www/html/index.html
server2
-
启动启动Apache服务检测是否正常显示网页,检测完成后server1和server2均关闭httpd服务;
- 注 :交给集群的资源一定是屏蔽掉的,因为要交给集群去开启
-
进入luci的集群,点击Faliover Domains,点击Add,输入Name,例如webfile,选中Prioritized、Restricted(只在指定节点跑)、No Failback(资源故障回切),选中下方的server1和server4的Member并输入优先级,这里server1输入10,server2输入1,就是以server2为主节点,数字越小优先级越高;
- 点击Resources,点击Add,选择模式IP Address,输入IP和NETMASK,IP不能被占用,这个IP就是VIP,点击Submit; 数字5代表的是服务无响应时间,记时结束后服务调转至别的服务器。
- 注意:子网掩码要匹配,不一定都是24
- 点击Resources,点击Add,选择模式Script,输入Name”apache“,并输入脚本路径”/etc/init.d/httpd“,点击Submit;
- 点击Service Groups,点击Add,输入一个自定义名称,例如”web“,选中”Automatically Start This Service“(集群自动开启)和”Run Exclusive“,选中”Failover Domain”下刚才创建的”webfile“,”Recovery Policy”选择”Relocate“,点击下方Add Resource,选择之前创建的Resources,因为有两个,所以需要添加两次,完成后点击Submit;
- 节点资源添加的顺序,就是启动的顺序,所以先开启VIP,然后再启动httpd,要注意!!
测试:
由于server2优先级高于server1,curl访问时到server2
server2用命令echo c> /proc/sysrq-trigger宕掉服务器
5s之后服务器自动重启,在宕机期间,查询会到server1服务器上,恢复之后继续回到server2
篇幅有限,请看下一篇博客
https://blog.youkuaiyun.com/weixin_43287982/article/details/87798434