高可用集群之RHCS

时间:2021-07-18 01:30:07

集群

高可用集群是指以减少服务中断时间为目的的服务器集群技术。它通过保护用户的业务程序对外不间断提供的服务,把因软件/硬件/人为造成的故障对业务的影响降低到最小程度。高可用集群的应用系统有多样化发展趋势,用途也越来越多样化,同时带来了配置及可操作性方面的复杂性,因此选择好的高可用软件至关重要。

配置环境

集群节点:
vm1 内存1024 server1:172.25.32.1/24
vm4 内存1024 server2:172.25.32.4/24

系统:linux redhat6.5
selinux:disabled
火墙:保持关闭

管理员主机配置

server1:
先关闭 nginx php 服务

(1)server1 & 4 都做:
vim /etc/yum.repos.d/rhel-source.repo ##配置完整的yum源

[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.32.250/rhel6.5
gpgcheck=0

[HighAvailability]
name=HighAvailability
baseurl=http://172.25.32.250/rhel6.5/HighAvailability
gpgcheck=0

[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.32.250/rhel6.5/LoadBalancer
gpgcheck=0

[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.32.250/rhel6.5/ResilientStorage
gpgcheck=0

[ScalableFileSystem]
name=ScalableFileSystem
baseurl=http://172.25.32.250/rhel6.5/ScalableFileSystem
gpgcheck=0

yum clean all
yum repolist
scp /etc/yum.repos.d/rhel-source.repo server4:/etc/yum.repos.d/
yum install ricci -y
passwd ricci ##设置密码
/etc/init.d/ricci start ##开启服务
chkconfig ricci on ##设置开机启动

(2)只有server1(172.25.32.1):
yum install luci
/etc/init.d/luci start ##开启集群
chkconfig luci on ##设置开机启动

(3)
https://172.25.32.1:8084
创建节点
登陆:系统用户和密码,普通用户也可以登陆,但需要授权
高可用集群之RHCS
创建集群,之后等待5分钟左右
高可用集群之RHCS

高可用集群之RHCS
点击节点查看状态
高可用集群之RHCS

高可用集群

配置fence

(1)物理机:
yum install fence-virtd-multicast fence-virtd-libvirt -y
rpm -qa|grep fence ##查看系统安装的fence包

需要的包:
fence-virtd-multicast-0.3.2-2.el7.x86_64
libxshmfence-1.2-1.el7.x86_64
fence-virtd-0.3.2-2.el7.x86_64
fence-virtd-libvirt-0.3.2-2.el7.x86_64

fence_virtd -c ##fence初始化设置

[root@foundation60 yum.repos.d]# fence_virtd -c
Module search path [/usr/lib64/fence-virt]: ##模块路径[]里面表示默认选项,默认

Available backends:
libvirt 0.1
Available listeners: ##监听的端口,这里显示两个
multicast 1.2

Listener module [multicast]: ##监听模块,默认multicast

Multicast IP Address [225.0.0.12]: ##监听ip,默认225.0.0.12

Multicast IP Port [1229]: ##监听端口,默认1229

Interface [virbr0]: br0 ##接口,设置br0(为了连接虚拟机)

Key File [/etc/cluster/fence_xvm.key]: ##key文件目录,默认

Backend module [libvirt]: ##后端模块,默认

Replace /etc/fence_virt.conf with the above [y/N]? y ##覆盖配置文件

mkdir /etc/cluster ##创建key目录
dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1 ##制作key,/dev/urandom是随机数文件
systemctl start fence_virtd.service ##开启fence
netstat -anulp | grep :1229 ##查看fence的端口1229
##复制key到server1 & 4
scp fence_xvm.key server1:/etc/cluster/
scp fence_xvm.key server4:/etc/cluster/

(2)配置fence
server1:
/etc/init.d/ricci start
chkconfig ricci on
/etc/init.d/luci on
/etc/init.d/luci start
chkconfig luci on

server4:
/etc/init.d/ricci start
chkconfig ricci on
/etc/init.d/luci on
/etc/init.d/luci start
chkconfig luci on

浏览器https://172.25.32.1
添加fence
高可用集群之RHCS
然后在nodes里添加fence
高可用集群之RHCS

高可用集群之RHCS
添加vm1的UUID
高可用集群之RHCS
之后配置server4的节点

配置完成后
server1 & 4:
cat /etc/cluster/cluster.conf

[root@server1 ~]# cat /etc/cluster/cluster.conf 
<?xml version="1.0"?>
<cluster config_version="9" name="hello_fairy">
<clusternodes>
<clusternode name="server1" nodeid="1">
<fence>
<method name="server1">
<device domain="10d29d3d-5067-4e4e-a04d-2ac9dc574fbc" name="vmfence"/> ##server1的UUID
</method>
</fence>
</clusternode>
<clusternode name="server4" nodeid="2">
<fence>
<method name="server4">
<device domain="b408612a-1d22-469d-9c3a-85e36695af8e" name="vmfence"/> ##server4的UUID

</method>
</fence>
</clusternode>
</clusternodes>
<cman expected_votes="1" two_node="1"/>
<fencedevices>
<fencedevice agent="fence_xvm" name="vmfence"/>
</fencedevices>
</cluster>

(3)测试
server1:
fence_node server4 ##使server4直接跳电

server4:
ip link set eth0 down ##网卡关闭

高可用服务接管

(1)网页配置
配置资源(http)
高可用集群之RHCS

添加资源
(1)添加ip资源
高可用集群之RHCS
(2)以脚本的方式
高可用集群之RHCS

高可用集群之RHCS

创建service组
高可用集群之RHCS
之后点击Add Resource 添加资源 ,这里优先添加虚拟ip,再添加脚本服务
(2)测试:
server1:
/etc/init.d/httpd stop

clusvcadm -d apache ##关闭服务
clusvcadm -e apache ##开启服务

server4:
echo c > /proc/sysrq-trigger

文件系统ext4(单节点)

首先给虚拟机vm2添加硬盘设备/dev/vdb
(1)
server2(iscsi):
yum install scsi-* -y
vim /etc/tgt/targets.conf ##编辑配置文件

<target iqn.2017-7.com.example:server.target1>
backing-store /dev/vdb
initiator-address 172.25.32.1
initiator-address 172.25.32.4
</target>

/etc/init.d/tgtd start
tgt-admin -s ##查看target

server1 & 4:
yum install -y iscsi-*
iscsiadm -m discovery -t st -p 172.25.32.2
iscsiadm -m node -l ##iscsi登陆

只有server1(luci端):
fdisk -l ##查看是否有/dev/sda
fdisk -cu /dev/sda ##分区
fdisk -l
##lvm
pvcreate /dev/sda1
vgcreate clustervg /dev/sda1
lvcreate -L +2G -n demo clustervg
###如果出现错误,则是同步不成功,则同步后重启即可
pvs & vgs & lvs ##server1&4都查看是否同步,
cat /proc/partitions ##查看内核信息,查看server1和server4是否一样
mkfs.ext4 /dev/clustervg/demo ##格式化文件系统
mount /dev/clustervg/demo /var/www/html/ ##挂载
网页添加ext4文件系统
添加资源
高可用集群之RHCS

service配置:
1虚拟ip 2文件资源 3脚本httpd
(2)测试
clusvcadm -d apache ##停止apache
clusvcadm -e apache ##启动
[root@server4 ~]# clusvcadm -r apache -m server1 ##将apache发送到server1

gfs2文件系统共享集群存储(同步更新)

(1)停止apache服务
网页
remove ext4
clusvcadm -d apache

(2)
server1:
clusvcadm -d apache ##停止apache
mkfs.gfs2 -j 3 -p lock_dlm -t hello_fairy:mygfs2 /dev/clustervg/demo ##格式化为gfs2文件系统,-j表示日志数量,-p表示加密类型,-t表示集群名称
mount /dev/clustervg/demo /var/www/html/ ##挂载
cd /var/www/html ##进入目录会发现没有文件
vim index.html ##默认发布页
vim /etc/fstab ##开机启动

UUID=e6f73995-aca6-b7a3-ac22-29bc9768679f   /var/www/html   gfs2    _netdev,defaults    0 0

mount -a

server1 | 4:
mount /dev/clustervg/demo /var/www/html/
cd /var/www/html/
ll ##会发现有编辑过的页面
vim index.html ##在server4编辑在server1也可以同步
gfs2_tool sb /dev/clustervg/demo all ##查看gfs2文件系统参数
gfs2_tool journals /dev/clustervg/demo ##日志查看
gfs2_jadd -j 3 /dev/clustervg/demo ##添加日志
vim /etc/fstab ##server4也要编辑开机启动
lvextend -l +1023 /dev/clustervg/demo ##lv扩展
lvextend -L +2G /dev/clustervg/demo
lvs ##查看lv
vgs
gfs2_grow /dev/clustervg/demo ##文件系统同步扩展
df -h
clusvcadm -e apache ##开启apache

卸载

网页:
leave delete

server1 & 4:
clusvcadm -d apache
umount /var/www/html/
vim /etc/fstab ##删除开机自启
lvremove /dev/clustervg/demo
vgremove clustervg
pvremove /dev/sda1
iscsiadm -m node -u
iscsiadm -m node -o delete
chkconfig modclusterd off
chkconfig ricci off
chkconfig luci off
chkconfig cman off

server2:
/etc/init.d/tgtd stop