主机环境 RedHat6.5 64位
实验环境 服务端1 ip 172.25.14.1 主机名:server1 ricci luci(为了提供Conga配置用户界面)
服务端2 ip 172.25.14.2 主机名:server2 ricci
管理端2 ip 172.25.14.2 fence_virtd
防火墙状态:关闭
参考文档:
https://blog.csdn.net/xayddxjsjxywuhui/article/details/72677547
https://www.linuxidc.com/Linux/2016-10/135979.htm
https://blog.csdn.net/mon_star/article/details/78121705
集群中luci的作用:
luci是用来配置和管理集群,监听在8084上
集群中ricci的作用:
ricci是安装在每个后端的每个节点上的,luci管理集群上的各个节点就是通过和节点上的ricci进行通信,ricci监听在11111上
集群中fence的作用:
在HA集群坏境中,备份服务器B通过心跳线来发送数据包来看服务器A是否还活着,主服务器A接收了大量的客户端访问请求,服务器A的CPU负载达到100%响应不过来了,资源已经耗尽,没有办法回复服务器B数据包(回复数据包会延迟),这时服务器B认为服务器A已经挂了,于是备份服务器B把资源夺过来,自己做主服务器,过了一段时间服务器A响应过来了,服务器A觉得自己是老大,服务器B觉得自己也是老大,他们两个就挣着抢夺资源,集群资源被多个节点占有,两个服务器同时向资源写数据,破坏了资源的安全性和一致性,这种情况的发生叫做“脑裂”。服务器A负载过重,响应不过来了,有了Fence机制,Fence会自动的把服务器A给Fence掉,阻止了“脑裂”的发生
FENCE的工作原理是:当意外原因导致主机异常或者宕机时,备机会首先调用FENCE设备,然后通过FENCE设备将异常主机重启或者从网络隔离,当FENCE操作成功执行后,返回信息给备机,备机在接到FENCE成功的信息后,开始接管主机的服务和资源。这样通过FENCE设备,将异常节点占据的资源进行了释放,保证了资源和服务始终运行在一个节点上。
Fence分类:
硬件Fence:电源Fence,通过关掉电源来踢掉坏的服务器
软件Fence:Fence卡(智能卡),通过线缆、软件来踢掉坏的服务器
第二种分法:
内部FENCE:IBM RSAII卡,HP的iLO卡,还有IPMI的设备等
外部FENCE:UPS、SAN SWITCH、NETWORK SWITCH等
实际坏境中,Fence卡连接的都是专线,使用专用的Fence网卡,不会占用数据传输线路,这样,更能保证稳定及可靠性。
Fence卡的IP网络和集群网络是相互依存的
详细配置可以查看:红帽企业版Linux6集群管理
server1和server2每个节点都要做:
# yum install -y ricci
设置ricci用户的密码
# passwd ricci
启动并且开机自启
# /etc/init.d/ricci start
# chkconfig ricci on
只在一台主机上做,我是在172.25.14.1上做
# yum install luci -y
启动luci,设置开机自启
# /etc/init.d/luci start
# chkconfig luci on
注:在做如下操作之前应在几个节点之间配置好解析
通过网页登录到管理界面来进行配置
https://172.25.14.1:8084
注:luci默认端口为8084
进入到管理服务器的luci界面,登陆时的密码是安装luci虚拟机的root密码
选择Manage Clusters,之后点击Create创建集群
添加集群及节点:
注意: 1、在「集群名称」 文本框中输入集群名称。集群名称不能超过 15 个字符。 如果集群中的每个节点都有同样的 ricci 密码,您可以选择「在所有 节 点中使用相同的密 码 」 ,这样就可在添加的节点中自动填写「密 码 」 字段。 2、在「 节 点名称」 栏中输入集群中节点的名称,并在「密 码 」 栏中为该节点输入 ricci 密码。 3、如果要在 ricci 代理中使用不同的端口,而不是默认的 11111 端口,可以更改那个参数。 4、如果不想要在创建集群时升级已经在节点中安装的集群软件软件包,请选择「使用本地安装的软 件包」 选项。如果要升级所有集群软件软件包,请选择「下 载软 件包」 选项 *5、添加完成后会发现一直在等待状态,这时查看服务器,会发现server1已经重启,这时只需要启动后再开启服务就成功添加节点了。
如果缺少任意基本集群组件(cm an、rgm anager、m odcluster 及其所有相依性软件 包),无论是选择「使用本地安装的 软件包」 ,还是「下 载软 件包」 选项,都会安装它 们。如果没有安装它们,则创建节点会失败
创建完成之后,在服务端的/etc/cluster/下会生成cluster.conf文件,查看如下:
同时查看集群的系统中每个节点以及服务的运行状态:
注:
在上面的图中,可以看到每个节点都处于“Online”状态,表明每个节点都运行正常,如果某个节点退出了集群,对应的状态应该是“Offline”,
另外,通过“ID”一列可以知道集群节点的对应关系,例如,server1在此集群中对应的就是“Node 1”节点,同理,server2对应的是“Node 2”节点。了解集群节点顺序有助于对集群日志的解读。
这里作为fence的是我们的主机,172.25.14.250
1)安装软件fence-virtd-multicast、fence-virtd、fence-virtd-libvirt;
2)fence_virtd -c编写新的fence信息
安装fence,选择工作模式”multicast”,地址”225.0.0.12”,端口”1229”,family”ipv4”,网络interface”br0”,Backend
module “libvirt”;
// 注:这里br0是因为虚拟服务器受主机控制的网卡是br0
3)生成128位的key,并将key发送到套件集群服务器(server1,server2)的/etc/cluster目录下,可以用file命令查看这个key类型是数据
[root@sunshine ~]# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1
4)重新启动fence_virtd;
5)在luci(https://172.25.14.1:8084)上的配置:
_注:此时查看server1的集群信息文件/etc/cluster/cluster.conf,会发现vmfence
HA 服务是一组在统一实体中配置的集群资源,可为客户端提供指定的服务。HA服务在集群配置文件/etc/cluster/cluster.conf(在每个集群节点中)中以资源树的形式出现。在集群配置文件中,每个资源树都使用一个 XML 代表,它指定每个资源及其属性,以及在资源树中与其他资源的关系(上级、下级和平级关系)。
在资源树的上/下级关系中采用以下规则:
上级资源在下级资源之前启动。 在停止上级资源前必须停止全部下级资源。 对于正常工作的资源,其下级资源必须全部正常工作。
添加一个服务,这里以httpd为例:
在server1和server2上均配置好httpd,编写各自的网页(index.html文件);
启动启动Apache服务检测是否正常显示网页,检测完成后server1和server4均关闭httpd服务;
// 注 : 交给集群的资源一定是屏蔽掉的,因为要交给集群去开启
// 注:节点资源添加的顺序,就是启动的顺序,所以先开启VIP,然后再启动httpd,要注意!
也可以用命令行进行更改:clusvcadm -r weblb -m server2 (在任意一节点更改即可)
更改结果显示:
页面访问:
当关闭后,等5秒钟(这个5是在故障域中设置的时间),started的主机跳到server1;
正确结果如下:
clusvcadm -s apache //关闭httpd服务
// 注:一旦关闭,另一端自动开启
clusvcadm -e apache //打开httpd服务
发现server1崩溃后自动转换到server4的界面,并且server1重新启动,clustat查看server1重新started
其实server1不止是重新启动,还会自动添加到fence中,并且VIP也会自动飘过来;
在server1重新启动之后不做操作,直接将server2内核崩溃测试,发现网页自动调转到server1的界面了。
这就是故障切换。