文件系统的高可用性

  1. DRBD, Distributed Replicated Block Device
    可以理解为网络RAID1(数据存储复制)。热切换通过Heartbeat实现。
    DRBD支持如下的块设备:
  • 单独的磁盘
  • 磁盘的某个分区
  • 一个软RAID设备
  • 一个LVM逻辑卷
  • 一个EVMS(Enterprise Volume Management System)的卷
  • 其他任何的块设备
  1. DRBD+Heartbeat+NFS实现存储的高可用
    主机采用双网卡,一个网口对外提供服务,一个网口为心跳线连接。
    Heartbeat与Keepalived类似,也对外提供VIP。该VIP可对外提供NFS服务。
    /etc/hosts配置如下:
www.bee1.com 10.0.0.1 centos1  #心跳线互联地址
www.bee2.com 10.0.0.2 centos2  #心跳线互联地址

时间同步

ntpdate ntp.api.bz
  1. DRBD的安装配置
  • 安装环境
yum install gcc gcc-c++ make glibc flex

在primary和secondary节点上均配置

cd /usr/local/src
tar zxvf drbd-8.0.6.tar.gz
cd drbd-8.0.6
make
如果使用了新内核
make DKDIR=/usr/src/linux
或者
make DKDIR=/usr/src/kernel
make install

DRBD安装完成后主要生成命令drbdsetup,drbdadmin,配置文件
/etc/drbd.conf,启动文件/etc/init.d/drbd及模块drbd.ko。
可以查看如下目录
/lib/modules/…/kernel/drivers/block/
加载模块

modprobe drdb
lsmod | grep drbd
  • 创建DRBD硬件设备
mknod /dev/drbd0 b 147 0

假定两台机器都将/dev/sdb1互相作为镜像,那么相类似的配置如下:

yum install -y portmap
yum install -y nfs
mkdir /drbd

vim /etc/exports

/d 10.1.2.0/255.255.252.0 (rw,no_root_squash,no_all_squash,sync)
限定共享文件系统的网段10.1.2.0/255.255.252.0
service portmap start
chkconfig --level 3 portmap
chkconfig --level 3 nfs off
NFS交由Heartbeat管理
  • 配置DRBD
    配置文件/etc/drbd.conf中描述了DRBD设备与硬盘分区的映射关系,及一些参数。
resource r0 {  #创建的资源名
	protocol C;  #C协议:如果收到远程主机的写入确认,则认为写入完成。
	startup {
		wfc-timeout 0;
		degr-wfc-timeout 120;
	}
	disk {
		on-io-error detach;
	}
	net {
		timeout 60;
		connect-int 10;
		ping-int 10;
		max-buffers 2048;
		max-epoch-size 2048;
	}
	syncer {
		rate 30M;  #同步最大速率。同步带宽一般100~200M,可以取值占用带宽最小值的30%。
	}
	on www.bee1.com {
		device /dev/drbd0;
		disk /dev/sdb;
		address 10.0.0.1:7788;  #心跳互联地址
		meta-disk internal;	 #表示在同一个局域网内
	}
	on www.bee2.com {
		device /dev/drbd0
		disk /dev/sdb;
		address 10.0.0.2:7788;
		meta-disk internal;	
	}
}
  • 启动DRBD(在两个节点执行)
drbdadm create-md r0 #配置文件中定义的资源名称
/etc/init.d/drbd start
chkconfig drbd on
cat /proc/drbd  #主要查看st和ds状态
  • 主节点初始化
drbdsetup /dev/drdb0 primary -o  #第一次运行时执行一次
drbdadm primary r0
cat /proc/drbd  #主要查看st和ds状态
或者
service drbd status  #主要查看st和ds状态

最终状态应为(数据同步完成)
cs:Connected
st:Primary/Secondary
ds:UpToDate/UpToDate

  • DRBD的使用
    将主机上的DRBD设备挂在到一个目录上使用。备机的DRBD设备无法被挂载,因为她是用来接收主机数据的,由DRBD管理。
    在primary节点上执行:
mkfs.ext3 /dev/drbd0
mount /dev/drbd0 /drbd

现在可以对/drbd分区操作了。
secondary节点上不允许对DRBD设备进行任何操作,包括只读。所有的读写操作只能在primary节点上进行。只有当primary节点挂掉时,secondary节点变为primary节点,才可以进行读写操作。
此外,如果启用了Heartbeat,就不需要手动mount了,Heartbeat会自动mount。
DRBD官网 https://www.linbit.com/en/drbd-community/drbd-download/
FAQ http://www.linux-ha.org/DRBD/FAQ

  1. Heartbeat的安装配置
  • 安装
yum install -y heartbeat

配置文件
/etc/ha.d/ha.cf #heartbeat参数配置文件
/etc/ha.d/haresources #heartbeat资源配置文件,如配置IP资源及脚本程序等
/etc/ha.d/authkeys #heartbeat认证文件,高可用服务器对之间根据对端的authkey,对对端进行认证
/etc/ha.d/resource.d/killnfsd
对DRBD的primary和secondary节点配置均为

logfile		/var/log/ha-log
logfacility		local0
keepalive		2	#心跳时间2秒
deadtime		5	#死亡时间5秒
ucast		eth1 10.0.0.2	#单播方式,目标为对端IP
auto_failback	off	#服务正常后由主服务器接管资源,另一台服务器放弃该资源
node	www.bee1.com  www.bee2.com	#定义节点
  • 配置双机互联验证文件
chmod 600 /etc/ha.d/authkeys
auth 1
1 crc
  • 编辑集群资源文件
    /etc/haresources
www.bee1.com IPaddr::192.168.1.108/24/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/drbd::ext3 killnfsd

primary和secondary节点上均使用上述配置。主机均为www.bee1.com。

  • 编辑killnfsd
    该配置文件目的就是启动NFS服务。NFS服务切换后,必须重新mount NFS共享出来的目录,否则会出现“stale NFS file handle”错误。
    vim /etc/ha.d/resource.d/killnfsd
killall -9 nfsd; /etc/init.d/nfs restart; exit 0
chmod 755 /etc/ha.d/resource.d/killnfsd
  • 分别在主备节点上启动Heartbeat
service heartbeat start

这时可以挂载192.168.1.108:/drbd到本地文件系统。192.168.1.108是Heartbeat产生的VIP地址,也是对外提供NFS服务的地址。

  • 脑裂(Split-Brain)的手动处理
    在secondary节点上执行
drbdadm secondary r0
drbdadm disconnect all
drbdadmin -discard-my-data connect r0

在primary节点上执行

drbdadm disconnect all
drbdadm connect r0

如果primary节点硬件损坏,需将secondary提升为primary节点,可以如下:

先在primary主机上卸载掉DRBD
umount /d
再将primary变为secondary
drbdadm secondary r0
cat /proc/drbd
回显
cs:Connected st:Secondary/Secondary ds:UpToDate/UpToDate

将secondary节点提升为primary

drbdadm primary r0
cat /proc/drbd
回显
cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate

你可能感兴趣的:(运维及自动化,文件系统HA)