rhel6.5集群管理

来源:互联网 发布:淘宝分享有礼有用吗 编辑:程序博客网 时间:2024/05/21 05:17
集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统就是集群的节点(node)。一个理想的集群是,用户从来不会意识到集群系统底层的节点,在他/她们看来,集群是一个系统,而非多个计算机系统。并且集群系统的管理员可以随意增加和删改集群系统的节点。

基本概念:

Conga:分为Luci(管理工具,Server端)及 Ricci(用于接收和传递Luci指令的服务程序,Agent)两部分,其中Luci安装在任一管理工作站上,Ricci安装在被管理的Cluster节点上.

脑裂(Head-split):当前激活的Cluster 节点因为处理器忙或者其他原因暂时停止响应时,其他节点可能误认为该节点”已死”,从而夺取共享磁盘的访问权,此时极有可能假死节点重新对共享文件系统产生读写操作,从而导致共享磁盘文件系统损坏.
 
Fence:为了防止”脑裂”现象的产生,使用fence设备对”故障”节点进行”屏蔽”措施,如重启该设备,从而尝试恢复其节点功能. Fence 设备可以是交换机,或者IPMI等. 这里我们采用PE2900的BMC充当Fence设备.

Cman:cluster manager,Cluster组件之一,该服务用于cluster的配置,控制,查询,仲裁计算等.
Rgmanager:Resource group manager,Cluster组件之一,提供用户定义的资源组的切换服务.
Failover domain: cluster 环境中服务failover的区域

cman集群管理器
cman是一个基于内核的对称通用集群管理器。它由两部分组成:连接管理器(cnxman),用于处理成员、消息、投票数、事件通知和过渡;服务管理器(SM),用于处理那些需要通过各种方式进行集群管理的应用及外部系统。cman是RHCS中最核心的服务,可通过系统中的serivce命令进行启/停操作;DLM、GFS、CLVM及Fence都依赖于cman群集管理器。

rgmanager资料组管理器
rgmanager(Resource Group Manager)基于cman并使用DLM动态锁管理机制。与cman一样,rgmanager也是RHCS中的一个核心服务,可通过系统中的serivce命令进行启/停操作;rgmanager管理并为集群中的Service(服务)和Resources(资源)提供Failover错误切换功能。

Service(服务)
每个服务都被指定存在于一个Failover Domain中,并与多个Resources(资源)关联。每个服务可以理解为实际操作中的一个应用,如Web服务器、Java中间件、数据库、文件共享系统、邮件系统等。这些应用在运行时不但对应用程序本身有要求(如某个运行指令或多个运行脚本的组合),还要提供对诸如虚拟IP、文件系统等资源的支持。
 
Failover Domain(错误切换域)  每个Failover Domain都与两个或两个以上的Node(服务器节点)进行绑定,Failover Domain指定了集群中某个Service运行时的范围,也就是指定此Service将会由哪些服务器提供Failover错误切换功能。每个Node都允许与多个Failover Domain进行绑定,也就是说每个Node都可以为多个Service服务,因此可以实现"主动/主动(双活动)"方式的集群配置。
 
Resources(资源)  Resources指的是组成一个应用所需的各种组件,通常包括:应用程序、虚拟IP、文件系统。资源与Service组合时,往往还会体现出一定的层次关系,例如:通常系统都要求确认虚拟IP及文件系统都已经正常连接及挂载后,才可以运行某个应用程序,这个顺序一旦调转,就会使应用程序运行出错。

Fence机制  在RHCS集群运行时,为了避免因出现不可预知的情况而造成的"脑裂"现象(如:心跳线断连,此时两台服务器都无法找到对方,无法向对方发出操作指令,都各自认为自己是主节点;又或者主服务器系统崩溃,系统能接收到备用服务器的操作指令,但无法返回运行情况的确认信号,导致备用服务器无法获知系统资源的使用情况),系统要求通过Fence机制来保障系统切换时的I/O使用安全。  如上所述,Fence主要就是通过服务器或存储本身的硬件管理接口,又或者是外部电源管理设备,来对服务器或存储发起直接的硬件管理指令,控制服务器或存储链路的开关。因此,Fence机制也被称为"I/O屏障"技术。当"脑裂"发生时彻底断开问题服务器的所有I/O连接,保证问题服务器不能对集群中的I/O资源(共享的文件系统资源)进行任何操作,严格保证集群环境中企业核心数据的完整性。                  

首先配置server1,4的yum源为如下:
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.4.250/rhel6.5
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release


[HighAvailability]
name=HighAvailability
baseurl=http://172.25.4.250/rhel6.5/HighAvailability
gpgcheck=0

