Linux运维——Rhcs套件实现负载均衡高可用集群配置(luci+ricci+fence)

一、RHCS介绍

1 .集群:

是指一组相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点都是运行各自服务的独立服务器,这些服务器之间可以彼此通信,协同向用户提供应用程序,系统资源和数据,并以单一系统的模式加以管理。

2.RHCS 集群组成:

1) 集群架构管理器

这是RHCS 集群的一个基础套件,提供您一个集群的基本功能,使各个节点组成的集群在一起工作,具体包含分布式集群管理器(CMAN),成员关系管理、锁管理(DLM)配置文件管理(CCS)、栅设备(FENCE)

2 )高可用服务管理器

提供节点服务监控和服务故障转移,当一个节点服务出现故障时,将服务转移到另一个健康的节点上。

3 )集群配置管理工具

通过LUCI 来管理和配置RHCS集群,LUCI是一个基于web的集群配置方式,通过luci可以轻松的搭建一个功能强大的集群系统,节点主机可以使用ricci来和luci 管理段进行通信

4) Linuxvirtualserver

LVS 是一个开源的负载均衡软件,利用LVS 可以将客户端的请求根据指定的负载策略和算法合理分配到各个节点,实现动态、智能的负载分担。

5) RedHatGS(globalfilesystem)

GFS 是Redhat公司开发的一款集群文件系统,目前最新的版本是GFS2,GFS文件系统允许多个服务同时读写一个磁盘分区,通过GFS可以实现数据的集中管理,免去了数据同步和拷贝的麻烦,但GFS不能独立存在,需要RHCS的底层组件支持

6) clusterlogicalvolumemanger

CLuster 逻辑卷管理,及CLVM,是LVM的扩展,这种允许cluster 中的机器使用LVM来管理共享存储

7) ISCSI

是一种在Internet协议上,特别是以太网上进行数据传输的标准,他是一种基于IPstorage理论的新型存储技术,RHCS可以通过ISCSI技术来导出和分配共享存储的使用。

3.RHCS集群运行原理及功能介绍

1 )分布式集群管理器(CMAN)

它运行在各个节点上,为RHCS提供集群管理任务

CMAN 用于管理集群成员、消息和通知。他通过监控每个节点的运行状态来了解节点成员之间的关系,当节点出现故障时,CMAN及时将这种改变通知底层,进而做出相应的调整

2 )锁管理(DLM)

表示一个分布式锁管理器,他是RHCS的一个底层基础构建,同时也为集群提供了一个公用的锁运行机制,在RHCS中,DLM运行在集群的每个节点上,GFS通过锁管理机制来同步访问数据系统元数据,CLVM通过锁管理其来同步更新数据到LVM卷和逻辑卷, DLM 不需要设定锁骨哪里服务器,它采用对等的锁管理方式,大大提高了处理性能,同时,DLM避免了当单个节点失败需要整体恢复的性能瓶颈,另外,DLM的请求都是本地的,不需要网络请求,因而请求会立即生效,最后,DLM通过分层机制,可以实现多个锁空间的并行管理模式

3 )配置文件管理(CCS)

ClusterConfigurationSystem,简称CCS,主要用于集群配置文件管理和配置文件在节点之间的同步。有时候,luci管理界面可能由于网络等方面的以素并不是那么畅快,CCS就显得很必要了。CCS运行在集群的每个节点上,监控每个集群节点上的单一配置文件/etc/cluster/cluster.conf的状态,当这个文件发生任何变化时,

都将此变化更新到集群中的每个节点,时刻保持每个节点的配置文件同步。例如

,管理员在节点A上更新了集群配置文件,CCS发现A节点的配置文件发生变化后,

马上将此变化传播到其它节点上去。

rhcs的配置文件是cluster.conf,它是一个xml文件,具体包含集群名称、

集群节点信息、集群资源和服务信息、fence设备等

4)栅设备(FENCE)

FENCE设备是RHCS集群中必不可少的一个组成部分,通过FENCE设备可以避免因出现不可预知的情况而造成的“脑裂”现象,FENCE设备的出现,就是为了解决类似这些问题,Fence设备主要就是通过服务器或存储本身的硬件管理接口,或者外部电源管理设备,来对服务器或存储直接发出硬件管理指令,将服务器重启或关机,或者与网络断开连接。

FENCE的工作原理是:当意外原因导致主机异常或者宕机时,备机会首先调用FENCE设备,然后通过FENCE设备将异常主机重启或者从网络隔离,当FENCE操作成功执行后,返回信息给备机,备机在接到FENCE成功的信息后,开始接管主机的服务和资源。这样通过FENCE设备,将异常节点占据的资源进行了释放,保证了资源和服务始终运行在一个节点上。

RHCS的FENCE设备可以分为两种:内部FENCE和外部FENCE,常用的内部FENCE有IBMRSAII卡,HP的iLO卡,还有IPMI的设备等,外部fence设备有UPS、SANSWITCH、NETWORKSWITCH等

