您的位置:首页 > 运维架构 > 网站架构

RHCS集群套件——Luci/Ricci实现Web高可用集群

2017-05-25 09:45 344 查看
前期准备

1.三台主机

一台安装luci和ricci

另一台安装ricci

还有一台用来安装fencd_virtd服务

我的三台的ip分别是:(三台的ip互通即可)

172.25.90.1

172.25.90.2

172.25.254.90

2.配置yum源

[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.254.90/rhel6.5/Server
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[HighAvailability]
name=HighAvailability
baseurl=http://172.25.254.90/rhel6.5/HighAvailability
enabled=1
gpgcheck=0

[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.254.90/rhel6.5/LoadBalancer
enabled=1
gpgcheck=0

[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.254.90/rhel6.5/ResilientStorage
enabled=1
gpgcheck=0

[ScalableFileSystem]
name=ScalableFileSystem
baseurl=http://172.25.254.90/rhel6.5/ScalableFileSystem
enabled=1
gpgcheck=0


集群中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

每个节点都要做:

# yum install -y ricci

设置ricci用户的密码

# passwd ricci

启动并且开机自启

# /etc/init.d/ricci start

# chkconfig ricci on

2.安装luci

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

# yum install luci -y

启动luci,设置开机自启

# /etc/init.d/luci start

# chkconfig luci on

通过网页登录到管理界面来进行配置
https://172.25.90.1:8084
用安装luci的root用户登录



警告信息直接OK



创建cluster,Node Name写节点的主机名即可,密码就是ricci用户的密码



clustat命令:



clustat用来查看集群系统中每个节点以及服务的运行状态,

   -i  :包时每3秒刷新一词集群状态

 在上面的图中,可以看到每个节点都处于“Online”状态,表明每个节点都运行正常,如果某个节点退出了集群,对应的状态应该是“Offline”,同时还可以看到,集群的一个服务apache处于“started”状态,运行在server1节点。

 另外,通过“ID”一列可以知道集群节点的对应关系,例如,server1在此集群中对应的就是“Node 1”节点,同理,server2对应的是“Node 2”节点。了解集群节点顺序有助于对集群日志的解读。

3.安装fence_virtd服务

我的fence_virtd服务安装在172.25.254.90

yum安装以下三个安装包







交互式配置fence文件

[root@desktop24 cluster]#
fence_virtd   -c

Module search path[/usr/lib64/fence-virt]:

//模块搜索路径,回车使用默认的

Available backends:

   libvirt 0.1

Available listeners:

   multicast 1.1

 

Listener modules are responsible foraccepting requests

from fencing clients.

 

Listener module [multicast]:


//监听组播模块,回车选择默认

The multicast listener module is designedfor use environments

where the guests and hosts may communicateover a network using

multicast.

 

The multicast address is the address that aclient will use to

send fencing requests to fence_virtd.

 

Multicast IP Address[225.0.0.12]:

组播IP地址选择,回车选择默认的225.0.0.12

Using ipv4 as family.

 

Multicast IP Port [1229]:


//组播IP端口选择,回车选择默认的1229

Setting a preferred interface causes fence_virtdto listen only

on that interface.  Normally, it listens on all interfaces.

In environments where the virtual machinesare using the host

machine as a gateway, this *must* be set(typically to virbr0).

Set to 'none' for no interface.

 

Interface [none]: private

//Fence卡使用那个接口来和集群网络来通讯(fence卡的专用接口和集群网络在同一网段)

The key file is the shared key informationwhich is used to

authenticate fencing requests.  The contents of this file must

be distributed to each physical host andvirtual machine within

a cluster.

 

Key File[/etc/cluster/fence_xvm.key]:

//是否是对/etc/cluster/fence_xvm.key这个文件做策略,回车选择默认的

Backend modules are responsible for routingrequests to

the appropriate hypervisor or managementlayer.

 

Backend module [checkpoint]:libvirt

//模块基于那个协议,填写libvirt

The libvirt backend module is designed forsingle desktops or

servers. Do not use in environments where virtual machines

may be migrated between hosts.

 

Libvirt URI [qemu:///system]:


 

Configuration complete.

 

=== Begin Configuration ===

backends {

         libvirt{

                   uri= "qemu:///system";

         }

 

}

 

listeners {

         multicast{

                   interface= "eth0";

                   port= "1229";

                   family= "ipv4";

                   address= "225.0.0.12";

                   key_file= "/etc/cluster/fence_xvm.key";

         }

 

}

 

fence_virtd {

         module_path= "/usr/lib64/fence-virt";

         backend= "libvirt";

         listener= "multicast";

}

 

=== End Configuration ===

Replace
/etc/fence_virt.confwith the above [y/N]? y


//输入y保存配置

 

启动fence服务:

[root@desktop24 cluster]#
/etc/init.d/fence_virtd  restart

Stopping fence_virtd:                                      [FAILED]

Starting fence_virtd:                                      [  OK  ]

fence_xvm.key:Fence卡的key文件,名字别改,fence_xvm是fence卡的一种类型

/etc/cluster/fence_xvm.key需要我们自建手动创建生成

# mkdir /etc/cluster

# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1

key生成好之后,给每个节点发送到结点的/etc/cluster目录下

4.登录到集群管理界面上添加fence设备





每个节点的cluster.conf需要同步,所以在每次点击submit会缓冲一段时间,从下面的图我们可以看出来fence设备已经添加进去了



给每个节点添加fence





添加fence设备时,Domain那一栏写可以区别各个节点的内容,可以是主机名,也可是唯一的标示符,我的是虚拟机的UUID



其他节点也做一样的操作

5.Failover Domains

Failover Domains就是失效率、优先级的意思

在集群坏境中,有个问题就是1机器先启动服务还是2机器先启动服务,通过设置Failover Domains来解决,数字越低,优先级越高,这个机器就先启动服务。





6.创建资源

先创建一个vip资源



创建apache资源





7.添加Serice Group

在每个节点上面配置httpd服务:

# yum install -y httpd

# echo server1 > /var/www/html/index.html

server2上的发布页写server2

注意httpd服务不要手动开启

然后到网页上配置:



添加资源:添加我们刚刚创的两个资源





实验:httpd服务本来在server1上运行,我们关掉server1上的httpd服务,

# killall httpd



现在我们可以看到集群的httpd服务迁移到了server2上



我们来看server2的ip,可以看到网卡eth0上多了一个ip地址17225.0.100/24,这就是我们刚配置的vip

我们再来实验,如果server2挂了,这时候会发生什么?

# cd /proc/

# echo c > sysrq-trigger                   ##让内核发生故障,也就是让server2挂掉

然后我们用网页来访问vip,发现服务迁移到了server1上



我们通过clustat查看集群的状态,发现apache服务现在是运行在server1上



推荐阅读:

RHCS集群理论暨最佳实践:http://369369.blog.51cto.com/319630/836001/

RHCS(概念篇):http://blog.chinaunix.net/uid-26931379-id-3558604.html

手把手让你了解linux上集群原理篇【图解】:http://freeze.blog.51cto.com/1846439/388957
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: