ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Centos7 下安装NFS+Heartbeat+DRBD

2021-03-12 15:02:25  阅读:232  来源: 互联网

标签:DRBD local 192.168 Centos7 etc NFS usr heartbeat root


Centos7 下安装NFS+Heartbeat+DRBD



需求:一般由于公司资金紧张,也没有更多的资金购买存储设备,手都上只有仅有的资金购买2台服务器,但又想有一个高可用的环境满足企业的日常使用的需求,这里当然有很多种方式,总体来说,NFS+Heartbeat+DRBD,是可以满足,因为NFS部署方便,维护简单,并且NFS是以明文方式存储,不像MFS这样的分布式存储架构,数据分散到每台服务器上,并且数据都是加密存储,如有一台node坏了会影响整个分布式存储的性能,综上考虑还是选择NFS+Heartbeat+DRBD这种架构。


目的:通过部署NFS+Heartbeat+DRBD来满足公司业务在高可用环境的使用,确保业务不中断的运行。


实施规划:

名称接口IP地址
用途
heartbeat01eth0
192.168.202.20主服务器端IP地址

eth1172.16.0.20
用于NFS服务器之间心跳连接(直连)
VIP 

192.168.202.200用于提供对外NFS存储系统服务的VIP
heartbeat02eth0
192.168.202.21备服务器端IP地址

eth1172.16.0.21
用于NFS服务器之间心跳连接(直连)
VIP
192.168.202.200用于提供对外NFS存储系统服务的VIP

实施步骤:

一、安装过程

1,查看Linux版本及内核版本,需要这2台服务器版本保持一致。

cat /proc/version

image.png

uname –r

image.png

2,关闭防火墙和selinux,两边都需要做。

systemctl stop firewalld

systemctl disable firewalld

sed -i 's#SELINUX=enforcing#SELINUX=disabled# /etc/selinux/config’

3,配置时间同步,两边都需要做。

# sysnc time from ntpserver
*/5 * * * * /usr/sbin/ntpdate  time.ustc.edu.cn >/dev/null 2>&1

4,配置hosts文件,两边都需要做心跳。

echo "`ifconfig ens34 |awk -F '[ :]+' 'NR==2 {print $3}'` `hostname`">>/etc/hosts

image.png5,配置路由,两边都需要做

/sbin/route add -host 172.16.0.21 dev ens34
echo '/sbin/route add -host 172.16.0.21 dev ens34' >>/etc/rc.local
route –n

image.png6,下载安装heartbeat,并提前安装依赖包。

yum install gcc gcc-c++ autoconf automake libtool glib2-devel libxml2-devel bzip2 bzip2-devel e2fsprogs-devel libxslt-devel libtool-ltdl-devel asciidoc -y

7,创建用户和组。

groupadd haclient
useradd -g haclient hacluster

8,新建目录,下载软件包。

mkdir –p /data && cd /data
wget http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/958e11be8686.tar.bz2
wget http://hg.linux-ha.org/glue/archive/0a7add1d9996.tar.bz2
wget https://github.com/ClusterLabs/resource-agents/archive/v3.9.6.tar.gz

9,解压并安装glue。

tar xf 0a7add1d9996.tar.bz2
cd Reusable-Cluster-Components-glue--0a7add1d9996/
./autogen.sh
./configure --prefix=/usr/local/heartbeat \
--with-daemon-user=hacluster \
--with-daemon-group=haclient \
--enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
make && make install
cd ..

10,解压并安装Resource Agents。

tar xf v3.9.6.tar.gz
cd resource-agents-3.9.6/
./autogen.sh 
./configure --prefix=/usr/local/heartbeat \
--with-daemon-user=hacluster \
--with-daemon-group=haclient \
--enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
make && make install
cd ..

11,解压并heartbeat。

tar xf 958e11be8686.tar.bz2
cd Heartbeat-3-0-958e11be8686/
./bootstrap
export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"
./configure --prefix=/usr/local/heartbeat \
--with-daemon-user=hacluster \
--with-daemon-group=haclient \
--enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
make && make install

