linux进阶之RHCS集群套件(ricci+luci+fence_virtd)实现web访问高可用

主机环境 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集群管理

二、服务的安装配置

1.安装ricci

server1和server2每个节点都要做:

# yum install -y ricci

设置ricci用户的密码
# passwd ricci

启动并且开机自启
# /etc/init.d/ricci start
# chkconfig ricci on

2.安装luci

只在一台主机上做,我是在172.25.14.1上做

# yum install luci -y

启动luci,设置开机自启
# /etc/init.d/luci start
# chkconfig luci on

3. 创建节点

注:在做如下操作之前应在几个节点之间配置好解析
通过网页登录到管理界面来进行配置
https://172.25.14.1:8084
注:luci默认端口为8084
linux进阶之RHCS集群套件(ricci+luci+fence_virtd)实现web访问高可用_第1张图片

进入到管理服务器的luci界面,登陆时的密码是安装luci虚拟机的root密码
linux进阶之RHCS集群套件(ricci+luci+fence_virtd)实现web访问高可用_第2张图片

选择Manage Clusters,之后点击Create创建集群
linux进阶之RHCS集群套件(ricci+luci+fence_virtd)实现web访问高可用_第3张图片

添加集群及节点:

注意:
1、在「集群名称」 文本框中输入集群名称。集群名称不能超过 15 个字符。
如果集群中的每个节点都有同样的 ricci 密码,您可以选择「在所有 节 点中使用相同的密 码 」 ,这样就可在添加的节点中自动填写「密 码 」 字段。
2、在「 节 点名称」 栏中输入集群中节点的名称,并在「密 码 」 栏中为该节点输入 ricci 密码。
3、如果要在 ricci 代理中使用不同的端口,而不是默认的 11111 端口,可以更改那个参数。
4、如果不想要在创建集群时升级已经在节点中安装的集群软件软件包,请选择「使用本地安装的软 件包」 选项。如果要升级所有集群软件软件包,请选择「下 载软 件包」 选项
*5、添加完成后会发现一直在等待状态,这时查看服务器,会发现server1已经重启,这时只需要启动后再开启服务就成功添加节点了。

如果缺少任意基本集群组件(cm an、rgm anager、m odcluster 及其所有相依性软件 包),无论是选择「使用本地安装的 软件包」 ,还是「下 载软 件包」 选项,都会安装它 们。如果没有安装它们,则创建节点会失败

linux进阶之RHCS集群套件(ricci+luci+fence_virtd)实现web访问高可用_第4张图片

创建完成,如图
linux进阶之RHCS集群套件(ricci+luci+fence_virtd)实现web访问高可用_第5张图片

创建完成之后,在服务端的/etc/cluster/下会生成cluster.conf文件,查看如下:
linux进阶之RHCS集群套件(ricci+luci+fence_virtd)实现web访问高可用_第6张图片

同时查看集群的系统中每个节点以及服务的运行状态:
linux进阶之RHCS集群套件(ricci+luci+fence_virtd)实现web访问高可用_第7张图片
注:
在上面的图中,可以看到每个节点都处于“Online”状态,表明每个节点都运行正常,如果某个节点退出了集群,对应的状态应该是“Offline”,
另外,通过“ID”一列可以知道集群节点的对应关系,例如,server1在此集群中对应的就是“Node 1”节点,同理,server2对应的是“Node 2”节点。了解集群节点顺序有助于对集群日志的解读。

4. 向集群中添加fence

这里作为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

linux进阶之RHCS集群套件(ricci+luci+fence_virtd)实现web访问高可用_第8张图片
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)上的配置:

  • 登陆luci选择集群,点击Fence Devices;

linux进阶之RHCS集群套件(ricci+luci+fence_virtd)实现web访问高可用_第9张图片

_注:此时查看server1的集群信息文件/etc/cluster/cluster.conf,会发现vmfence
linux进阶之RHCS集群套件(ricci+luci+fence_virtd)实现web访问高可用_第10张图片

  • 点击Nodes,选择server1,点击界面下的”Add Fence
    Method”,输入一个自定义的server1的Fence名称,例如fence1;

linux进阶之RHCS集群套件(ricci+luci+fence_virtd)实现web访问高可用_第11张图片

  • 点击Add Fence
    Instance,选择之前设置好的vmfence,输入Domain(虚拟服务器的UUID或主机名),在另一个server2上做同样操作,名称fence2,Domain为server2的;

