设为首页 收藏本站

运维网

查看: 966|回复: 2

[经验分享] moosefs+corosync+pacemaker+iscsi高可用集群文件系统

[复制链接]

累计签到:1 天
连续签到:1 天
发表于 2017-3-6 13:29:41 | 显示全部楼层 |阅读模式
集群技术主要分为三类:
高可用:(High Available Cluster) :Heartbeat corosync pacemaker keepalived
负载均衡:(Load balancing Cluster):lvs nginx haproxy
高性能计算(High Performance Computing):Beowulf



mfs+ha:moosefs+corosync+pacemaker+iscsi高可用集群文件系统

mfs的优点:
通用文件系统,不需要修改上层应用
可以在线扩容,体系架构可伸缩,可扩容
部署简单
可以任意设置冗余程度
可在指定的时间内回收删除的文件
可以提供netapp等商业存储的的快照特性
提供网络监控接口
提高读写效率
提高海量小文件的读写效率
劣势:
master的单点故障
体系架构存储文件的总数有可预见的上限。
本文提供corosync的双机热备实现高可用,使用iscsi提供双机存储,并通过crm对相关资源进行整理。
pacemaker具有监测并恢复节点和服务器级别的故障
不需要共享存储
资源无关,任何能用脚本控制的资源都可以为其服务
支持集群
有crm命令行管理工具。

corosync和pacemaker都由红帽6.5内核提供,修改本地yum源,加入高可用资源点。


机器配置:server1/2 高可用 server3/4 chunkserver  server5 client

1、配置高可用
安装corosync和pacemaker
[[email protected] x86_64]# yum install -y pacemaker
[[email protected] x86_64]# yum install corosync -y




修改corosync的配置文件

totem {
        version: 2
        secauth: off
        threads: 3
        interface {
                ringnumber: 0
                bindnetaddr: 172.25.28.0//网关
                mcastaddr: 226.94.1.1//多播地址,根据多播协议确定的
                mcastport: 5406//端口,不要和别人冲突
                ttl: 1
        }
}

logging {
        fileline: off
        to_stderr: no
        to_logfile: yes
        to_syslog: yes
        logfile: /var/log/cluster/corosync.log
debug:off
timestamp: on
logger_subsys {
         subsys: AMF
         debug: off
        }   
}
amf {
        mode: disabled
}
service {
        name:pacemaker//corosync支持pacemaker服务
        ver:0//pacemaker与corosync一起启动
}


yum install crmsh-1.2.6-0.rc2.2.1.x86_64.rpm pssh-2.3.1-2.1.x86_64.rpm  -y


进入crm命令行进行资源添加和管理

由于是用虚拟机模拟,所以使用的是fence_virtd服务,添加fence,需要在真机安装
fence-virt.x86_64,然后使用fence-virtd -c 生成fence_xvm.key
然后通过dd if=/dev/urandom of=fence_xvm.key bs =128 count=1 复制一串随机数,然后向server1和server2发送
在虚拟机的客户端安装fence-virt
此时,就可以通过vmfence控制虚拟机了
使用stonith-admin -I 如果查看到fence_xvm即成功
node server1.example.com
node server2.example.com
primitive vip ocf:heartbeat:IPaddr2 \
params cidr_netmask="24" ip="172.25.28.100"
primitive vmfence stonith:fence_xvm
property $id="cib-bootstrap-options" \
dc-version="1.1.10-14.el6-368c726" \
cluster-infrastructure="classic openais (with plugin)" \
expected-quorum-votes="2" \
stonith-enabled="false" \
no-quorum-policy="ignore"

2、
mfs的共享存储:
共享存储使用iscsi进行:
server5提供磁盘的共享
安装
[[email protected] ~]# yum install scsi-* -y
[[email protected] ~]# vim /etc/tgt/targets.conf
<target iqn.2017-03.com.example:server.target1>
    backing-store /dev/vdb
    initiator-address 172.25.28.1
    initiator-address 172.25.28.2
