设为首页 收藏本站
云服务器等爆品抢先购,低至4.2元/月
查看: 2581|回复: 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
[iyunv@server1 x86_64]# yum install -y pacemaker
[iyunv@server1 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提供磁盘的共享
安装
[iyunv@server5 ~]# yum install scsi-* -y
[iyunv@server5 ~]# 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上安装[iyunv@server1 ~]# yum install  -y iscsi-*
登陆共享磁盘
[iyunv@server2 ~]# 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
[iyunv@server2 ~]# 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.
执行:
[iyunv@server1 mfs]# ln -s moosefs-3.0.80-1.tar.gz moosefs-3.0.80.tar.gz
然后继续执行
[iyunv@server1 mfs]# rpmbuild moosefs-3.0.80-1.tar.gz  -tb
缺少的开发包下载并安装,然后会在
[iyunv@server1 ~]# cd /root/rpmbuild/RPMS/
安装
[iyunv@server1 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上安装

[iyunv@server5 ~]# yum install -y moosefs-client-3.0.80-1.x86_64.rpm

创建一个挂载点
[iyunv@server5 mnt]# mfsmount /mnt/mfs -H mfsmaster

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

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

[iyunv@server5 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
[iyunv@server5 dir1]# ls
bigfile
[iyunv@server5 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)
[iyunv@server5 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
[iyunv@server5 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为已经删除的文件保留一个恢复时间:
使用
[iyunv@server5 dir2]# mfsgettrashtime -H .
.: 86400
如果要恢复误删操作,那么要将master的元数据挂载到客户端上,然后进行。

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


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-350373-1-1.html 上篇帖子: moosefs文件系统 下篇帖子: Centos下MooseFS(MFS)分布式存储共享环境部署记录
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


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


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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