pacemaker 实现mfsmaster 的高可用

Corosync作为通信层和提供关系管理服务,Pacemaker来实现资源管理,DRBD 作为一个经济的共享存储方案,crm shell 来显示并修改配置文件.
pacemaker 的特性:监测并恢复节点和服务级别的故障,存储无关,并不需要共享存储,资源无关,任何能用脚本控制的资源都可以作为服务,支持大型或者小型的集群,自动同步各个节点的配置文件。
crm:cluster resource manager


因为在mfs分布式文件系统中,mfsmaster的作用举足轻重,所以我们要将mfsmaster做个HA。
这里我们用pacemaker来实现mfsmaster的高可用。
此实验我们先实现drbd,来实时同步磁盘数据,并将drbd设备挂载在/var/lib/mfs目录,然后安装mfsmaster(主备),再安装corosync和pacemaker,最后在crm中配置pacemaker。

yum install gcc flex rpm-build kernel-devel -y   #解决软件依赖性
下载 drbd-8.4.0.tar.gz
rpmbuild ~#在家目录生成 rpmbuild 编译所需路径
tar zxf drbd-8.4.0.tar.gz
cd drbd-8.4.0
./configure   --enable-spec --with-km
rpmbuild -bb drbd.spec
rpmbuild -bb drbd-km.spec #编译内核模块  此时在~/rpmbuild/RPMS/x86_64目录就编译好rpm包了。

cd ~/rpmbuild/RPMS/x86_64
rpm -ivh *
scp drbd* 192.168.0.226:    #拷贝生成的 rpm 包到另一主机,并安装软件包:

在另一台主机:
rpm -ivh /root/drbd-*

以下配置在两台主机上完成:
cp /usr/share/doc/drbd-utils-8.4.0/drbd.conf.example /etc/drbd.d/
cd /etc/drbd.d/
cp drbd.conf.example   drbd.res

编辑/etc/drbd.d/drbd.conf.example,修改如下:
resource example {
......
on desktop85.example.com {
address
192.168.0.85:7780;
volume 0 {
device minor 0;
disk /dev/vdb;
meta-disk internal;
}
}
on desktop86.example.com {
address
192.168.0.86:7780;
volume 0 {
device minor 0;
disk /dev/vdb;
meta-disk internal;
}

}
}
scp drbd.res 192.168.0.54:/etc/drbd.d/
如果此配置文件中只有两个 on desktop86.example.com和on desktop85.example.com,则需在/etc/drbd.d/ 的global_common.conf 修改
cram-hmac-alg "sha1";

在两台主机上分别执行以下命令:
# drbdadm create-md example
NewNew drbd meta data block successfully created. 这样就表示好了
如果执行上述命令时报操作拒绝:
Found ext3 filesystem
     2097152 kB data area apparently used
     2097052 kB left usable by current configuration

Device size would be truncated, which
would corrupt data and result in
'access beyond end of device' errors.
You need to either
   * use external meta data (recommended)
   * shrink that filesystem first
   * zero out the device (destroy the filesystem)
Operation refused.
这表示你在建立/dev/vg1/lv1 时格式化了。然后:
dd if=/dev/zero of=/dev/vg1/lv1.等几秒就行了,主要是把之前建立的文件系统的信息檫掉的就可以了。
# /etc/init.d/drbd start
Starting DRBD resources: [
     create res: example
   prepare disk: example
    adjust disk: example
     adjust net: example
]                          这样就表示好了

将 demo 设置为 primary 节点,并同步数据:(在 demo 主机执行以下命令)
# drbdsetup /dev/drbd0 primary --force
在两台主机上查看同步状态:
# watch cat /proc/drbd 此时就是Primary/Secondary

数据同步结束后创建文件系统:
# mkfs.ext4 /dev/drbd0  只需在primary 主机格式化

