moosefs+keepalived双机高可用热备解决方案-01 by李靖

 

[前言]公司数据迁移后期会使用到MFS,看过很多有关的文章,但大部分都是moosefs安装配置和单点手动备份。经过很长一段时间思考,想将其与keepalived相结合以提高可用性,也就有了我这篇文章。

本文以官网最新稳定版moosefs 2.0.66-1,和centos6.6,具体思路如下:

  • 原理
  • 部署思路
  • IP、主机名、防火墙等基本配置
  • Moosefs(mfs)各角色安装配置
  • Keepalived安装配置
  • 故障切换测试
  • 参考资料

原理:

MFS文件系统结构

管理服务器managing server (master)

元数据日志服务器Metalogger server(Metalogger)

存储块服务器chunk servers (chunkservers)

客户机挂载使用client computers

各种角色作用:

1 管理服务器:负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝

2 元数据日志服务器: 负责备份master服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在master server出问题的时候接替其进行工作

3 数据存储服务器:负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输.

4 客户端: 通过fuse内核接口挂接远程管理服务器上所管理的数据存储服务器,.看起来共享的文件系统和本地linux文件系统使用一样的效果.

部署思路:

1 master的故障恢复,在1.6.5版本后可以由metalogger server 产生的日志文件 changelog_ml.*.mfs和metadata.mfs.back由命令mfsmetarestore恢复,在1.7版本后命令mfsmetarestore不可用,改为mfsmaster-a

2 10.0.8.1 keepalived master 定时运行检测 mfsmaster 进程的脚本check_master_bylijing.sh,故障的时停止 keepalived .

3 10.0.8.5 keepalived 状态从backup转到 master 并触发 notify_master事件执行恢复并启动switch_to_mfsmaster_bylijing.sh脚本。此时元数据日志服务器变为管理服务器。

5 整个切换在2~10秒内完成根据检测时间间隔。

6 当原管理服务器mfsmaster恢复时,10.0.8.5 keepalived 状态从master转到backup 并触发 notify_backup事件执行恢复并启动switch_to_mfsmetalogger_bylijing.sh脚本。此时由管理服务器恢复为元数据日志服务器。

IP、主机名、防火墙等基本配置:


主机名


MFS角色


IP地址


keepalived


VIP


mfsmaster


master


10.0.8.1


主master


10.0.8.6


mfsmetalogger


metalogger


10.0.8.5


备backup


centos6_02


chunkserver


10.0.8.2


centos6_03


chunkserver


10.0.8.3


centos6_04


client


10.0.8.4

防火墙先关了service iptables  stop

 

Moosefs(mfs)各角色安装配置:

  1. 1.         主控服务器Master server 安装:

当我们安装主控服务器时,在配置过程中(./configure),可以取消安装chunk server

(--disable-mfschunkserver)以及MooseFS 客户端(--disable-mfsmount). 安装

主控服务器master 的具体步骤为:

1、添加mfs用户

#useradd -M -s /sbin/nologin mfs

2、创建安装目录

#mkdir/usr/local/mfs

3、下载当前最新稳定版

#wget http://pro.hit.gemius.pl/hitredir?id=p4M1jTM4nRhU008M3Fe_sOUC3wjpXEbik3RJMrUmhjn.l7&et=1&extra=moosefsVersion%3D2.0.66&url=http://ppa.moosefs.com/src/moosefs-2.0.66-1.tar.gz

4、解包归档文件

#tar-zxvf  moosefs-2.0.66-1.tar.gz

5、进入安装目录

#cdmoosefs-2.0.66

6、配置

#./configure--prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs--disable-mfschunkserver --disable-mfsmount

7、编译并安装

#make

#makeinstall

成功安装master 以后,可以在/usr/local/mfs下看到moosefs安装好的文件。

  1. 2.         主控服务器Master server配置:

1、切换目录

#cd/usr/local/mfs/etc

2、复制样例文件,以得到master 所需的配置文件

#cpmfsmaster.cfg.dist mfsmaster.cfg

#cpmfsmetalogger.cfg.dist mfsmetalogger.cfg

#cpmfsexports.cfg.dist mfsexports.cfg

如果我们打算更改这些配置文件中的某些项目的值,则需要打开特定配置文件相关文本行前的

注释,然后修改跟随其后的值。因为被注释掉的行,即是MooseFS内置的缺省值。

Mfsmaster.cfg配置文件包含主控服务器master 相关的设置,在这里我们暂时不打算对其

进行修改。如果你想知道关于该配置文件更多的信息,请查看它的手册页(使用命令man

mfsmaster.cfg)。

配置文件mfsexports.cfg 指定那些客户端主机可以远程挂接MooseFS 文件系统,以及授予

挂接客户端什么样的访问权限。例如,我们指定只有10.0.8.x 网段的主机需要密码才可以以读写模式

访问MooseFS 的整个共享结构资源(/)。指定只有10.0.8.x 网段的主机不用密码可以以读写模式访问MooseFS 的整个共享结构资源(/data)。

二进制文件metadata 和文本文件changelog 将被保存在安装目录/usr/local/mfs/var/mfs。首次安装master 时,会自动生成一个名为metadata.mfs.empty 的元数据文件metadata,该文件是空的。MooseFSmaster 运必须有文件metadata.mfs,这个文件是从metadata.mfs.empty 改名而来:

1、切换目录

#cd /usr/local/mfs/var/mfs

2、重命名文件

#cpmetadata.mfs.empty metadata.mfs

注:MooseFS master 运行以后,metadata.mfs 文件大小将发生变化,肯定不会是空文件了。

修改/etc/hosts 文件,以绑定主机名mfsmaster 与ip 地址10.0.8.1

10.0.8.1 mfsmaster

注:过下我们启动keepalived时,我要在/etc/hosts中改为vip地址:10.0.8.6

  1. 3.         主控服务器Master server启动:

这个时候,我们可以试着运行master 服务(服务将以安装配置configure 指定的用户运行,这

我们的案例里,它是mfs):

#chown –Rmfs:mfs /usr/local/mfs     注:这个很重要,否则mfs用户没权限。

#/usr/local/mfs/mfsmasterstart

在一个生产环境里,我们应当设置自动启动脚本,以便操作系统重新启动时,MooseFSmaster

也能自动运行。

  1. 4.         主控服务器Master server监控:

为了监控MooseFS 当前运行状态,我们可以运行CGI 监控服务,这样就可以用浏览器查看整个

MooseFS 的运行情况:

#/usr/local/mfs/mfscgiservstart

现在,我们在浏览器地址栏输入http://10.0.8.1:9425 即可查看master 的运行情况(这个时

候,是不能看见chunk server 的数据)。

  1. 5.         元数据日志服务器Metalogger server安装

用来安装metalogger 的主机,在性能上应该比master 强大(至少有更多的内存)。一旦主控

服务器master 失效,只要导入changelogs 到元数据文件,备份服务器metalogger 将能接替发生

故障的master,行使管理服务器的职能。

安装跟主控服务器master 安装非常类似。只是所用的配置文件和启动进程不一样。

1、添加mfs用户

# useradd-M -s /sbin/nologin mfs

2、创建安装目录

#mkdir/usr/local/mfs

3、下载当前最新稳定版

#wgethttp://pro.hit.gemius.pl/hitredir?id=p4M1jTM4nRhU008M3Fe_sOUC3wjpXEbik3RJMrUmhjn.l7&et=1&extra=moosefsVersion%3D2.0.66&url=http://ppa.moosefs.com/src/moosefs-2.0.66-1.tar.gz

4、解包归档文件

#tar-zxvf  moosefs-2.0.66-1.tar.gz

5、进入安装目录

#cdmoosefs-2.0.66

6、配置

#./configure--prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs--disable-mfschunkserver --disable-mfsmount

7、编译及安装

#make

#makeinstall

  1. 6.         元数据日志服务器Metalogger server配置

1、切换目录

#cd/usr/local/mfs/etc

2、复制样例文件,以得到Metalogger server 所需的配置文件

#cpmfsmetalogger.cfg.dist mfsmetalogger.cfg

类似地,修改/etc/hosts 文件,增加下面的行:

10.0.8.1mfsmaster

现在,我们来试着运行备份服务mfsmetaloger:

#chown –Rmfs:mfs /usr/local/mfs     注:这个很重要,否则mfs用户没权限。

#/usr/local/mfs/sbin/mfsmetaloggerstart

在一个生产环境里,我们应当设置自动启动脚本,以便操作系统重新启动时,MooseFS

mfsmetalogger服务也能自动运行。

  1. 7.         存储块服务器Chunk servers 安装:

在centos6_02和centos_03上安装chunk server 方法一样如下:

# useradd-M -s /sbin/nologin mfs

#mkdir/usr/local/mfs

#wgethttp://pro.hit.gemius.pl/hitredir?id=p4M1jTM4nRhU008M3Fe_sOUC3wjpXEbik3RJMrUmhjn.l7&et=1&extra=moosefsVersion%3D2.0.66&url=http://ppa.moosefs.com/src/moosefs-2.0.66-1.tar.gz

#tar-zxvf  moosefs-2.0.66-1.tar.gz

#cdmoosefs-2.0.66

#./configure--prefix=/usr/local/mfs  --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster

#make

#makeinstall

时间: 2024-08-07 17:12:10

moosefs+keepalived双机高可用热备解决方案-01 by李靖的相关文章

使用Keepalived构建高可用热备

简介 Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器. 工作原理 keepalived的工作原理是VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议. 在VRRP中有两组重要的概念

Heartbeat实现集群高可用热备

公司最近需要针对服务器实现热可用热备,这几天也一直在琢磨这个方面的东西,今天做了一些Heartbeat方面的工作,在此记录下来,给需要的人以参考. Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.通过Heartbeat我们可以实现双机热备,以实现服务的持续性. heartbeat (Linux-HA)的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗 余链路,它们之间相互发送

Linux下HAProxy+keepalived双机高可用方案

Keepalived 的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除, 当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的 web服务器. HAProxy 提供高可用性.负载均衡以及基于 TCP 和 HTTP 应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy 特别适用于那些负载特

keepalived+redis 高可用redis主从解决方案

背景介绍: 目前,Redis还没有一个类似于MySQL Proxy或Oracle RAC的官方HA方案.#Redis 2.8版开始正式提供名为Sentinel的主从切换方案(后面附上,未测试) 因此,如何在出现故障时自动转移是一个需要解决的问题. 通过对网上一些资料的搜索,有建议采用HAProxy或Keepalived来实现的,事实上如果是做Failover而非负载均衡的话,Keepalived的效率肯定是超过HAProxy的,所以我决定采用Keepalived的方案. 环境介绍:Master:

利用redis主从+keepalived实现高可用

Redis简介: Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主持. redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set –有序集合)和hash(哈希类型).这些数据类型都支持push/pop.ad

HAProxy双机高可用之HAProxy+Keepalived

Haproxy HAProxy 提供高可用性.负载均衡以及基于 TCP 和 HTTP 应用的代理,支持虚拟主机, 它是免费.快速并且可靠的一种解决方案.HAProxy 特别适用于那些负载特大的 web 站 点, 这些站点通常又需要会话保持或七层处理.HAProxy 运行在当前的硬件上,完全可 以支持数以万计的并发连接.并且它的运行模式使得它可以很简单安全的整合进您当前 的架构中, 同时可以保护你的 web 服务器不被暴露到网络上. 实验环境:rhel6.5 selinux and iptable

音视频服务器双机热备解决方案

AnyChat平台提供了服务器双机热备解决方案,可以满足对系统有要求较高的客户需求,如政府.电信运营商以及部队等. 一.基本原理 1.AnyChat服务器有两种工作模式,分别为:主服务器模式(Master Server).从服务器模式(Slave Server). 2.从服务器启动之后,需要与主服务器建立通信连接,等待主服务器的激活,从服务器被激活之前,不能对外提供服务. 3.当从服务器被激活,且主服务器宕机之后,从服务器将会立即开始服务,接受客户端连接.从服务器被激活之后,可以连续工作30天,

haproxy+keepalived实现高可用负载均衡

软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载. HAProxy相比LVS的使用要简单很多,功能方面也很丰富.当 前,HAProxy支持两种主要的代理模式:"tcp"也即4层(大多用于邮件服务器.内部协议通信服务器等),和7层(HTTP).在4层模式 下,HAProxy仅在客户端和服务器之间转发双向流量.7层模式下,HAProxy会分析协议,

HaProxy + Keepalived 实现高可用负载均衡

软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载. HAProxy相比LVS的使用要简单很多,功能方面也很丰富.当前,HAProxy支持两种主要的代理模式:"tcp"也即4层(大多用于邮件服务器.内部协议通信服务器等),和7层(HTTP).在4层模式下,HAProxy仅在客户端和服务器之间转发双向流量.7层模式下,HAProxy会分析协议,并且