12,配置网卡支持插件文件。

mkdir -pv /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/
cp /usr/lib/ocf/lib/heartbeat/ocf-* /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/

13,做一个链接。

ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/RAExec/* /usr/local/heartbeat/lib/heartbeat/plugins/RAExec/
ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/* /usr/local/heartbeat/lib/heartbeat/plugins/

14,到解压的文件下拷贝文件到安装目录下。

cd  /data/Heartbeat-3-0-958e11be8686/doc
拷贝authkeys,haresources,ha.cf 三个文件到/usr/local/heartbeat/etc/ha.d目录下
cp {authkeys,haresources,ha.cf} /usr/local/heartbeat/etc/ha.d

15,配置ha.cf文件,先备份一下配置文件,然后再操作。

vim /usr/local/heartbeat/etc/ha.d/ha.cf
#the start 
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility     local1
 
keepalive 2
deadtime 30
warntime 10
initdead 60
 
#bcast  eth1
#mcast  eth1 225.0.0.18 694 1 0
ucast ens34 172.16.0.21
auto_failback on
node    heartbeat01
node    heartbeat02
crm     no
#the end

提示:另外一台也同样配置,唯一不同的是需要改单播ip地址

16,配置authkeys文件,先备份一下配置文件,然后再操作。

vim /usr/local/heartbeat/etc/ha.d/authkeys
auth 1
1 sha1 47e9336850f1db6fa58bc470bc9b7810eb397f04

17,给authkeys文件权限为600

chmod 600 /usr/local/heartbeat/etc/ha.d/authkeys

提示:另外一台也同样配置

18,配置haresources,先备份一下配置文件,然后再操作。

vim /usr/local/heartbeat/etc/ha.d/haresources
#192.168.202.200 VIP 
#heartbeat01 IPaddr::192.168.202.200/24/ens33
heartbeat01 IPaddr::192.168.202.200/24/ens33 drbddisk::data Filesystem::/dev/drbd0::/data::ext4

19,启动heartbeat测试一下

[root@heartbeat01 heartbeat]# service heartbeat start
Starting heartbeat (via systemctl):                        [  OK  ]
[root@heartbeat01 heartbeat]# ip add |grep 192.168.202
    inet 192.168.202.20/24 brd 192.168.202.255 scope global noprefixroute ens33
    inet 192.168.202.200/24 brd 192.168.202.255 scope global secondary ens33:0
[root@heartbeat01 heartbeat]# ps -ef |grep heartbeat
root      94686      1  0 15:01 ?        00:00:00 heartbeat: master control process
root      94688  94686  0 15:01 ?        00:00:00 heartbeat: FIFO reader
root      94689  94686  0 15:01 ?        00:00:00 heartbeat: write: ucast ens34
root      94690  94686  0 15:01 ?        00:00:00 heartbeat: read: ucast ens34
root      94952   1659  0 15:03 pts/0    00:00:00 grep --color=auto heartbeat

image.png

20,添加yum源并安装DRBD软件。

yum install https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm -y
yum -y install drbd84-utils kmod-drbd84
[root@heartbeat01 ~]# modprobe drbd
[root@heartbeat01 ~]# lsmod |grep -i drbd
drbd                  397041  0 
libcrc32c              12644  2 xfs,drbd
echo "modprobe drbd >/dev/null 2>&1" >/etc/sysconfig/modules/drbd.modules

image.png21,先分区,然后格式化数据。

fdisk –l
fdisk /dev/sdb
mkfs.ext4 /dev/sdb1

22,编辑drbd配置文件。

vim  /etc/drbd.conf
#
global {
    # minor-count 64;
    # dialog-refresh 5; # 5 seconds
    # disable-ip-verification;
    usage-count no;
}
 
common {
  protocol C;
 
  disk {
    on-io-error   detach;
    no-disk-flushes;
    no-md-flushes;
  }
 
  net {
    sndbuf-size 512k;
    # timeout       60;    #  6 seconds  (unit = 0.1 seconds)
    # connect-int   10;    # 10 seconds  (unit = 1 second)
    # ping-int      10;    # 10 seconds  (unit = 1 second)
    # ping-timeout   5;    # 500 ms (unit = 0.1 seconds)
    max-buffers     8000;
    unplug-watermark   1024;
    max-epoch-size  8000;
    # ko-count 4;
    # allow-two-primaries;
    cram-hmac-alg "sha1";
    shared-secret "hdhwXes23sYEhart8t";
    after-sb-0pri disconnect;
    after-sb-1pri disconnect;
    after-sb-2pri disconnect;
    rr-conflict disconnect;
    # data-integrity-alg "md5";
    # no-tcp-cork;
  }
 
  syncer {
    rate 330M;
  }
}
 
resource data {
  on heartbeat01 {
    device     /dev/drbd0;
    disk       /dev/sdb1;
    address    192.168.202.20:7788;
    #meta-disk /dev/sdb1 [0];
    meta-disk  internal;
  }
 
  on heartbeat02 {
    device    /dev/drbd0;
    disk      /dev/sdb1;
    address   192.168.202.21:7788;
    #meta-disk /dev/sdb1 [0];
    meta-disk internal;
  }
}

提示:主要需要修改的地方是IP地址,同时采用内部模式。

23,初始化环境

drbdadm create-md data

提示:有报错如下图

image.png

解决:dd if=/dev/zero of=/dev/sdb1 bs=1M count=1

24,启动DRBD。

systemctl start drbd.service         #启动DRBD服务
drbdadm primary --force data       #把heartbeat01设置为主
drbdadm role data                #查看角色
drbdadm dstate data              #查看数据同步状态,如上为一致,还有Inconsistent状态为数据不一致正在同步
cat /proc/drbd                  #查看传输的状态

image.png25,在主服务器上执行。


mkdir /md1
mkfs.ext4 /dev/drbd0
mount /dev/drbd0 /md1
cd /md1
#弄几个文件测试一下,这个步骤可以省略
for n in `seq 10`;do cp /bin/cat tony$n;done

26,heartbeat配合drbd使用说明。

在/usr/local/heartbeat/etc/ha.d/haresources下面配置
heartbeat01 IPaddr::192.168.202.200/24/ens33 drbddisk::data Filesystem::/dev/drbd0::/md1::ext4
#参数配置说明
1,IPaddr::192.168.202.200/24/ens33
/usr/local/heartbeat/etc/ha.d/resource.d/ IPaddr::192.168.202.200/24/ens33
start 配置了一个VIP 192.168.202.200
2,drbddisk::data
/usr/local/heartbeat/etc/ha.d/resource.d/ drbddisk  data stop start 
启动drbd脚本来提供服务。
3,Filesystem::/dev/drbd0::/md1::ext4
/usr/local/heartbeat/etc/ha.d/resource.d/ Filesystem /dev/drbd0  /md1  ext4 start 挂载一个文件夹名字叫/md1

备注:在/usr/local/heartbeat/etc/ha.d/haresources内IPaddr,Filesystem等脚本存放路径在/etc/ha.d/resource.d/下,也可在该目录下存放服务启动脚本(例如:mysql,www),将相同脚本名称添加到/etc/ha.d/haresources内容中,从而跟随heartbeat启动而启动该脚本。

下面是对上述命令的具体解释:
※IPaddr::192.168.202.200/24/ens33:用IPaddr脚本配置对外服务的浮动虚拟IP这个就是VIP IP地址。
※drbddisk::data:用drbddisk脚本实现DRBD主从节点资源组的挂载和卸载
※Filesystem::/dev/drbd0::/md1:用Filesystem脚本实现磁盘挂载和卸载

27,错误以及解决办法,先看日志,在找解决办法。

有2个错误在执行cat /var/log/ha-debug发现的。

一个是错误大概如下:Setup problem: couldn't find command: fuser

解决办法:安装一个软件yum install psmisc就可以解决了。

还有一个说是没有drbddisk脚本:然后查了一下还是真没有,然后拷贝一个放在/usr/local/heartbeat/etc/ha.d/resource.d目录下,并且授权755就好了。

解决办法:chmod 755 /usr/local/heartbeat/etc/ha.d/resource.d/drbddisk

28,安装NFS,在2台服务器上都要安装

[root@heartbeat01 ~]# yum -y install nfs-utils rpcbind
[root@heartbeat01 ~]# rpm -qa  nfs-utils rpcbind     
rpcbind-0.2.0-49.el7.x86_64
nfs-utils-1.3.0-0.68.el7.x86_64
[root@heartbeat01 ~]# systemctl start rpcbind
[root@heartbeat01 ~]# systemctl start nfs
[root@heartbeat01 ~]# systemctl enable nfs
[root@heartbeat01 ~]# systemctl enable rpcbind
[root@heartbeat02 ~]# systemctl start rpcbind
[root@heartbeat02 ~]# systemctl start nfs
[root@heartbeat02 ~]# systemctl enable nfs
[root@heartbeat02 ~]# systemctl enable rpcbind

29,查看启动是否正常。

[root@heartbeat01 ~]# rpcinfo -p localhost

30,配置heartbeat01上的参数。

[root@heartbeat01 ~]# cat /etc/exports
/md1 192.168.202.*(rw,sync)
[root@heartbeat01 ~]# systemctl reload nfs
或者是exportfs -r
[root@heartbeat01 ~]# exportfs -r
[root@heartbeat01 ~]# showmount -e 192.168.202.20
Export list for 192.168.202.20:
/md1 192.168.202.*

31,配置heartbeat02上的参数

[root@heartbeat02 ~]# vim /etc/exports
/md1 192.168.202.*(rw,sync)
[root@heartbeat02 ~]#  exportfs -r
[root@heartbeat02 ~]# showmount -e 192.168.202.21
Export list for 192.168.202.21:
/md1 192.168.202.*

32,客户端机器配置。

[root@mysql ~]#  yum -y install nfs-utils rpcbind
[root@mysql ~]#  systemctl start rpcbind
[root@mysql ~]# mkdir /web
[root@mysql ~]# showmount -e 192.168.202.200
Export list for 192.168.202.200:
/md1 192.168.202.*

33,将服务端的VIP共享资源挂载到本地的/web目录下面,下面是客户端挂载处理。

[root@mysql ~]# mount -t nfs 192.168.202.200:/md1 /web
[root@mysql ~]# echo "mount -t nfs 192.168.202.200:/md1 /web" >> /etc/rc.local
[root@mysql ~]# tail -l /etc/rc.local
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
 
touch /var/lock/subsys/local
mount -t nfs 192.168.202.200:/md1 /web

34,客户端查看挂载数据是否过来了。

[root@mysql ~]# ls /web
lost+found  test  tony1  tony10  tony2  tony3  tony4  tony5  tony6  tony7  tony8  tony9


二、错误处理

关于一台主机宕机修复后,主机节点不会自动切换成主节点。注意修复时需要以下步骤:

先在2台主机上查看节点的DRBD状态:

cat /proc/drbd然后在Secondary节点上操作如下步骤:

1,modprobe drbd

2,drbdadm Secondary data

3,drbdadm up data

4,drbdadm disconnect data

5,drbdadm -- --discard-my-data connect data

6,最后在primary节点上,通过cat /proc/drbd查看状态,如果不是connection状态需要手动执行drbdadm connect data


三、总结

1,不要把DRDB服务和Heartbeat服务开机自启动,因为,当一台服务器重维修好重新加入时很容易导致裂脑。

2,当故障发生时,我们需要冷静对待,查看日志,cat /var/log/ha-log文件,一般在这里出现的问题都有明显提示。

3,做好准备工作,你细心一点也能做的更好。

























标签:DRBD,local,192.168,Centos7,etc,NFS,usr,heartbeat,root
来源: https://blog.51cto.com/hwg1227/2657214

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有