searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

NFS高可用部署

2023-07-24 01:30:07
60
0
nfs高可用配置
172.16.2.17 master
172.16.2.16 slave
172.16.2.200 vip
 
1. 主备nfs服务部署
 
2. 主备rsync服务部署
1)master slave都要操作
创建同步数据用户
nfsdata/xxxxx
useradd nfsdata
echo xxxxx | passwd --stdin nfsdata
 
安装rsync
yum -y install rsync.x86_64
 
配置认证文件
[root@~ /]# echo 'nfsdata:xxxxx' > /etc/rsyncd.secrets
[root@~ /]# chmod 600 /etc/rsync.pass
 
配置rsync认证用户密码
[root@~ /]# echo 'xxxxx' > /etc/rsync.pass
[root@~ /]# chmod 600 /etc/rsync.pass
 
2)master
配置rsync配置文件
cat /etc/rsyncd.conf
# /etc/rsyncd: configuration file for rsync daemon mode
uid = root
gid = root
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 = /nfsdata
auth users = nfsdata
secrets file = /etc/rsync.secrets
hosts allow = 172.16.2.16
 
3)slave
配置文件/etc/rsyncd.conf
# /etc/rsyncd: configuration file for rsync daemon mode
uid = root
gid = root
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 = /nfsdata
auth users = nfsdata
secrets file = /etc/rsync.secrets
hosts allow = 172.16.2.17
 
4)master slave启动rsync服务
[root@~ /]# rsync --daemon --config=/etc/rsyncd.conf
查看rsync daemon进程
[root@~ /]# ps -ef | egrep "rsync --daemon.*rsyncd.conf" | grep -v 'grep'
查看同步日志
tailf /var/log/rsyncd.log
 
3. 主备Sersync服务部署
1)master slave部署Sersync
[root@~ local]# cd /usr/local
[root@~ local]# tar xvf sersync2.5.4_64bit_binary_stable_final.tar.gz
[root@~ local]# mv GNU-Linux-x86/ sersync
[root@~ local]# cd sersync/
 
2)master
修改配置文件confxml.xml
[root@~ local]# sed -ri '24s#<localpath watch="/opt/tongbu">#<localpath watch="/nfsdata">#g' confxml.xml
[root@~ local]# sed -ri '25s#<remote ip="127.0.0.1" name="tongbu1"/>#<remote ip="172.16.2.16" name="data"/>#g' confxml.xml
[root@~ local]# sed -ri '30s#<commonParams params="-artuz"/>#<commonParams params="-az"/>#g' confxml.xml
[root@~ local]# sed -ri '31s#<auth start="false" users="root" passwordfile="/etc/rsync.pas"/>#<auth start="true" users="nfsdata" passwordfile="/etc/rsync.pass"/>#g' confxml.xml
[root@~ local]# sed -ri '33s#<timeout start="false" time="100"/><!-- timeout=100 -->#<timeout start="true" time="100"/><!-- timeout=100 -->#g' confxml.xml
 
3)slave
修改配置文件confxml.xml
[root@~ local]# sed -ri '24s#<localpath watch="/opt/tongbu">#<localpath watch="/nfsdata">#g' confxml.xml
[root@~ local]# sed -ri '25s#<remote ip="127.0.0.1" name="tongbu1"/>#<remote ip="172.16.2.17" name="data"/>#g' confxml.xml
[root@~ local]# sed -ri '30s#<commonParams params="-artuz"/>#<commonParams params="-az"/>#g' confxml.xml
[root@~ local]# sed -ri '31s#<auth start="false" users="root" passwordfile="/etc/rsync.pas"/>#<auth start="true" users="nfsdata" passwordfile="/etc/rsync.pass"/>#g' confxml.xml
[root@~ local]# sed -ri '33s#<timeout start="false" time="100"/><!-- timeout=100 -->#<timeout start="true" time="100"/><!-- timeout=100 -->#g' confxml.xml
 