linux进阶之RHCS集群套件(ricci+luci+fence_virtd)实现web访问高可用_第12张图片

5. 添加服务

HA 服务是一组在统一实体中配置的集群资源,可为客户端提供指定的服务。HA服务在集群配置文件/etc/cluster/cluster.conf(在每个集群节点中)中以资源树的形式出现。在集群配置文件中,每个资源树都使用一个 XML 代表,它指定每个资源及其属性,以及在资源树中与其他资源的关系(上级、下级和平级关系)。

在资源树的上/下级关系中采用以下规则:

上级资源在下级资源之前启动。
在停止上级资源前必须停止全部下级资源。
对于正常工作的资源,其下级资源必须全部正常工作。

添加一个服务,这里以httpd为例:

在server1和server2上均配置好httpd,编写各自的网页(index.html文件);
启动启动Apache服务检测是否正常显示网页,检测完成后server1和server4均关闭httpd服务; 
// 注 : 交给集群的资源一定是屏蔽掉的,因为要交给集群去开启
  • 进入luci的集群,点击Faliover
    Domains,点击Add,输入Name,例如webfile,选中Prioritized、Restricted(只在指定节点跑)、No Failback(资源故障回切),选中下方的server1和server2的Member并输入优先级,这里server1输入1,server2输入2,就是以server1为主节点,数字越小优先级越高;

linux进阶之RHCS集群套件(ricci+luci+fence_virtd)实现web访问高可用_第13张图片

  • 点击Resources,点击Add,选择模式IP
    Address,输入IP和NETMASK,IP不能被占用,这个IP就是VIP,点击Submit;

linux进阶之RHCS集群套件(ricci+luci+fence_virtd)实现web访问高可用_第14张图片

  • 点击Resources,点击Add,选择模式Script,输入Name”apache“,并输入脚本路径”/etc/init.d/httpd“,点击Submit;

linux进阶之RHCS集群套件(ricci+luci+fence_virtd)实现web访问高可用_第15张图片

  • 点击ServiceGroups,点击Add,输入一个自定义名称,例如”apache“,选中”Automatically Start This Service“(集群自动开启)和”Run Exclusive“,选中”FailoverDomain”下刚才创建的”webfile“,”Recovery Policy”选择”Relocate“,点击下方AddResource,选择之前创建的Resources,因为有两个,所以需要添加两次,完成后点击Submit;

linux进阶之RHCS集群套件(ricci+luci+fence_virtd)实现web访问高可用_第16张图片

// 注:节点资源添加的顺序,就是启动的顺序,所以先开启VIP,然后再启动httpd,要注意!

三、测试

1. 在浏览器中输入域名(VIP),查看页面是否显示;

这里写图片描述
访问的是主节点的apache,命令行显示:
linux进阶之RHCS集群套件(ricci+luci+fence_virtd)实现web访问高可用_第17张图片

也可以用命令行进行更改:clusvcadm -r weblb -m server2 (在任意一节点更改即可)
这里写图片描述
更改结果显示:
linux进阶之RHCS集群套件(ricci+luci+fence_virtd)实现web访问高可用_第18张图片
页面访问:
这里写图片描述

2. 在server2中关闭httpd服务用clustat命令查看效果

当关闭后,等5秒钟(这个5是在故障域中设置的时间),started的主机跳到server1;
正确结果如下:
linux进阶之RHCS集群套件(ricci+luci+fence_virtd)实现web访问高可用_第19张图片

3. 关于服务开闭命令

clusvcadm -s apache //关闭httpd服务

//  注:一旦关闭,另一端自动开启

clusvcadm -e apache //打开httpd服务

4. 使用命令”echo c > /proc/sysrq-trigger“崩溃server1的内核(b,h…都有对应的操作项),并观察server1

发现server1崩溃后自动转换到server4的界面,并且server1重新启动,clustat查看server1重新started

其实server1不止是重新启动,还会自动添加到fence中,并且VIP也会自动飘过来;
在server1重新启动之后不做操作,直接将server2内核崩溃测试,发现网页自动调转到server1的界面了。

这就是故障切换。

你可能感兴趣的:(linux项目实践)