从0开始配置基于drbd的高可用nfs双机集群全过程(上)
2021-11-04 本文已影响0人
阿乐_822e
原理:本方案 基于drbd软件搭建NFS 的高可用方案,使用两台文件服务器分别Master(192.168.106.128)和
Slave(192.168.106.129),使用 keepalived 生成一个虚拟 IP(192.168.106.127),使用
nfs+drbd+keepalived进行 Master 与 Slave 之间文件相互同步,确保高可用。
机器使用虚拟机软件创建。
1. 添加虚拟机DC-NFS00并配置
1.1 添加虚拟机
创建虚拟机DC-NFS00,使用centos7+版本,先关闭防火墙
1.2 配置NFS服务
$ rpm -qa nfs-utils rpcbind # 确认未安装nfs服务
$ yum install -y nfs-utils rpcbind
已加载插件:fastestmirror.......完毕!
$ systemctl start nfs && systemctl status nfs
......
5月 18 10:47:46 k8s-nfsServer systemd[1]: Starting NFS server and services...
5月 18 10:47:47 k8s-nfsServer systemd[1]: Started NFS server and services.
$ systemctl enable nfs # 设置开机启动
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs�server.service to /usr/lib/systemd/system/nfs-server.service.
$ systemctl start rpcbind && systemctl status rpcbind
......
5月 18 10:47:36 k8s-nfsServer systemd[1]: Starting RPC bind service...
5月 18 10:47:36 k8s-nfsServer systemd[1]: Started RPC bind service.
$ systemctl enable rpcbind
$ mkdir /nfs && chmod 777 /nfs #创建共享目录
$ echo '/nfs 192.168.106.127/24(rw,sync,all_squash)'>/etc/exports
$ systemctl restart rpcbind && systemctl restart nfs
1.3 配置drbd(文件同步)
采用单主模式:典型的高可靠性集群方案。DRBD负责接收数据,把数据写到本地磁盘,然后发送给另一个主机,另一个主机再将数据存到自己的磁盘中。
1.3.1 配置hosts文件
$ vi /etc/hosts # 在末尾添加
192.168.106.128 DC-NFS00
192.168.106.129 DC-NFS01
1.3.2 安装相关支撑程序
$ yum -y install gcc make automake autoconf kernel-devel kernel-headers flex libxslt libxslt-devel asciidoc
1.3.3 编译drbd-utils
请自行下载drbd-9.0.19-1.tar.gz、drbd-utils-9.12.2.tar.gz
$ tar zxvf drbd-utils-9.12.2.tar.gz
$ cd drbd-utils-9.12.2
$ ./autogen.sh
$ ./configure --prefix=/usr/ --localstatedir=/var --sysconfdir=/etc
$ make KDIR=/usr/src/kernels/$(uname -r)
$ make install
$ cp scripts/drbd /etc/init.d/. ##复制启动脚本
1.3.4 编译并安装drbd模块
$ tar -zxvf drbd-9.0.19-1.tar.gz
$ cd drbd-9.0.19-1
$ make KDIR=/usr/src/kernels/$(uname -r)
$ make install
$ make -C drbd install
$ cd drbd
$ cp drbd.ko /lib/modules/$(uname -r)/kernel/lib/
$ cp drbd_transport_tcp.ko /lib/modules/$(uname -r)/kernel/lib/
$ depmod ##更新内核包关联文件
$ modprobe drbd ##安装内核模块
$ modprobe drbd_transport_tcp
$ lsmod |grep drbd ##查看模块是否加载成功
drbd_transport_tcp 22144 0
drbd 555120 2 drbd_transport_tcp
libcrc32c 12644 4 xfs,drbd,ip_vs,nf_conntrack
# 加入自启动
$ vi /etc/sysconfig/modules/drbd.modules
#! /bin/sh
/usr/sbin/modinfo -F filename drbd > /dev/null 2>&1
if [ $? -eq 0 ];then
/usr/sbin/modprobe drbd
fi
$ vi /etc/sysconfig/modules/drbd_transport_tcp.modules
#! /bin/sh
/usr/sbin/modinfo -F filename drbd_transport_tcp > /dev/null 2>&1
if [ $? -eq 0 ];then
/usr/sbin/modprobe drbd_transport_tcp
fi
1.3.5 查看drbd版本及路径
$ cat /proc/drbd
version: 9.0.19-1 (api:2/proto:86-115)
GIT-hash: 6f5fa5d348a99e5eeb09d83c49853d72e614fd07 build by root@k8s-nfs-slave,
2020-06-29 02:58:39
Transports (api:16): tcp (9.0.19-1)
1.4 添加新磁盘并分区
关闭虚拟机,为其添加一块400G的新硬盘再上电
$ fdisk -l # 新硬盘已识别
.......磁盘 /dev/sdb:429.5 GB, 429496729600 字节,838860800 个扇区.......
$ fdisk /dev/sdb # 开始分区
# 依次:n,p,回车,回车,w
$ partprobe
$ fdisk -l
1.5 配置drbd资源文件
$ vi /etc/drbd.d/drbd.res # 内容如下
resource r1 { ##定义资源组名称为r1
net {
cram-hmac-alg sha1; ##使用sha1加密
shared-secret "123456"; ##生成加密密钥
}
volume 1 { ##定义卷组
device /dev/drbd1; ##逻辑设备路径(建立块设备)
disk /dev/sdb1; ##物理设备路径(用于复制的分区)
meta-disk internal; ##meta
}
on DC-NFS00 { ##on开头,后面是主机名称(需与uname -n相同)
node-id 0;
address 192.168.106.128:7000; ##设置drbd监听地址和端口
}
on DC-NFS01 {
node-id 1;
address 192.168.106.129:7000;
}
connection {
host DC-NFS00 port 7000;
host DC-NFS01 port 7000;
net {
protocol C; ##使用drbd的第三种同步协议,表示收到
对方主机写入确认后,则认为写入完成
}
}
}
2. 添加虚拟机DC-NFS01并配置
关闭DC-NFS00,并克隆出DC-NFS01,修改机器名与IP
$ nmcli general hostname DC-NFS01
$ sed -i 's/128/129/' /etc/sysconfig/network-scripts/ifcfg-ens192
$ service network restart
至此,硬件配置完成。下一篇具体配置NFS Server