美文网首页@IT·互联网运维开发os
从0开始配置基于drbd的高可用nfs双机集群全过程(下)

从0开始配置基于drbd的高可用nfs双机集群全过程(下)

作者: 阿乐_822e | 来源:发表于2021-11-05 11:00 被阅读0次

3 配置资源

两台机分别操作

$ dd if=/dev/zero of=/dev/sdb1 bs=1M count=100 ##用指定大小的块拷贝一个文件
$ drbdadm -c /etc/drbd.conf create-md all ##创建设备元数据
initializing activity log
......
success
$ drbdadm create-md r1 ##创建r1设备元
You want me to create a v09 style flexible-size internal meta data block.
......
New drbd meta data block successfully created.
$ drbdadm up r1 ##启用该资源
$ drbdadm role r1
# 此时两台机都是Secodnary

4. 将DC-NFS00置主并格式化新分区并挂载

# 在DC-NFS00上操作
$ drbdadm primary r1 --force
$ drbdadm role r1 # 强行置主
$ /root/drbd-utils-9.12.2/scripts/drbd-overview.pl ##查看状态
..... 1:r1/1 Connected(2*) Primar/Second UpToDa/Incons /nfs ext4 394G 73M 374G
1%
$ mkfs.ext4 /dev/drbd1 ##格式化/dev/drbd1
$ mount /dev/drbd1 /nfs ##挂载
$ drbdadm status r1
r1 role:Primary
  volume:1 disk:UpToDate
  DC-NFS01 role:Secondary
    volume:1 replication:SyncSource peer-disk:Inconsistent done:12.65 
# 在DC-NFS01上
$ drbdadm status r1
r1 role:Secondary
  volume:1 disk:Inconsistent
  DC-NFS00 role:Primary
    volume:1 replication:SyncTarget peer-disk:UpToDate done:12.80 # 正在同步中
# 以下两台机上都做
$ systemctl start drbd && systemctl enable drbd

5. 安装并配置Keepalived

两台机都做

$ yum -y install keepalived.x86_64
已加载插件:fastestmirror
......
完毕!
$ rm -f /etc/keepalived/keepalived.conf
$ cat << EOF | tee /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id NFS-Master
}

vrrp_script chk_nfs 
{
    script "/etc/keepalived/nfs_check.sh"    #监控脚本
    interval 2   # 2秒一次
    weight -20  # keepalived部署了两台所以设为20,如果三台就设为30
}

vrrp_instance VI_1 {
    state BACKUP    # 两台主机都设为backup非抢占模式
    interface ens32  # 网卡文件名称,根据实际修改
    virtual_router_id 127   # 在同一子网中的id要唯一
    priority 100
    advert_int 1
    nopreempt      # 设置为非抢占模式必须要该参数
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    track_script {
        chk_nfs
    }
    notify_stop /etc/keepalived/notify_stop.sh    # keepalived停服时调用
    virtual_ipaddress {
        192.168.106.127/24      # 虚拟出的公共IP
    }
} 
EOF

# 配置监控脚本
$ cat << EOF | tee /etc/keepalived/nfs_check.sh  
#!/bin/bash

# 日志文件大于5M截取最后50行
[ `du -m /tmp/nfs-chk.log  | awk '{print $1}'` -gt 5 ] && tail -50 /tmp/nfs-chk.log>/tmp/nfs-tmp && mv /tmp/nfs-tmp /tmp/nfs-chk.log -f

vip=`ip a |grep 106.127|wc -l`
if [ $vip -eq 1 ];then                  # 主keepalived机器检查
   service nfs status &>/dev/null       # 检查nfs可用性
   if [ $? -ne 0 ];then                 # 如果服务状态不正常,先尝试重启服务
      time=`date "+%F %H:%M:%S"`
      echo -e "$time  ------主机NFS服务故障,重启之!------\n" >>/tmp/nfs-chk.log
      service nfs start &>/dev/null 
   fi
   nfsStatus=`ps -C nfsd --no-header | wc -l`
   if [ $nfsStatus -eq 0 ];then         # 若重启nfs服务后,仍不正常      
      time=`date "+%F %H:%M:%S"`
      echo -e "$time  ------nfs服务故障且重启失败,切换到备用服务器------\n" >>/tmp/nfs-chk.log
      service nfs stop &>>/tmp/nfs-chk.log                      # 停止nfs服务
      umount /dev/drbd1 &>>/tmp/nfs-chk.log                     # 卸载drbd设备     
      drbdadm secondary r1 &>>/tmp/nfs-chk.log                  # 将drbd主降级为备     
      service keepalived stop &>>/tmp/nfs-chk.log               # 关闭keepalived
      time=`date "+%F %H:%M:%S"`
      echo -e "$time  ------切换结束!------\n" >>/tmp/nfs-chk.log
      sleep 2
      service keepalived start &>>/tmp/nfs-chk.log              # 再开启keepalived
   else
      # drbd置主没有,挂载没有
      drbdadm role r1|grep Primary &>/dev/null
      if [ $? -ne 0 ];then                              # drbd未置Primary
        time=`date "+%F %H:%M:%S"`           
        echo -e "$time  ------将本机置为DRBD主机并挂载/nfs目录------\n" >>/tmp/nfs-chk.log
        drbdadm primary --force r1 &>>/tmp/nfs-chk.log          # 将drbd置为主    
        mount /dev/drbd1 /nfs &>>/tmp/nfs-chk.log       # 挂载drbd设备
      fi       
   fi