等到mfsmaster安装好后,进行挂载
下载软件:mfs-1.6.26.tar.gz
rpbbuild -tb mfs-1.6.26.tar.gz (需要zlib-devel,fuse-devel的支持)
cd rpmbuild/RPMS/x86_64
编译出5个rpm包,cgi与master是master端运行的,chunkserver是存储端运行的,client是客户端运行的。
mfs-cgi-1.6.26-1.x86_64.rpm          mfs-master-1.6.26-1.x86_64.rpm
mfs-chunkserver-1.6.26-1.x86_64.rpm  mfs-metalogger-1.6.26-1.x86_64.rpm
mfs-client-1.6.26-1.x86_64.rpm
master端安装:
rpm -ivh mfs-cgi-1.6.26-1.x86_64.rpm mfs-master-1.6.26-1.x86_64.rpm
rpm -ql mfs-master  查看安装路径
cat /etc/mfsmaster.cfg   默认配置
ll -d /var/lib/mfs/      默认这个目录的属主和属组是root
chown -R nobody /var/lib/mfs/
cd /var/lib/mfs
cp -p metadata.mfs.empty metadata.mfs #当master开启时,metadata.mfs文件就被改成metadata.mfs.bak,当master正常关闭时,metadata.mfs.bak又被改成metadata.mfs,这样可以正常启动。但当不正常关闭时,metadata.mfs.bak不会被改成metadata.mfs,此时开启的时候就会报错。需要手动执行 mfsmetarestore -a ,去修复mfsmaster,修复后就可以正常启动了。
cd /etc/
cp mfsmaster.cfg.dist mfsmaster.cfg
cp mfsexports.cfg.dist mfsexports.cfg
vim mfsexports.cfg    控制客户端的连接
在第二行改,192.168.0.0/24   /    rw,alldirs,maproot=0
vim /etc/hosts
192.168.0.189    mfsmaster
ll /var/lib/mfs   多了一个session.mfs 文件
cd /usr/share/mfscgi/
chmod +x mfs.cgi
mfsmaster  start
用浏览器访问:192.168.0.84:9425 ,到此master端安装完毕。
如果没有9425端口的话,执行mfscgiserv  就好了

挂载文件系统:
# mount /dev/drbd0 /var/lib/mfs
如果drbd 是用lvm创建的,还可以将其拉伸,增加其容量。
1.lvmextent -L +G /var/lib/mfs  两台drbd主机都需拉伸
2.drbdadm resize mfsdata        只需在primary 节点主机拉伸drbd,mfsdata是资源名
3.resize2fs  /dev/drbd0            拉伸文件系统

chown -R  nobody.nobody  /var/lib/mfs
mfsmaster安装好后,则自己编写脚本mfs,用来修复mfs文件系统,并放到/etc/init.d/目录。
/etc/init.d/mfs  start
ps aux  查看mfsmaster 进程

下面安装corosync和pacemaker
安装软件包:
yum install corosync pacemaker -y   两台主机都要安装
corosync-keygen          产生两台主机同步的密钥
scp /etc/corosync/authkey  192.168.0.34:/etc/corosync/
cd  /etc/corosync/
cp corosync.conf.example corosync.conf
vim corosync.conf
    bindnetaddr: 192.168.0.0
        mcastaddr: 236.94.1.6     修改多播地址和端口
        mcastport: 5466

service {                       添加服务
        name: pacemaker
        ver: 0
}
scp  corosync.conf  192.168.0.34:/etc/corosync/
/etc/init.d/corosync start  两台主机都要启动
在主备节点主机:
vim /etc/hosts
192.168.0.222    mfsmaster    #192.168.0.222是vip
crm_verify -L                检查配置文件,如果报与stonish有关的错误,则
crm configure property stonish-enabled=false  关闭stonish
然后:crm configure show   查看节点及全局配置
crm configure property no-quorum-policy=ignore
进crm ,configure,模式
primitive mfsip ocf:heartbeat:IPaddr2 params ip="192.168.0.119" cidr_netmask="24"  op monitor interval="30s"
primitive mfsdata ocf:linbit:drbd params drbd_resource="mfsdata" op monitor interval="60s"
ms mfsdataclone mfsdata meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"
primitive mfsfs ocf:heartbeat:Filesystem params device="/dev/drbd1" directory="/var/lib/mfs" fstype="ext4"
primitive mfsmaster lsb:mfs       这条需要在drbd的primary节点操作
group mfsgroup mfsfs mfsip mfsmaster
commit   提交

/etc/init.d/corosync restart
/etc/init.d/mfs   restart
此时,crm_mon   监控服务状态
crm node  standby  将自己置为不可用
crm node  online   将自己置为可用
然后再次查看:crm_mon
chkconfig drbd off   将drbd服务交给corosync 启动
chkconfig  corosync on
ip addr show 查看vip
echo c > /proc/sysrq-trigger
查看,crm_mon,是否切换,然后再手动开启,drbd 启动时会自动同步。

你可能感兴趣的:(pacemaker,的高可用,实现mfsmaster)