[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.4.250/rhel6.5/ResilientStorage
gpgcheck=0

[ScalableFileSystem]
name=ScalableFileSystem
baseurl=http://172.25.4.250/rhel6.5/ScalableFileSystem
gpgcheck=0

[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.4.250/rhel6.5/LoadBalancer
gpgcheck=0

然后在集群server1,4安装服务:
yum install -y ricci    ##ricci的端口为11111
passwd ricci >>>redhat
/etc/init.d/ricci start
chkconfig ricci on      ##设置服务开机自启
注意事项:
1.两个集群服务端的date时间要同步
2.要关闭火墙iptables,并关闭开机自启
3.真实的物理机,做好dns解析,/etc/hosts

在控制端server1端
yum install luci   ##luci的端口为8084       
/etc/init.d/luci start
chkconfig luci on

在真机浏览器访问https://172.25.4.1:8084/

login登陆界面
username  >>root

password  >>redhat   ##server1端root用户的密码



点击manage clusters

create 创建集群



创建集群完毕后,server1,4会自动重启

然后可以用clustat命令查看集群启动状态




物理机
rpm -qa|grep fence
yum install fence-virtd-multicast.x86_64 fence-virtd-libvirt.x86_64 fence-virtd.x86_64  -y
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

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

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

fence_xvm.key    ##查看是否有此文件

systemctl restart fence_virtd


scp fence_xvm.key root@172.25.4.1:/etc/cluster/

scp fence_xvm.key root@172.25.4.4:/etc/cluster/



去浏览器添加fence设备

Fence Devices  为vmfence


method server1为vmfence1  server4为vmfence2  domain为虚拟机的UUID




[root@server1 cluster]# fence_node server4   ##server1可以控制server4断电



创建Failover Domains 为webfile
Prioritized为优先级
Restricted为可供选择的节点
No Failback不回切
添加Resource

IP Address  ##创建vip


httpd       ##httpd服务


添加service groups  apache  在这里面add resource ,注意顺序



测试时的破坏方法
/etc/init.d/httpd stop   停掉httpd服务
ip addr del 172.25.4.100/24 dev eth0  删掉ip
/etc/init.d/network  stop  停网卡
echo c > /proc/sysrq-trigger  破坏内核

测试:将server1的服务关闭以后,serve4会接管。两边的测试页面如果一样的话,就会实现后端操作而前台web界面不会变化



 
磁盘/存储 分享
server2
yum install -y scsi-*
vim /etc/tgt/targets.conf
<target iqn.2017-07.com.example:server.target1>
    backing-store /dev/vdb         ##要分享的磁盘位置
    initiator-address 172.25.4.1   
    initiator-address 172.25.4.4

</target>


/etc/init.d/tgtd start

tgt-admin -s    ##查看你的tgt系统配置



server1,server4都做下面的操作
[root@server1 ~]# yum install iscsi-* -y
/etc/init.d/iscsi start
iscsiadm -m discovery -t st -p 172.25.4.2   ##激活客户端

iscsiadm -m node -l    ##登陆端口


cat /proc/partitions    ##用这个命令查看你的分区,已经出现了sda并且server1和server4共享的磁盘完全相同
major minor  #blocks  name

 252        0   20971520 vda
 252        1     512000 vda1
 252        2   20458496 vda2
 253        0   19439616 dm-0
 253        1    1015808 dm-1

   8        0    8388608 sda


vim /etc/lvm/lvm.conf   ##查看是否分区是否加入集群

如果不是locking_type = 3就lvmconf --enable-cluster添加集群



fdisk /dev/sda(t 8e)


cat /proc/partitions查看两边都有了sda1



pvcreate /dev/sda1
vgcreate clustervg /dev/sda1

lvcreate -L +2G -n demo clustervg    ##如果这一步,报错。首先查看LVS大小一样不,如果不一样,就两边都同步分

区列表partprobe  如果是繁忙就重启虚拟机就可以了


mkfs.ext4 /dev/clustervg/demo    ##格式化


cat /proc/partitions两边都有了dm-2



然后可以在resources资源里面添加法filesystem


再在service group里面调整顺序,重新添加,先vip在文件系统在服务

在server1 down掉apache服务就可以,server4就会接管服务




ext4格式化的时候的拉伸
lvextend -L +2G /dev/clustervg/demo
resize2fs /dev/clustervg/demo

用gfs2格式化
clusvcadm -d apache

mkfs.gfs2 -j 3 -p lock_dlm -t syx_123456:mygfs2 /dev/clustervg/demo


mount /dev/clustervg/demo /var/www/html   ##两边都挂载
cd /var/www/html/
vim index.html
blkid    ##查看文件UID
vim /etc/fstab

UUID="d13e516b-5036-ad1f-fbfc-26b99d999cd0" /var/www/html  gfs2 _netdev,defaults 0 0


mount -a

lvextend -L +2G /dev/clustervg/demo  ##拉伸

gfs2_grow /dev/clustervg/demo    ##检测


gfs2_tool sb /dev/clustervg/demo all


gfs2_tool journals /dev/clustervg/demo  ##查看日志占用几块
gfs2_jadd -j 3 /dev/clustervg/demo   ##添加日志占用几块

测试:vim /var/www/html/index.html  另一个服务端会立刻更新

lvs检查一下,拉伸成功