else                                    # keepalived备机检查
   service nfs status &>/dev/null
   if [ $? -eq 0 ];then                 # NFS服务必须处于关闭状态
      time=`date "+%F %H:%M:%S"`             
      echo -e "$time  ------关闭备机NFS服务------\n" >>/tmp/nfs-chk.log
      service nfs stop &>>/tmp/nfs-chk.log
   fi
   drbdadm role r1|grep Primary &>/dev/null
   if [ $? -eq 0 ];then                         # drbd必须置备并卸载drbd设备
      time=`date "+%F %H:%M:%S"`
      echo -e "$time  ------备机置secondary并卸载备机drbd设备------\n" >>/tmp/nfs-chk.log
      drbdadm secondary r1 &>>/tmp/nfs-chk.log  
      umount /dev/drbd1 &>>/tmp/nfs-chk.log &>>/tmp/nfs-chk.log 
   fi
fi
EOF

# 配置keepalived停服脚本
$ cat << EOF | tee /etc/keepalived/notify_stop.sh 
#!/bin/bash

time=`date "+%F %H:%M:%S"`
echo -e "$time  ------开始切换到备用服务器------\n" >>/tmp/nfs-chk.log
service nfs stop &>>/tmp/nfs-chk.log                    # 停止nfs服务
umount /dev/drbd1 &>>/tmp/nfs-chk.log                   # 卸载drbd设备     
drbdadm secondary r1 &>>/tmp/nfs-chk.log                # 将drbd主降级为备     
time=`date "+%F %H:%M:%S"`
echo -e "$time  ------切换结束!------\n" >>/tmp/nfs-chk.log
sleep 2
service keepalived start &>>/tmp/nfs-chk.log            # 再开启keepalived
EOF

$ chmod +x /etc/keepalived/*.sh
$ systemctl start  keepalived.service && systemctl enable keepalived.service
# 以下在备机上,修改/etc/keepalived/keepalived.conf
router_id NFS-Slave
priority 80     #从节点的权重要比主节点低
# 再重启keepalived服务
$ service keepalived restart

说明:在实际工作中,一定要连接到VIP进行操作,如果直连到slave机上对同步目录进行操作,是不会同步到master上的。
至此,NFS-SERVER的所有配置工作完毕!下面介绍NFS客户端的配置。

6. 配置NFS客户端

$ yum -y install nfs-utils
$ systemctl start nfs && systemctl enable nfs && systemctl status nfs
$ showmount -e 192.168.106.127    # 查看可挂载NFS磁盘
Export list for 192.168.106.127:
/nfs 192.168.106.127/24
$ mkdir /nfs
$ mount -t nfs 192.168.106.127:/nfs /nfs  # 挂载
$ df /nfs  # 查看一下挂载情况
文件系统                 1K-块  已用      可用 已用% 挂载点
192.168.106.127:/nfs 412702720 73728 391642112    1% /nfs
# 再配置开机自动挂载
$ echo '192.168.106.127:/nfs    /nfs    nfs     rw,tcp,intr     0  0' >> /etc/fstab

\color{red}{注意:最后一步配置开机自动挂载非常重要,否则一客户端机器重启之后就会发现无法访问nfs目录了!}

7. NFS简单性能测试

[root@k8s-node1 ~]# mkdir /nfs
[root@k8s-node1 ~]# mount -t nfs 192.168.106..127:/nfs /nfs
# 写测试
[root@k8s-node1 ~]# time dd if=/dev/zero of=/nfs/testfile bs=32k count=16384
......536870912字节(537 MB)已复制,1.9337 秒,278 MB/秒......
# 读测试
[root@k8s-node1 ~]# time dd if=/nfs/testfile of=/dev/null bs=16k
......536870912字节(537 MB)已复制,0.123949 秒,4.3 GB/秒......

可以多重复几次,计算一下平均速率

--------------------------OVER------------------------------------------------------
参考文档:
1、NFS传输速度优化
2、DRBD编译安装配置
3、Centos下部署DRBD+NFS+Keepalived高可用环境记录

相关文章

网友评论

    本文标题:从0开始配置基于drbd的高可用nfs双机集群全过程(下)

    本文链接:https://www.haomeiwen.com/subject/gralzltx.html