5)高可用服务管理器(rgmanager)

高可用性服务管理主要用来监督、启动和停止集群的应用、服务和资源。它提供了一种对集群服务的管理能力,当一个节点的服务失败时,高可用性集群服务管理进程可以将服务从这个失败节点转移到其它健康节点上来,并且这种服务转移能力是自动、透明的。RHCS通过rgmanager来管理集群服务,rgmanager运行在每个集群节点上,在服务器上对应的进程为clurgmgrd。

在一个RHCS集群中,高可用性服务包含集群服务和集群资源两个方面,集群服务其实就是应用服务,例如apache、mysql等,集群资源有很多种,例如一个IP地址、一个运行脚本、ext3/GFS文件系统等。

在RHCS集群中,高可用性服务是和一个失败转移域结合在一起的,所谓失败转移域是一个运行特定服务的集群节点的集合。在失败转移域中,可以给每个节点设置相应的优先级,通过优先级的高低来决定节点失败时服务转移的先后顺序,如果没有给节点指定优先级,那么集群高可用服务将在任意节点间转移。因此,通过创建失败转移域不但可以设定服务在节点间转移的顺序,而且可以限制某个服务仅在失

败转移域指定的节点内进行切换。

6)集群配置管理工具(luci和ricci)

Conga是一种新的基于网络的集群配置工具,Conga是通过web方式来配置和管理集群节点的。Conga有两部分组成,分别是luci和ricci,luci安装在一台独立的计算机上,用于配置和管理集群,ricci安装在每个集群节点上,Luci通过ricci和集群中的每个节点进行通信。

RHCS也提供了一些功能强大的集群命令行管理工具,常用的有clustat、cman_tool、ccs_tool、fence_tool、clusvcadm等,这些命令的用法将在下面讲述。

7)RedhatGFS

GFS是RHCS为集群系统提供的一个存储解决方案,它允许集群多个节点在块级别上共享存储,每个节点通过共享一个存储空间,保证了访问数据的一致性,更切实的说,GFS是RHCS提供的一个集群文件系统,多个节点同时挂载一个文件系统分区,而文件系统数据不受破坏,这是单一的文件系统不能实现的。

为了实现多个节点对于一个文件系统同时读写操作,GFS使用锁管理器来管理I/O操作,当一个写进程操作一个文件时,这个文件就被锁定,此时不允许其它进程进行读写操作直到这个写进程正常完成才释放锁,有当锁被释放后,其它读写进程才能对这个文件进行操作,另外,当一个节点在GFS文件系统上修改数据后,这种修改操作会通过RHCS底层通信机制立即在其它节点上可见。

在搭建RHCS集群时,GFS一般作为共享存储,运行在每个节点上,并且可以通过RHCS管理工具对GFS进行配置和管理。这些需要说明的是RHCS和GFS之间的关系,一般初学者很容易混淆这个概念:运行RHCS,GFS不是必须的,只有在需要共享存储时,才需要GFS支持,而搭建GFS集群文件系统,必须要有RHCS的底层支持,所以安装GFS文件系统的节点,必须安装RHCS组件。

gfs2相关命令行工具的使用:

mkfs.gfs2为gfs2文件系统创建工具,其一般常用的选项有:

-b BlockSize:指定文件系统块大小,最小为512,默认为4096;
-J MegaBytes:指定gfs2日志区域大小,默认为128MB,最小值为8MB;
-j Number:指定创建gfs2文件系统时所创建的日志区域个数,一般需要为每个挂载的客户端指定一个日志区域;
-p LockProtoName:所使用的锁协议名称,通常为lock_dlm或lock_nolock之一;
-t LockTableName:锁表名称,一般来说一个集群文件系统需一个锁表名以便让集群节点在施加文件锁时得悉其所关联到的集群文件系统,锁表名称为clustername:fsname,其中的clustername必须跟集群配置文件中的集群名称保持一致,因此,也仅有此集群内的节点可访问此集群文件系统;此外,同一个集群内,每个文件系统的名称必须惟一;

   集群结构:           

            

二、搭建RHCS环境,创建真实后台服务器集群

实验环境的说明:

server1 172.25.254.1(ricci和luci(为提供Conga配置用户界面),作为主节点)
server2 172.25.254.2(ricci,作为副节点)

主机:172.25.254.12(fence)

1.配置高可用集群

1)主备节点配置高可用、负载均衡、分布式存储、大文件系统相应源

[root@vm1 ~]# vim /etc/yum.repos.d/rhel-source.repo

[root@vm1 ~]# yum repolist

[root@vm1 ~]# scp /etc/yum.repos.d/rhel-source.repo root@172.25.254.2:/etc/yum.repos.d/rhel-source.repo

[root@vm2 ~]# yum repolist

2)主备节点下载软件

vm1:

