RHCS提供的三个核心功能
高可用集群是RHCS的核心功能。当应用程序出现故障,或者系统硬件、网络出现故
障时,应用可以通过RHCS提供的高可用管理组件自动、快速从一个节点切换到另一
个节点,节点故障转移功能对客户端来说是透明的,从而保证应用持续、不间断的
对外提供服务,这就是RHCS高可用集群实现的功能。
RHCS通过LVS(Linux Virtual Server)来提供负载均衡集群,而LVS是一个
开源的、功能强大的基于IP的负载均衡技术,LVS由负载调度器和服务访问节点组
成,通过LVS的负载调度功能,可以将客户端请求平均的分配到各个服务节点,同
时,还可以定义多种负载分配策略,当一个请求进来时,集群系统根据调度算法来
判断应该将请求分配到哪个服务节点,然后,由分配到的节点响应客户端请求,同
时,LVS还提供了服务节点故障转移功能,也就是当某个服务节点不能提供服务
时,LVS会自动屏蔽这个故障节点,接着将失败节点从集群中剔除,同时将新来此
节点的请求平滑的转移到其它正常节点上来;而当此故障节点恢复正常后,LVS又
会自动将此节点加入到集群中去。而这一系列切换动作,对用户来说,都是透明
的,通过故障转移功能,保证了服务的不间断、稳定运行。
RHCS通过GFS文件系统来提供存储集群功能,GFS是Global File System的缩
写,它允许多个服务同时去读写一个单一的共享文件系统,存储集群通过将共享数
据放到一个共享文件系统中从而消除了在应用程序间同步数据的麻烦,GFS是一个
分布式文件系统,它通过锁管理机制,来协调和管理多个服务节点对同一个文件系
统的读写操作。
集群结构:
最上层是LVS负载均衡层,中间一层是Real Server层,就是服务节点部分,最后一层是共享存储层,主要用于给GFS文件系统提供共享存储空间。
集群中的相关术语
1.节点(node)
运行集群进程的一个独立主机,称为节点,节点是HA的核心组成部分,每个节点上运行着操作系统和集群软件服务,在集群中,节点有主次之分,分别称为主节点和备用/备份节点,每个节点拥有唯一的主机名,并且拥有属于自己的一组资源,例如,磁盘、文件系统、网络地址和应用服务等。主节点上一般运行着一个或多个应用服务。而备用节点一般处于监控状态。
2.资源(resource)
资源是一个节点可以控制的实体,并且当节点发生故障时,这些资源能够被其它节点接管
3.事件(event)
也就是集群中可能发生的事情,例如节点系统故障、网络连通故障、网卡故障、应用程序故障等。这些事件都会导致节点的资源发生转移,HA的测试也是基于这些事件来进行的。
4.动作(action)
事件发生时HA的响应方式,动作是由shell脚步控制的,例如,当某个节点发生故障后,备份节点将通过事先设定好的执行脚本进行服务的关闭或启动。进而接管故障节点的资源
搭建RHCS环境,创建集群
准备四台主机:
主机:172.25.68.250,后面作fence,暂时不用
server1:172.25.68.1 下载ricci,luci(为了提供Conga配置用户界面),作主节点
server4:172.25.68.4 下载ricci,作副节点
server3:172.25.68.3 ,后面作iscci共享存储,暂时不用
server2:172.25.68.2 ,后面作scsi共享存储,暂时不用
需要两台主机server1和server4作为节点
server1,server4上配置高可用的yum源
vim /etc/yum.repos.d/rhel-source.repo
server1主机:
[root@server1 ~]# yum install -y ricci luci #Luci图形配置
[root@server1 ~]# /etc/init.d/ricci start
[root@server1 ~]# chkconfig ricci on #开机自启
[root@server1 ~]# /etc/init.d/luci start #开启图形
[root@server1 ~]# chkconfig luci on #开机自启
[root@server1 ~]# passwd ricci #设置图形密码
server4主机:
[root@server4 ~]# yum install -y ricci
[root@server4 ~]# /etc/init.d/ricci start
[root@server4 ~]# chkconfig ricci on
[root@server4 ~]# passwd ricci
在主机上做域名解析:
[root@foundation68 ~]# vim /etc/hosts
访问https://172.25.68.1:8084
首次访问 luci 时,网页浏览器会根据显示的自我签名 SSL 证书( luci 服务器的证书)给出具体提示。确认一个或者多个对话框后,您的网页显示器会显示 luci 登录页面。
实现负载均衡
将server2主机上的httpd传给server1
[root@server2 ~]# yum install -y openssh-clients-5.3p1-94.el6.x86_64
[root@server2 ~]# cd /etc/init/d
[root@server2 init.d]# scp httpd server1:/etc/init.d
在server1主机:
[root@server1 ~]# ip addr add 172.25.40.100/24 dev eth0
[root@server1 ~]# cd /usr/local/
[root@server1 local]# scp -r nginx/ server4:/usr/local
[root@server1 local]# cd /etc/init.d
[root@server1 init.d]# mv httpd nginx
[root@server1 init.d]# vim nginx
[root@server1 init.d]# chmod +x nginx
[root@server1 init.d]# /etc/init.d/nginx start #是否可以开启nginx,可以开启说明文件无错误
[root@server1 init.d]# /etc/init.d/nginx reload #是否可以刷新
[root@server1 init.d]# /etc/init.d/nginx stop #关闭
[root@server1 init.d]# scp nginx server4:/etc/init.d #将nginx文件传给server4
在server4主机上:
[root@server4 ~]# cd /usr/local/nginx/
[root@server4 nginx]# ls
[root@server4 nginx]# cd logs/
[root@server4 logs]# ln -s /usr/local/nginx/sbin/nginx /sbin/
[root@server4 logs]# useradd -M -d /usr/local/nginx/ nginx
[root@server4 logs]# id nginx
uid=500(nginx) gid=500(nginx) groups=500(nginx)
[root@server4 logs]# nginx #测试nginx有没有错误,是否可以启动
[root@server4 logs]# /etc/init.d/nginx stop
在网页上访问https://172.25.68.1:8084
添加资源的顺序就是启动的顺序
测试:
开启server2和server3的httpd服务
[root@server1 init.d]# clustat #查看工作节点
[root@server1 init.d]# /etc/init.d/nginx stop #停止sever1的nginx,相当于关闭server1节点
[root@server4 ~]# clustat
当server1的节点结束工作,则server4节点设备会顶替工作。但此时server1是没有坏掉,只是重启,若server4坏了,server1会继续接替工作。
Fence实现高可用
在主机上:
[root@foundation68 ~]# yum install -y fence-virtd-multicast.x86_64 fence-virtd-libvirt.x86_64 fence-virtd-serial.x86_64
[root@foundation40 ~]# fence_virtd -c #编写新的fence信息
安装fence,选择工作模式”multicast”,地址”225.0.0.12”,端口”1229”,family”ipv4”,网络interface”br0”,Backend module “libvirt”
[root@foundation40 ~]# systemctl restart fence_virtd #重新启动
[root@foundation40 ~]# netstat -anulp |grep :1229
[root@foundation40 ~]# mkdir /etc/cluster/
[root@foundation40 ~]# cd /etc/cluster/
[root@foundation40 cluster]# dd if=/dev/urandom of=fence_xvm.key bs=128 count=1 #生成128位的key
[root@foundation40 cluster]# systemctl restart fence_virtd
[root@foundation40 cluster]# scp fence_xvm.key root@server1:/etc/cluster #将key发送到套件集群服务器
[root@foundation40 cluster]# scp fence_xvm.key root@server4:/etc/cluster #将key发送到套件集群服务器
在luci(https://172.25.32.1:8084)上配置
在server4节点上做相同步骤
[root@server1 init.d]# clusvcadm -r nginx -m server1 #手动接入
[root@server4 init.d]# fence_node server1 #断开server1
发现server1自动重启
[root@server4 init.d]# echo c > /proc/sysrq-trigger #让系统崩溃 自动重启
此时server1和server4节点都会崩溃重启,再查看就可以看到server1节点重新开始工作了