4)master启动Sersync
[root@~ local]# /usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml
查看sersync进程
ps -ef | egrep "sersync" | grep -v 'grep'
 
4. 主备部署keepalived服务
1)master slave安装keepalived
[root@~ ]# yum install -y keepalived
配置keepalived配置文件
2)开通虚拟IP  172.16.2.200
3)master 修改配置文件keepalived.conf
[root@~ ]# cd /etc/keepalived/
/etc/keepalived/keepalived.conf
master
global_defs {
   router_id nfs1
}
 
vrrp_script chk_nfs {
  script "/user/k_NFS_check.sh"
  interval 1
}
 
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
nopreempt   //非抢占模式,服务漂移到slave后,master恢复后,不会自动切换到master,避免节点频繁切换
    authentication {
        auth_type PASS
        auth_pass xxxxxxxx
    }
    track_script {
      chk_nfs
    }
    virtual_ipaddress {
        172.16.2.200  //虚拟IP地址
    }
}
 
4)slave 修改配置文件keepalived.conf
/etc/keepalived/keepalived.conf
 
global_defs {
   router_id nfs2
}
 
vrrp_script chk_nfs {
  script "/user/k_NFS_check.sh"
  interval 1
}
 
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 90
    advert_int 1
nopreempt
    authentication {
        auth_type PASS
        auth_pass xxxxxxxx
    }
    track_script {
      chk_nfs
    }
    virtual_ipaddress {
        172.16.2.200
    }
}
 
keepalived监控脚本内容:
/user/k_NFS_check.sh
#!/bin/bash
A=`ps -C rpcbind --no-header |wc -l`
if [ $A -eq 0 ];then
systemctl start rpcbind
fi
 
B=`ps -C nfsd --no-header |wc -l`
if [ $B -eq 0 ];then
systemctl start nfs
fi
 
C=`ps -C rsync --no-header |wc -l`
if [ $C -eq 0 ];then
rsync --daemon --config=/etc/rsyncd.conf
fi
 
if [ $A -eq 0 ];then
  pkill keepalived
fi
if [ $B -eq 0 ];then
pkill keepalived
fi
if [ $C -eq 0 ];then
pkill keepalived
fi
 
 
5)master slave启动keepalived
systemctl start keepalived
设为开机启动:
systemctl enable keepalived
查看keepalived服务状态
systemctl status keepalived
systemctl start keepalived
systemctl stop keepalived
 
 
5. 检查虚拟ip
当主节点nfs服务挂掉后,keepalived监控脚本重启nfs服务,重启失败后会杀掉keepalived进程,节点自动漂移到slave节点
在当前服务可用节点,进行检查虚拟IP,
[root@mynfs01 /]# ip a | grep 172.16.2.200
 
6. 主备配置定时任务sersync服务状态监控
crontab -e
* * * * * echo -e $(date) `/usr/sersync_check.sh` >> /usr/sersync_check.log 2>&1
 
/user/sersync_check.sh
#!/bin/bash
# 每秒执行一次
# 间隔的秒数,不能大于60 
step=1
vip=172.16.2.200
for (( i = 0; i < 60; i=(i+step) )); do
  if [ `/usr/sbin/ip a | grep $vip |wc -l` -eq 0 ]; then
    if [ `/usr/bin/ps -C sersync2 --no-header |wc -l` -eq 1 ]; then
      /usr/bin/pkill sersync2
    fi
  else
    if [ `/usr/bin/ps -C sersync2 --no-header |wc -l` -eq 0 ]; then
      /usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml
  if [ `/usr/bin/ps -C sersync2 --no-header |wc -l` -eq 0 ]; then
    /usr/bin/pkill keepalived
  fi
    fi
  fi
  /usr/bin/sleep $step
done
0条评论
0 / 1000
nmy
3文章数
0粉丝数
nmy
3 文章 | 0 粉丝
nmy
3文章数
0粉丝数
nmy
3 文章 | 0 粉丝
原创