</target>
在server1/2上安装[[email protected] ~]# yum install  -y iscsi-*
登陆共享磁盘
[[email protected] ~]# iscsiadm -m discovery -t st -p 172.25.28.5
Starting iscsid:                                           [  OK  ]
172.25.28.5:3260,1 iqn.2017-03.com.example:server.target1
[[email protected] ~]# iscsiadm -m node -l
Logging in to [iface: default, target: iqn.2017-03.com.example:server.target1, portal: 172.25.28.5,3260] (multiple)
Login to [iface: default, target: iqn.2017-03.com.example:server.target1, portal: 172.25.28.5,3260] successful.
使用fdisk -l 发现/dev/sda即为成功
对sda进行磁盘分区,格式化为ext4
尝试挂载,能挂载成功,并在写入数据后双侧同步即成功


3、配置mfs

下载:mfs源码包,
libpcap-1.4.0-4.20130826git2dbcaa1.el6.x86_64.rpm
moosefs-3.0.80-1.tar.gz
libpcap-devel-1.4.0-4.20130826git2dbcaa1.el6.x86_64.rpm
由于要进行双机热备,所以使用rpmbuild生成rpm包比较方便,
安装rpm-build
使用rpmbuild moosefs-3.0.80-1.tar.gz -tb
它会提示报错:
error: File /root/mfs/moosefs-3.0.80-1.tar.gz does not appear to be a specfile.
执行:
[[email protected] mfs]# ln -s moosefs-3.0.80-1.tar.gz moosefs-3.0.80.tar.gz
然后继续执行
[[email protected] mfs]# rpmbuild moosefs-3.0.80-1.tar.gz  -tb
缺少的开发包下载并安装,然后会在
[[email protected] ~]# cd /root/rpmbuild/RPMS/
安装
[[email protected] x86_64]# rpm -ivh moosefs-cgi-3.0.80-1.x86_64.rpm moosefs-cgiserv-3.0.80-1.x86_64.rpm//提供网页cgi接口包 moosefs-cli-3.0.80-1.x86_64.rpm//命令行执行包 moosefs-master-3.0.80-1.x86_64.rpm//master包


将scsi共享并在server1/2上发现的磁盘挂载到/va/lib/mfs/下
修改/var/lib/mfs/的所属主为mfs.mfs
启动mfsmaster mfscgiserv
此时可以在网页上通过9425端口访问到mfs的内容。
登陆页面后,他会提示没有找到mfsmaster,这是由于没有mfsmaster host解析的原因
在不使用高可用的情况下,可以将解析添加到对应的主机后边,如果使用高可用,那么可以将解析添加到vip后边


由于pacemaker控制资源需要使用脚本进行,所以要编写mfs的启动脚本
mfs的启动脚本在//root/rpmbuild/BUILD/moosefs-3.0.80/rpm/rh中有相应的模版
12 # Source function library.
13 . /etc/init.d/functions