[root@vm1 ~]# yum install ricci luci -y
[root@vm1 ~]# id ricci                           ###ricci用户
uid=140(ricci) gid=140(ricci) groups=140(ricci)
[root@vm1 ~]# passwd ricci                ###配置ricci用户密码为redhat
[root@vm1 ~]# /etc/init.d/ricci start     ###开启
[root@vm1 ~]# chkconfig ricci on       ###开机自启动
[root@vm1 ~]# /etc/init.d/luci start      ###开启luci图形
[root@vm1 ~]# chkconfig luci on

vm2:

[root@vm2 ~]# yum install ricci -y
[root@vm2 ~]# id ricci
uid=140(ricci) gid=140(ricci) groups=140(ricci)
[root@vm2 ~]# passwd ricci
[root@vm2 ~]# /etc/init.d/ricci start
[root@vm2 ~]# [root@vm2 ~]# chkconfig ricci on

3)主备节点做解析

[root@vm1 ~]# vim /etc/hosts

[root@vm2 ~]# vim /etc/hosts

4)访问https://172.25.254.1:8084
首次访问 luci 时,网页浏览器会根据显示的自我签名 SSL 证书( luci 服务器的证书)给出具体提示。确认一个或者多个对话框后,您的网页显示器会显示 luci 登录页面。

选择Add Exception

  选择 Confirm Security Exception

创建集群:   1)集群名字不能超过15个字符且不可含数字;

                      2) 选择所有节点使用一样的密码

                      3) 填写集群节点、密码、主机名、在ricci代理中使用的端口

                      4)选择下载软件包、节点自动重启、激活集群存储

5)查看集群成功

2.在真机上配置Fence

1)安装及配置fence软件

[root@foundation12 ~]# yum search fence

[root@foundation12 ~]# yum install fence-virtd.x86_64  fence-virtd-libvirt.x86_64 fence-virtd-multicast.x86_64 -y

[root@foundation12 ~]# fence_virtd -c
Module search path [/usr/lib64/fence-virt]:                          ###回车

Available backends:
    libvirt 0.1
Available listeners:
    multicast 1.2

Listener modules are responsible for accepting requests
from fencing clients.

Listener module [multicast]:                                               ###回车

The multicast listener module is designed for use environments
where the guests and hosts may communicate over a network using
multicast.

The multicast address is the address that a client will use to
send fencing requests to fence_virtd.

Multicast IP Address [225.0.0.12]:                            ###回车

Using ipv4 as family.

Multicast IP Port [1229]:                                                  ###回车

Setting a preferred interface causes fence_virtd to listen only
on that interface.  Normally, it listens on all interfaces.
In environments where the virtual machines are using the host
machine as a gateway, this *must* be set (typically to virbr0).
Set to 'none' for no interface.

Interface [virbr0]: br0                                                ###接口选br0

The key file is the shared key information which is used to
authenticate fencing requests.  The contents of this file must
be distributed to each physical host and virtual machine within
a cluster.

Key File [/etc/cluster/fence_xvm.key]:                         ##回车

Backend modules are responsible for routing requests to
the appropriate hypervisor or management layer.

Backend module [libvirt]:                                ##回车

Configuration complete.

=== Begin Configuration ===
backends {
    libvirt {
        uri = "qemu:///system";
    }

}

listeners {
    multicast {
        port = "1229";
        family = "ipv4";
        interface = "br0";
        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.conf with the above [y/N]?
y             ###要保存设置,必须按y

2)生成并分发key

[root@foundation12 ~]# mkdir /etc/cluster
[root@foundation12 ~]# cd /etc/cluster/
[root@foundation12 cluster]# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1

[root@foundation12 cluster]# scp fence_xvm.key  root@172.25.254.1:/etc/cluster/

[root@foundation12 cluster]# scp fence_xvm.key  root@172.25.254.2:/etc/cluster/

[root@vm1 cluster]# ls
cluster.conf  cman-notify.d  fence_xvm.key

[root@vm2 cluster]# ls
cluster.conf  cman-notify.d  fence_xvm.key

3)开启服务

[root@foundation12 cluster]# systemctl start fence_virtd.service

4)访问https://172.25.254.1:8084

此时:vm1与vm2有相同文件内容如下:

5)测试:主备节点可相互断电后重启

[root@vm2 cluster]# fence_node vm1           ###手动关闭vm1,再重启
fence vm1 success

3.故障转移域设置

Failover Domains故障转移域设置:
vm1的优先权高于vm2,数字越小优先级越高

  

Resource设置:

设置vip、及5s后转移

添加启动脚本

Service Group设置:

选择 Add Resource,一定先加ip,再加脚本

测试:

[root@vm1 ~]# yum install httpd -y

[root@vm1 ~]# vim /var/www/html/index.html

[root@vm2 ~]# yum install httpd -y

[root@vm2 ~]# vim /var/www/html/index.html

[root@vm1 ~]# ip link set down eth0             ###当vm1故障,vm2开始使用,vip也自动配到vm2上

vm1起来后,不再争抢资源

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值