NFS高可用部署

2023-07-24 01:30:07
60
0
nfs高可用配置
172.16.2.17 master
172.16.2.16 slave
172.16.2.200 vip
 
1. 主备nfs服务部署
 
2. 主备rsync服务部署
1)master slave都要操作
创建同步数据用户
nfsdata/xxxxx
useradd nfsdata
echo xxxxx | passwd --stdin nfsdata
 
安装rsync
yum -y install rsync.x86_64
 
配置认证文件
[root@~ /]# echo 'nfsdata:xxxxx' > /etc/rsyncd.secrets
[root@~ /]# chmod 600 /etc/rsync.pass
 
配置rsync认证用户密码
[root@~ /]# echo 'xxxxx' > /etc/rsync.pass
[root@~ /]# chmod 600 /etc/rsync.pass
 
2)master
配置rsync配置文件
cat /etc/rsyncd.conf
# /etc/rsyncd: configuration file for rsync daemon mode
uid = root
gid = root
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 = /nfsdata
auth users = nfsdata
secrets file = /etc/rsync.secrets
hosts allow = 172.16.2.16
 
3)slave
配置文件/etc/rsyncd.conf
# /etc/rsyncd: configuration file for rsync daemon mode
uid = root
gid = root
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 = /nfsdata
auth users = nfsdata
secrets file = /etc/rsync.secrets
hosts allow = 172.16.2.17
 
4)master slave启动rsync服务
[root@~ /]# rsync --daemon --config=/etc/rsyncd.conf
查看rsync daemon进程
[root@~ /]# ps -ef | egrep "rsync --daemon.*rsyncd.conf" | grep -v 'grep'
查看同步日志
tailf /var/log/rsyncd.log
 
3. 主备Sersync服务部署
1)master slave部署Sersync
[root@~ local]# cd /usr/local
[root@~ local]# tar xvf sersync2.5.4_64bit_binary_stable_final.tar.gz
[root@~ local]# mv GNU-Linux-x86/ sersync
[root@~ local]# cd sersync/
 
2)master
修改配置文件confxml.xml
[root@~ local]# sed -ri '24s#<localpath watch="/opt/tongbu">#<localpath watch="/nfsdata">#g' confxml.xml
[root@~ local]# sed -ri '25s#<remote ip="127.0.0.1" name="tongbu1"/>#<remote ip="172.16.2.16" name="data"/>#g' confxml.xml
[root@~ local]# sed -ri '30s#<commonParams params="-artuz"/>#<commonParams params="-az"/>#g' confxml.xml
[root@~ local]# sed -ri '31s#<auth start="false" users="root" passwordfile="/etc/rsync.pas"/>#<auth start="true" users="nfsdata" passwordfile="/etc/rsync.pass"/>#g' confxml.xml
[root@~ local]# sed -ri '33s#<timeout start="false" time="100"/><!-- timeout=100 -->#<timeout start="true" time="100"/><!-- timeout=100 -->#g' confxml.xml
 
3)slave
修改配置文件confxml.xml
[root@~ local]# sed -ri '24s#<localpath watch="/opt/tongbu">#<localpath watch="/nfsdata">#g' confxml.xml
[root@~ local]# sed -ri '25s#<remote ip="127.0.0.1" name="tongbu1"/>#<remote ip="172.16.2.17" name="data"/>#g' confxml.xml
[root@~ local]# sed -ri '30s#<commonParams params="-artuz"/>#<commonParams params="-az"/>#g' confxml.xml
[root@~ local]# sed -ri '31s#<auth start="false" users="root" passwordfile="/etc/rsync.pas"/>#<auth start="true" users="nfsdata" passwordfile="/etc/rsync.pass"/>#g' confxml.xml
[root@~ local]# sed -ri '33s#<timeout start="false" time="100"/><!-- timeout=100 -->#<timeout start="true" time="100"/><!-- timeout=100 -->#g' confxml.xml
 
