Centos搭建nfs高可用集群(详细教程)

centos搭建NFS高可用集群(NFS+keepalived+Sersync)

一、前言

    NFS(Network File System)高可用集群的实现,是为了确保NFS服务在单点故障时能够持续提供服务,从而提高系统的稳定性和数据的可靠性。以下是一些详细的NFS高可用集群方案:

1. NFS+Keepalived+VIP(虚拟IP)

方案概述:

    该方案通过Keepalived实现NFS服务的高可用性。Keepalived是一个基于VRRP(Virtual Router Redundancy Protocol)协议的高可用软件,它可以监控服务器的状态,并在主服务器故障时自动将虚拟IP(VIP)漂移到备份服务器,从而实现服务的无缝切换。

实施步骤:

  • 安装NFS和Keepalived:

    在所有NFS节点上安装NFS和Keepalived服务。
    确保NFS服务配置正确,共享目录和权限设置满足需求。

  • 配置Keepalived:

    在主节点和备份节点上配置Keepalived,设置VIP和相应的健康检查脚本。
    确保健康检查脚本能够准确监测NFS服务的状态。

  • 优点:

    实现简单,配置灵活。
    无需额外的硬件支持,成本较低。
    支持自动故障转移,恢复时间短。

  • 缺点:

    依赖于网络稳定性,网络故障可能导致VIP漂移失败。
    在极端情况下,可能存在脑裂问题(即两个节点都认为自己是主节点)。

2. NFS+DRBD+Heartbeat

方案概述:

    该方案通过DRBD(Distributed Replicated Block Device)和Heartbeat实现NFS服务的高可用性。DRBD是一种基于块级别的数据复制技术,可以在两台或多台服务器之间实时同步数据。Heartbeat则用于监控服务器状态和实现故障转移。

实施步骤:

  • 安装DRBD和Heartbeat:

    在所有NFS节点上安装DRBD和Heartbeat服务。
    配置DRBD以在节点之间同步数据。

  • 配置NFS服务:

     在DRBD的主节点上配置NFS服务,并设置共享目录。
    确保NFS服务只在主节点上启动,并通过DRBD保持数据同步。

  • 配置Heartbeat:

    设置Heartbeat以监控NFS节点状态,并在主节点故障时自动将NFS服务切换到备份节点。
    配置Heartbeat以启动或停止DRBD服务,确保数据同步的一致性。

  • 优点:

    数据同步级别高,可靠性好。
    支持多种同步模式,可根据需求灵活配置。
    Heartbeat配置灵活,支持多种资源接管策略。

  • 缺点:

    配置相对复杂,需要一定的技术基础。
    对网络带宽和存储性能有一定要求。

3. NFS+Sersync

方案概述:

    该方案通过Sersync实现NFS节点之间的数据实时同步。Sersync是一个基于rsync和inotify的文件同步工具,可以实时监控文件系统的变化,并将变化实时同步到远程服务器。

实施步骤:

  • 安装NFS和Sersync:

    在所有NFS节点上安装NFS服务。
    在主节点上安装Sersync服务,并配置为监控NFS共享目录。

  • 配置Sersync:

    设置Sersync以监控NFS共享目录的变化,并将变化实时同步到备份节点。
    配置Sersync的同步策略和过滤规则,以满足实际需求。

  • 优点:

    实时同步性能好,数据一致性好。
    配置简单,易于维护。

  • 缺点:

    依赖于网络稳定性,网络故障可能导致同步失败。
    在高并发场景下,同步性能可能受到影响。

    以上三种方案各有优缺点,具体选择哪种方案取决于实际需求、系统环境和技术基础。在实际应用中,可以根据具体情况进行选择和调整。同时,为了确保NFS高可用集群的稳定性和可靠性,还需要进行充分的测试和优化。

二、主机清单

IP地址 主机名 描述
192.168.0.244 / 虚拟 ip(Vip)
192.168.0.242 nfs01 nfs实例1 (centos 7.9)
192.168.0.243 nfs02 nfs实例2 (centos 7.9)
192.168.0.214 nfs client nfs客户端 (centos 7.9)

三、安装nfs

1. 关闭 nfs01、nfs02 服务器上的防火墙j及SELinux

# 关闭防火墙
systemctl stop firewalld
# 关闭开机自启
systemctl disable firewalld

#临时关闭SELinux
sudo setenforce 0
#永久关闭SELinux
sudo sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

2. 安装 NFS

在 nfs01、nfs02和 nfs client服务器上安装 NFS 服务

yum -y install nfs-utils rpcbind

#创建共享目录
mkdir /data

3. 配置 NFS 共享目录

在 nfs01、nfs02里配置

cat >> /etc/hosts << EOF
192.168.0.242    nfs01
192.168.2.243    nfs02
EOF


# 其中/data 为共享的目录,192.168.0.0/24 为可以访问nfs服务器的子网端,如要指定ip可以填写ip地址(192.168.0.214)
echo '/data 192.168.0.0/24(rw,sync,all_squash)' >> /etc/exports

4. 启动nfs服务器

在 nfs01、nfs02和 nfs client服务器执行

# 开启服务
systemctl start rpcbind && systemctl start nfs
# 设置开机自启
systemctl enable rpcbind && systemctl enable nfs

5. 测试挂载是否成功

# 测试 nfs01
mount -t nfs 192.168.0.242:/data /data

# 检查 
df -Th
#出现192.168.0.242:/data         nfs4       50G  2.6G   48G   6% /data 即为成功

# 去除挂载
umount /data

# 测试 nfs03
mount -t nfs 192.168.0.243:/data /data

# 检查 
df -Th
#出现192.168.0.243:/data         nfs4       50G  2.6G   48G   6% /data 即为成功

# 去除挂载
umount /data

四、配置文件同步

1. nfs01同步数据到nfs02

a. 在nfs02服务器配置
nfs02服务器配置
# 安装 rsync
yum -y install rsync.x86_64
# 修改 /etc/rsyncd.conf 如下,其中 hosts allow 填写 master ip
uid = nfsnobody
gid = nfsnobody
port = 873
pid file = /var/rsyncd.pid
log file = /var/log/rsyncd.log
use chroot = no
max connections = 200
read only = false
list = false
fake super = yes
ignore errors
[data]
path = /data
auth users = qiyuesuo
secrets file = /etc/rsync_salve.pass
hosts allow = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值