实验准备:两台redhat6.5的虚拟机server1 172.25.20.1 server4 172.25.20.4,一台安装fence_virtd的物理机
一.使用集群管理工具ricci和集群图形化工具luci搭建集群
1.两台虚拟机分别配置yum源,添加高可用性、负载均衡、存储、文件系统
cd /var/www/html/rhel6.5
ls
vim /etc/yum.repos/rhel-sorce.repo
HighAvailability是高可用相关软件包,LoadBalancer是负载均衡相关软件包。
yum repolist 查看
2.server1安装ricci,luci
server4 安装 ricci,
ricci安装完成后,passwd ricci设置密码
luci和ricci搭建在一个虚拟机里,luci服务也需要开机自启动 chkconfig luci on
/etc/init.d/ricci start
chkconfig ricci on
3.创建节点:
Luci服务的端口是8084,https协议访问。
浏览器输入 https://172.25.20.1:8084
create new cluster
cat /etc/cluster/cluster.conf
clustat
二、Fence机制
当集群其中节点网络出现故障,互相之间无法通信,会以为对方出现故障,从而都会接管资源,此时出现资源争抢。Fence机制是直接将故障节点掉电。防止资源争抢
1.安装fence_virtd
fence_virtd -c
Module search path [/usr/lib64/fence-virt]:
Listener module [multicast]: ##多播
Multicast IP Address [225.0.0.12]: ##多播ip
Multicast IP Port [1229]: ##多播端口号
Interface [br0]:
Key File [/etc/cluster/fence_xvm.key]: ##key文件路径
Backend module [libvirt]:
Configuration complete.
=== Begin Configuration ===
fence_virtd {
listener = “multicast”;
backend = “libvirt”;
module_path = “/usr/lib64/fence-virt”;
}
listeners {
multicast {
key_file = “/etc/cluster/fence_xvm.key”;
address = “225.0.0.12”;
interface = “br0”;
family = “ipv4”;
port = “1229”;
}
}
backends {
libvirt {
uri = “qemu:///system”;
}
}
=== End Configuration ===
生成key文件
systemctl
scp /etc/cluster/fence_xvm.key root@172.25.20.1:/etc/cluster/
scp /etc/cluster/fence_xvm.key root@172.25.20.4:/etc/cluster/
systemctl restart fence_virted
5.创建fence设备
浏览器输入 https://172.25.20.1:8084
选择Nodes server1
Domain为server1uuid
server4同理.
cat /etc/cluster/cluster.conf 可查看fence设置
测试一,直接fence server1,server4会接管集群资源,server1断电后,重新启动。
[root@server4 ~]# fence_node server1
测试二,down掉server1的虚拟网卡eth0,fence机制检测到server1网络有问题,server4接管集群资源,server1断电,重新启动。
[root@server1 ~]# ip link set eth0 down
三.集群的故障转移域
1.failover domains,Prioritized,设定集群节点优先级;Pestricted,指定在特定的节点上运行服务;No Failback,不回切机制,当故障节点恢复后,集群资源不回切。
2.给集群添加VIP资源,全局。resource,设置虚拟ip
3.给集群添加httpd服务,全局。必须为节点中已经存在的服务或自定义脚本
4.给集群创建一个服务组,并添加VIP资源和httpd资源service group
5.测试:
server1和server4均安装httpd
yum install -y httpd
clustat
ip addr #server1优先级高,vip在server1上
server1/etc/init.d/httpd stop
#集群健康检查,server4接管服务
echo c > /proc/sysrq-trigger使server4内核发生故障
server1 /etc/init.d/httpd start #server1重新接管服务
server1,server4编写/var/www/html/index.html 后,
浏览器输入 虚拟ip 172.25.20.100 即可访问正在工作的虚拟机发布页