一.RHCS
RHCS(Red Hat Cluster Suite红帽集群套件),是多组合的软件套件,在部署时采用不同的配置,以满足对高可用性,负载均衡,可扩展性,文件共享的需求。
ricci:安装在集群的节点的接收来自 luci 管理请求的代理,端口=11111
luci:提供了管理 rhcs 集群的 图形 界面, luci 管理集群主要是通过跟 ricci 通信来完成的,端口=8084
二.nginx集群的部署
实验环境:node1:server1_IP:172.25.78.1 node2:server_IP:172.25.78.4
1.ricci和luci的安装以及配置
(1)在node1和node2安装ricci并且开启服务
(2)在node1上安装luci集群的图形管理界面
(3)ricci需要设置节点的密码
(4)在node1开启luci(可以通过节点1的8084端口访问,但要注意是https加密)
(5)在node1和node2上把luci以及ricci开机自启(防止后面做fence的时候,节点不能启动)
2.测试node1节点上的luci(https是加密的要获取证书https://172.25.78.1:8084)
(1)登陆luci
(2)以超级用户root登陆,密码是node1的root用户密码
3.配置集群的节点和fence设备
(1)创建集群(密码是之前设定的ricci的密码)
cluster name ##集群的名称
download packages ##下载所需的软件包并且安装
reboot node before joining cluster ##节点加入集群后重启
enable shared storage support ##支持存储共享(后面要做mysql的存储共享)
(2)添加节点server1和server4(节点之后会重启再次加入集群)
(3)添加fence设备(虚拟机做节点,选择多播模式,设置fence名称xvmfence)
(4)点击Nodes把server1和server4加入fence设备
cman:分布式集群管理
rgmanager:资料组管理器
clvmd:集群化的lvm逻辑卷
(5)用kvm来做fence设备(fence能防止脑裂,也就是两个节点争夺资源,其中一个节点损坏直接切断电源)
libvirtd服务一定要开启
物理机安装:fence-virtd-multicast fence-virtd-libvirt fence-virt
fence_virtd -c ##创建隔离设备
interface ##虚拟机和物理机的通信接口是br0
/etc/cluster/fence_xvm.key ##生成密钥的位置
把密钥发送给两个节点和物理机建立连接
重启fence_virtd服务
(6)clustat ##查看当前节点的状态(两个节点都在线而且正常)
cat /etc/cluster/cluster.conf ##集群的配置文件
(7)fence隔离设备的测试(在节点server1上fence掉server4,fence设置成功)
4.配置集群的失效域(也就是节点的优先级等详细信息)
prioritized ##一个节点失效另一个接管
restricted ##服务只能在特定的节点上运行
NO Faliback ##节点接管服务后一直接管,即使之前的节点恢复正常
priority ##优先级,数字越小,优先级越大
5.配置集群的资源
(1)添加虚拟IP
(2)添加集群索控制的服务脚本(服务名称,服务在节点上的绝对路径,只要在/etc/init.d/目录下有的服务几乎都可以搭建集群,如果是自己写的脚本记得加执行权限,否则集群不能开启)
6.把资源添加进集群(没有存储时,资源的添加顺序:服务——>VIP——>服务脚本;有共享存储先加存储,再挂VIP)
Recovery policy Relocate ##恢复的方式,重新添加
三.测试web集群
(1)节点正常在线,web服务已经运行在server4上(不用添加VIP,集群开启后自己添加)
clusvcadm -d web ##关闭web集群
clusvcadm -e web ##开启web集群
本来server1的优先级高,在server4开启集群web后,server1上的vip就会漂移到server4
(2)通过/proc/sysrq-trigger 控制主机
echo "b" > /proc/sysrq-trigger # 立即重新启动计算机
echo "o" > /proc/sysrq-trigger # 立即关闭计算机
echo "m" > /proc/sysrq-trigger # 导出内存分配的信息 (可以用/var/log/message 查看)
echo "p" > /proc/sysrq-trigger # 导出当前CPU寄存器信息和标志位的信息
echo "t" > /proc/sysrq-trigger # 导出线程状态信息
echo "c" > /proc/sysrq-trigger # 故意让系统崩溃
echo "s" > /proc/sysrq-trigger # 立即重新挂载所有的文件系统
echo "u" > /proc/sysrq-trigger # 立即重新挂载所有的文件系统为只读
(3)echo "c" > /proc/sysrq-trigger # 故意让系统崩溃,节点通过fence设备正常恢复
四.nginx的7层负载(实现负载均衡)
(1)vim /usr/local/nginx/conf/nginx.conf
后端apache服务器serevr2和server3,本机的回环接口也开8080的apache端口做为报错页面,当两台后端服务都挂掉,本机接管
默认算法轮询
server name 维护的域名
(2)测试
在物理机作本地解析
轮询访问
五.基于mysql的存储共享(iscsi)
1.iscsi和mysql的安装以及部署
(1)安装iscsi在存储使用端server1和server4
(2)安装scsi的服务端在server2,提供存储
(3)安装mysql在server1和server4
(4)server2磁盘服务端开启tgtd服务
vim /etc/tgt/targets.conf ###tgtd的配置文件,指定磁盘使用者IP
(5)tgt-admin -s ##查看分享的磁盘详情
格式化未ext4文件格式
(6)登陆共享磁盘
查看 cd /var/lib/iscsi/nodes/ 有没有分享的节点
(7)测试磁盘共享是否成功
server1挂载分享的磁盘sda1 到/mnt,并且创建文件
server4也挂载共享磁盘能查看文件,磁盘共享成功
(8)mysql的数据路径在/var/lib/mysql,把/dev/sda1挂载到/var/lib/mysql,并且修改所属用户和组,这样mysql才能读写
(9)在luci图形界面添加存储共享
添加mysql的脚本资源
(10)mysql集群成功创建
VIP和磁盘资源都会在集群启动后自动添加,挂载
(11)可以挂载逻辑卷,这样可以在磁盘不够用时,拉伸磁盘
模拟环境:之前创建了2G的磁盘空间,现在不够用了
拉伸逻辑卷空间(vg不够用了,只能再次创建pv)
拉伸逻辑卷后,拉伸设备
六.也能采用GFS2共享存储
gfs2:GFS是Red Hat开发的一套集群文件系统,GFS文件系统允许多个服务同时读写一个磁盘分区,通过GFS可以实现数据的集中管理,免去了数据同步和复制的麻烦,但GFS并不能孤立的存在,安装GFS需要RHCS的底层组件支持。
mkfs.gfs2 -j 3 -p lock_dlm 集群名称:当前集群唯一 /dev/sda1 ##格式化未gfs2格式
-j: 指定日志区域的个数,有几个就能够被几个几点挂载
gfs2_tool journals /mnt 查看节点日志信息
共享存储----->VIP----->script (一定先添加存储)
写在/etc/fstab中开机自动挂载(gfs2是通过网络来读写,要设置_netdev,提示系统先开启网络在挂存储,否则主机不能开启)