21 # Check that networking is up.
22 [ "${NETWORKING}" == "no" ] && exit 0
23 [ -x "/usr/sbin/mfsmaster" ] || exit 1
24 [ -r "/etc/mfs/mfsexports.cfg" ] || exit 1
29 start () {
30     echo -n $"Starting $prog: "
31     $prog -a >/dev/null 2>&1 && success || failure    //使用-a选项可以恢复意外停止进程导致的无法启动msmaster。
32     RETVAL=$?


使用service mfsd start或service mfsd stop成功即为OK


4、将mfsd 加入pacemaker
crm(live)configure# primitive mfs lsb:mfsd op monitor interval=1min
crm(live)configure# group vip_with_mfsd vip mfs
commit
通过server2的监控可以看到正常的工作
Online: [ server1.example.com server2.example.com ]

vmfence (stonith:fence_xvm):    Started server2.example.com
Resource Group: vip_with_mfsd
     vip        (ocf::heartbeat:IPaddr2):Started server1.example.com
     mfs        (lsb:mfsd):     Started server1.example.com


将磁盘文件系统加入pacemaker
crm(live)configure# primitive mfsdate ocf:heartbeat:Filesystem params device=/dev/sda1 directory=/var/lib/mfs/ fstype=ext4 op monitor interval=1min
crm(live)configure# group mfs_with_data vip mfsdate mfs


禁止资源回切:
crm(live)configure# rsc_defaults resource-stickiness=100

5、继续配置mfs,实现

mfs文件系统mfschunk和client的添加


为server3和server4添加硬盘:
格式化,挂载到一个挂载点
然后将挂载点写入/etc/mfs/mfshdd.cfg中,启动mfschunkserver 即可
然后在网页的9245可以看到磁盘的挂载情况



6、安装客户端:

在server5上安装

[[email protected] ~]# yum install -y moosefs-client-3.0.80-1.x86_64.rpm

创建一个挂载点
[[email protected] mnt]# mfsmount /mnt/mfs -H mfsmaster

在mfs中创建两个目录用来做测试:dir1 dir2

[[email protected] mfs]# mfssetgoal -r 1 dir1///指定此目录中的文件的备份数量,默认是2
dir1/:
inodes with goal changed:                       1
inodes with goal not changed:                   0
inodes with permission denied:                  0

[[email protected] dir1]# dd if=/dev/zero of=bigfile bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.499389 s, 210 MB/s
[[email protected] dir1]# ls
bigfile
[[email protected] dir1]# mfsfileinfo bigfile
bigfile:
chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
copy 1: 172.25.28.4:9422 (status:VALID)
chunk 1: 0000000000000002_00000001 / (id:2 ver:1)
copy 1: 172.25.28.3:9422 (status:VALID)
[[email protected] dir2]# dd if=/dev/zero of=bigfile bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.529634 s, 198 MB/s
[[email protected] dir2]# mfsfileinfo bigfile
bigfile:
chunk 0: 0000000000000003_00000001 / (id:3 ver:1)
copy 1: 172.25.28.3:9422 (status:VALID)
copy 2: 172.25.28.4:9422 (status:VALID)
chunk 1: 0000000000000004_00000001 / (id:4 ver:1)
copy 1: 172.25.28.3:9422 (status:VALID)
copy 2: 172.25.28.4:9422 (status:VALID)


在server1的master下,可以使用文本工具mfscli -SHD进行文本查看。



误删撤回:

所有的资源记录都在master上,mfs为已经删除的文件保留一个恢复时间:
使用
[[email protected] dir2]# mfsgettrashtime -H .
.: 86400
如果要恢复误删操作,那么要将master的元数据挂载到客户端上,然后进行。

[[email protected] mfs]# mkdir mfsmeta
[[email protected] mfs]# mfsmount -m /mnt/mfs/mfsmeta/ -H mfsmaster
mfsmaster accepted connection with parameters: read-write,restricted_ip
[[email protected] mfs]# cd mfsmeta/
在mfsmeta中执行find命令,找到删除的文件后,将其移到undel中即可恢复。
[[email protected] mfsmeta]# ls
sustained  trash
[[email protected] mfsmeta]# cd trash/
[[email protected] trash]# find -name **passwd**
./006/00000006|dir2|passwd
[[email protected] trash]# mv ./006/00000006\|dir2\|passwd undel/
回到原来的位置,就会发现文件已经恢复。


运维网声明 1、欢迎大家加入本站运维交流群:群①:263444886群②:197202523群③:485755530群④:201730672群⑤:202807635运维网交流群⑥:281548029
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须注明原文的出处
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、运维网 - 服务您的运维操作管理专家!
6、联系人Email:[email protected] 网址:www.iyunv.com

点击关注更多内容
您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则  允许回帖邮件提醒楼主

关注运维网官方微信X

关注运维网官方微信

扫描二维码关注运维网官方微信,最新一手资源尽在官方微信!快快关注我们吧...

扫描微信二维码查看详情

客服 E-mail:[email protected]

本站由安畅云和青云提供云计算服务

运维网--中国最专业的运维工程师交流社区

京ICP备14039699号-1 Copyright © 2012-2017

使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

Good good study day day up !


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


合作伙伴: 青云cloud 51idc

快速回复 返回顶部 返回列表