文章目录
NFS服务高可用方案
1. 简述
本篇文章主要是使用DRBD+HEARTBEAT来保证NFS的高可用。使用DRBD来保证主从服务器的文件一致, 使用 HEARTBEAT来做热切换。
2. 硬件和网络需求
需要两台服务器, 并且分别单独挂载硬盘或者硬盘分区。 同时有一个 VIP 能够对外统一提供NFS服务
3. 安装 DRBD
3.1 安装DRBD
两台服务器都进行添加的磁盘分区格式化, 如果是有已存在的分区可以忽略
parted /dev/sdb mklabel gpt
parted /dev/sdb mkpart primary 0 1024
parted /dev/sdb mkpart primary 1025 2146
parted /dev/sdb p
mkfs.ext4 /dev/sdb1
安装 和初始化drbd
rpm -Uvh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm
yum install -y drbd84-utils kmod-drbd84
modprobe drbd
3.2 编辑配置文件
创建文件 /etc/drbd.d/r0.res
172.16.1.31和 172.16.1.32 分别为两台服务器 IP
resource r0 {
net {
protocol C;
cram-hmac-alg "sha1";
shared-secret "c4f9375f9834b4e7f0a528cc65c055702bf5f24a";
}
device /dev/drbd0;
disk /dev/sdb1;
meta-disk /dev/sdb2[0];
on nfs {
address 172.16.1.31:7788;
}
on nfs-s {
address 172.16.1.32:7788;
}
}
3.3 初始化设备
drbdadm create-md r0
drbdadm up r0
cat /proc/drbd
NFS主服务器提升
drbdadm -- --overwrite-data-of-peer primary r0
将主NFS服务器的 drbd0 格式化供使用
mkfs.ext4 /dev/drbd0
测试一下
mkdir /data
mount /dev/drbd0 /data
4 NFS服务安装
4.1 安装服务
yum install -y rpcbind nfs-utils
4.2 配置
修改配置文件
echo "/data 10.0.0.0/24(rw,sync,anonuid=502,anongid=502,all_squash)" >/etc/exports
创建用户个用户组 , 赋予权限,这里的 502 是 创建的 nginx 用户的 UID
useradd -s /sbin/nologin -u 502 -M nginx
chown -R nginx.nginx /data
启动NFS服务
/etc/init.d/rpcbind start
/etc/init.d/nfs start
5. 安装heartbeat
5.1 安装
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum repolist
yum install -y heartbeat
5.2 修改配置
5.2.1 修改总体配置 /etc/ha.d/ha.cf
如下
## 日志文件
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 60
# 对方的IP
mcast eth0 225.0.0.31 694 1 0
auto_failback on
node nfs
node nfs-s
5.2.2 修改双机验证文件 /etc/ha.d/authkeys
auth 1
1 sha1 c4f9375f9834b4e7f0a528cc65c055702bf5f24a
修改一下权限
chmod 600 /etc/ha.d/authkeys
5.2.3 修改集群资源文件配置 /etc/ha.d/haresources
nfs 10.0.0.30 drbddisk::r0 Filesystem::/dev/drbd0::/data::ext4 nfs
注意这里配置的 IP 是 VIP, 两台服务器都一致
5.3 启动
/etc/init.d/heartbeat start