4)master启动Sersync
[root@~ local]# /usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml
查看sersync进程
ps -ef | egrep "sersync" | grep -v 'grep'
 
4. 主备部署keepalived服务
1)master slave安装keepalived
[root@~ ]# yum install -y keepalived
配置keepalived配置文件
2)开通虚拟IP  172.16.2.200
3)master 修改配置文件keepalived.conf
[root@~ ]# cd /etc/keepalived/
/etc/keepalived/keepalived.conf
master
global_defs {
   router_id nfs1
}
 
vrrp_script chk_nfs {
  script "/user/k_NFS_check.sh"
  interval 1
}
 
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
nopreempt   //非抢占模式,服务漂移到slave后,master恢复后,不会自动切换到master,避免节点频繁切换
    authentication {
        auth_type PASS
        auth_pass xxxxxxxx
    }
    track_script {
      chk_nfs
    }
    virtual_ipaddress {
        172.16.2.200  //虚拟IP地址
    }
}
 
4)slave 修改配置文件keepalived.conf
/etc/keepalived/keepalived.conf
 
global_defs {
   router_id nfs2
}
 
vrrp_script chk_nfs {
  script "/user/k_NFS_check.sh"
  interval 1
}
 
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 90
    advert_int 1
nopreempt
    authentication {
        auth_type PASS
        auth_pass xxxxxxxx
    }
    track_script {
      chk_nfs
    }
    virtual_ipaddress {
        172.16.2.200
    }
}
 
keepalived监控脚本内容:
/user/k_NFS_check.sh
#!/bin/bash
A=`ps -C rpcbind --no-header |wc -l`
if [ $A -eq 0 ];then
systemctl start rpcbind
fi
 
B=`ps -C nfsd --no-header |wc -l`
if [ $B -eq 0 ];then
systemctl start nfs
fi
 
C=`ps -C rsync --no-header |wc -l`
if [ $C -eq 0 ];then
rsync --daemon --config=/etc/rsyncd.conf
fi
 
if [ $A -eq 0 ];then
  pkill keepalived
fi
if [ $B -eq 0 ];then
pkill keepalived
fi
if [ $C -eq 0 ];then
pkill keepalived
fi
 
 
5)master slave启动keepalived
systemctl start keepalived
设为开机启动:
systemctl enable keepalived
查看keepalived服务状态
systemctl status keepalived
systemctl start keepalived
systemctl stop keepalived
 
 
5. 检查虚拟ip
当主节点nfs服务挂掉后,keepalived监控脚本重启nfs服务,重启失败后会杀掉keepalived进程,节点自动漂移到slave节点
在当前服务可用节点,进行检查虚拟IP,
[root@mynfs01 /]# ip a | grep 172.16.2.200
 
6. 主备配置定时任务sersync服务状态监控
crontab -e
* * * * * echo -e $(date) `/usr/sersync_check.sh` >> /usr/sersync_check.log 2>&1
 
/user/sersync_check.sh
#!/bin/bash
# 每秒执行一次
# 间隔的秒数,不能大于60 
step=1
vip=172.16.2.200
for (( i = 0; i < 60; i=(i+step) )); do
  if [ `/usr/sbin/ip a | grep $vip |wc -l` -eq 0 ]; then
    if [ `/usr/bin/ps -C sersync2 --no-header |wc -l` -eq 1 ]; then
      /usr/bin/pkill sersync2
    fi
  else
    if [ `/usr/bin/ps -C sersync2 --no-header |wc -l` -eq 0 ]; then
      /usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml
  if [ `/usr/bin/ps -C sersync2 --no-header |wc -l` -eq 0 ]; then
    /usr/bin/pkill keepalived
  fi
    fi
  fi
  /usr/bin/sleep $step
done
文章来自个人专栏
技术总结
3 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0