CentOS7搭建keepalived+DRBD+NFS高可用共享存储

一、服务器信息

IP地址			类型		主机名		操作系统		        内存	                磁盘
192.168.11.110	      主服务器	        node01		CentOS7.9		2G		系统盘20G 存储盘20G
192.168.11.111	      备服务器	        node02		CentOS7.9		2G		系统盘20G 存储盘20G

二、两台主机关闭防火墙,禁用SELinux

[root@node01 ~]# systemctl stop firewalld
[root@node01 ~]# systemctl is-active firewalld.service 
unknown
[root@node01 ~]# iptables -F
[root@node01 ~]# sed -i '/^SELINUX=/ cSELINUX=disabled' /etc/selinux/config
[root@node01 ~]# setenforce 0

三、两台主机设置hosts文件,打通通道

[root@node01 ~]# vim /etc/hosts
[root@node01 ~]# tail -2 /etc/hosts
192.168.11.110 node01
192.168.11.111 node02

#配置root用户免密钥互信
#主服务器
[root@node01 ~]# ssh-keygen -f ~/.ssh/id_rsa -P '' -q
[root@node01 ~]# ssh-copy-id node02
#备服务器
[root@node02 ~]# ssh-keygen -f ~/.ssh/id_rsa -P '' -q
[root@node02 ~]# ssh-copy-id node01

四、两台主机配置drbd的yum源,方便软件安装

以下操作两台主机同时完成:

导入源

[root@node01 ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
[root@node01 ~]# yum localinstall -y https://mirrors.tuna.tsinghua.edu.cn/elrepo/elrepo/el7/x86_64/RPMS/elrepo-release-7.0-6.el7.elrepo.noarch.rpm
[root@node01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

安装DRBD软件包

版本信息

安装90版本

[root@node01 ~]# yum install -y drbd90-utils kmod-drbd90

启动DRBD内核模块

[root@node01 ~]# modprobe drbd
[root@node01 ~]# echo drbd > /etc/modules-load.d/drbd.conf
[root@node01 ~]# modprobe drbd
[root@node01 ~]# lsmod |grep drbd
drbd                  611241  0
libcrc32c              12644  2 xfs,drbd

五、配置DRBD

[root@node01 ~]# cd /etc/drbd.d/
[root@node01 drbd.d]# egrep -v "#|^$" /etc/drbd.d/global_common.conf

[root@node01 drbd.d]# vim global_common.conf 
global {
		usage-count no;
	}
	common {
		protocol C;
		handlers {
			pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
			pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
			local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
		}
		startup {
		}
		options {
		}
		disk {
			on-io-error detach;
		}
		net {
		}
	}

配置资源

[root@node01 drbd.d]# vim nfs.res
resource nfs {
  disk /dev/sdb;
  device /dev/drbd0;
  meta-disk internal;

  on node01 {
        address 192.168.11.110:7789;
  }

  on node02 {
        address 192.168.11.111:7789;
  }
}

[root@node01 drbd.d]# scp nfs.res node02:$PWD
nfs.res                                                                                                              100%  176   255.6KB/s   00:00    
[root@node01 drbd.d]# ssh node02  ls /etc/drbd.d/
global_common.conf
nfs.res

六、启用DRBD

1、首次启用资源

有补全功能,需要重新登录会话

1> 创建设备元数据

[root@node01 drbd.d]# drbdadm create-md nfs
initializing activity log
initializing bitmap (640 KB) to all zero
Writing meta data...
New drbd meta data block successfully created.
[root@node01 drbd.d]# ssh node02 drbdadm create-md nfs
initializing bitmap (640 KB) to all zero
initializing activity log
Writing meta data...
New drbd meta data block successfully created.
[root@node01 drbd.d]#

2> 启用资源

[root@node01 drbd.d]# drbdadm up nfs
[root@node01 drbd.d]# ssh node02 drbdadm up nfs

3> 初始设备同步

只在主端执行

[root@node01 drbd.d]# drbdadm primary --force nfs
[root@node01 drbd.d]# drbdadm status nfs
nfs role:Primary
  disk:UpToDate
  node02 role:Secondary
    replication:SyncSource peer-disk:Inconsistent done:6.68

初始完成后

2、常用命令

drbdadm cstate nfs       连接状态
drbdadm dstate nfs	 磁盘状态
drbdadm role nfs	 资源角色
drbdadm primary nfs	 提升资源
drbdadm secondary nfs    降级资源

七、验证DRBD

两台节点都创建挂载点:mkdir /data
主节点上操作:

[root@node01 drbd.d]# mkdir /data
[root@node01 drbd.d]# mkfs.xfs  /dev/drbd0 
meta-data=/dev/drbd0             isize=512    agcount=4, agsize=1310678 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5242711, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@node01 drbd.d]# mount /dev/drbd0  /data/

创建测试文件

[root@node01 drbd.d]# touch /data/file{1..2}

卸载文件系统并切换为备节点

[root@node01 drbd.d]# umount /data 
[root@node01 drbd.d]# drbdadm secondary nfs

在从上执行以下命令确认文件

[root@node02 ~]# drbdadm primary nfs 
[root@node02 ~]# mkdir /data
[root@node02 ~]# mount /dev/drbd0  /data
[root@node02 ~]# ll /data/
total 0
-rw-r--r-- 1 root root 0 May 14 18:01 file1
-rw-r--r-- 1 root root 0 May 14 18:01 file2

启用服务

[root@node01 ~]# systemctl enable --now drbd
Created symlink from /etc/systemd/system/multi-user.target.wants/drbd.service to /usr/lib/systemd/system/drbd.service.
[root@node02 ~]# systemctl enable --now drbd
Created symlink from /etc/systemd/system/multi-user.target.wants/drbd.service to /usr/lib/systemd/system/drbd.service.

至此,DRBD安装完成

八、keepalived+drbd+nfs构建高可用存储

1、安装NFS软件

[root@node01 ~]# yum install rpcbind.x86_64  nfs-utils.x86_64  -y

2、配置

[root@node01 ~]# vim /etc/exports
[root@node01 ~]# cat /etc/exports
/data 192.168.11.0/24(rw,sync,no_root_squash)

3、重启服务,设置为开机自启动

[root@node01 ~]# systemctl enable --now  nfs rpc-rquotad.service

4、安装配置keepalived

自带keepalived版本

[root@node01 ~]# yum list all | grep keepalived
keepalived.x86_64                        1.3.5-19.el7                  base

安装keepalived ,两台机器都安装

[root@node01 ~]# yum install -y keepalived.x86_64

5、修改配置文件

[root@node01 drbd.d]# vim /usr/lib/systemd/system/keepalived.service 
[Unit]
Description=LVS and VRRP High Availability Monitor
After=syslog.target network-online.target

[Service]
Type=forking
PIDFile=/var/run/keepalived.pid
#KillMode=process
EnvironmentFile=-/etc/sysconfig/keepalived
ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

6、两台机器都创建logs目录:mkdir /etc/keepalived/logs

7、主节点配置:

[root@node01 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id DRBD_HA_MASTER
}

vrrp_script chk_nfs {
        script "/etc/keepalived/chk_nfs.sh"
        interval 2
        weight 40

}


vrrp_instance VI_1 {
    state MASTER
    interface ens32
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }


    track_script {
        chk_nfs
    }
    notify_stop /etc/keepalived/notify_stop.sh       
    notify_master /etc/keepalived/notify_master.sh   
    notify_backup /etc/keepalived/notify_backup.sh
    virtual_ipaddress {
        192.168.11.11/24 dev ens32 label ens32:1
    }

8、配置文件中的几个shell脚本

[root@node01 keepalived]# vim chk_nfs.sh
#!/bin/bash
systemctl status nfs

if [ $? -ne 0 ]
then
        systemctl start nfs
        if [ $? -ne 0  ]
        then
                umount /dev/drbd0
                drbdadm secondary nfs
                systemctl stop keepalived
        fi
fi

脚本增加执行权限:chomod +x *.sh
将配置文件和脚本拷贝到备节点:

[root@node01 keepalived]# scp *.sh keepalived.conf   node02:$PWD

9、备节点修改配置文件:

[root@node02 keepalived]# vim keepalived.conf

10、测试:

启动keepalived进行测试

验证(正常):
1、查看VIP

2、查看资源角色

3、查看挂载

4、查看nfs

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是 CentOS7+DRBD+NFS+Keepalived 搭建的详细文档: 注意事项: - 本文档基于 CentOS 7 操作系统。 - 本文档假设您已经熟悉 Linux 基础知识。 - 本文档中的 IP 地址、网段等均为示例,请根据实际情况修改。 一、安装 DRBD 1. 安装 epel 源 ```bash yum install epel-release -y ``` 2. 安装 DRBD ```bash yum install drbd84-utils kmod-drbd84 -y ``` 3. 修改 DRBD 配置文件 `/etc/drbd.d/global_common.conf`,添加以下配置: ```conf global { usage-count no; } common { protocol C; } ``` 4. 配置 DRBD,修改 `/etc/drbd.d/drbd0.res` 文件,添加以下配置: ```conf resource drbd0 { device /dev/drbd0; meta-disk internal; syncer { rate 100M; } on node1 { address 192.168.1.101:7788; disk /dev/sdb1; } on node2 { address 192.168.1.102:7788; disk /dev/sdb1; } } ``` 说明: - `device`:DRBD 同步的设备名。 - `meta-disk`:DRBD 元数据存储位置。 - `syncer`:同步速率。 - `on`:节点配置,`address` 为节点 IP 和端口,`disk` 为 DRBD 同步的磁盘设备。 5. 初始化 DRBD 在节点1上执行: ```bash drbdadm create-md drbd0 ``` 在节点2上执行: ```bash drbdadm create-md drbd0 ``` 6. 启动 DRBD 在节点1上执行: ```bash drbdadm up drbd0 ``` 在节点2上执行: ```bash drbdadm up drbd0 ``` 7. 初始化数据 在节点1上执行: ```bash drbdadm primary drbd0 --force mkfs.xfs /dev/drbd0 ``` 在节点2上执行: ```bash drbdadm primary drbd0 --force mkfs.xfs /dev/drbd0 ``` 8. 启用 DRBD 自动同步 在节点1上执行: ```bash drbdadm -- --overwrite-data-of-peer primary drbd0 ``` 在节点2上执行: ```bash drbdadm connect drbd0 ``` 二、安装 NFS 1. 安装 NFS ```bash yum install nfs-utils -y ``` 2. 配置 NFS,修改 `/etc/exports` 文件,添加以下配置: ```conf /drbd_mount_point 192.168.1.0/24(rw,sync,no_root_squash) ``` 说明: - `/drbd_mount_point`:DRBD 挂载的目录。 - `192.168.1.0/24`:允许访问的 IP 段。 - `rw`:允许读写。 - `sync`:同步写入。 - `no_root_squash`:允许 root 用户访问。 3. 启动 NFS ```bash systemctl start nfs ``` 三、安装 Keepalived 1. 安装 Keepalived ```bash yum install keepalived -y ``` 2. 配置 Keepalived,修改 `/etc/keepalived/keepalived.conf` 文件,添加以下配置: ```conf ! Configuration File for keepalived global_defs { router_id LVS_DEVEL } vrrp_script chk_nfs { script "/usr/local/bin/chk_nfs.sh" interval 2 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 101 virtual_ipaddress { 192.168.1.100/24 dev eth0 } track_script { chk_nfs } } ``` 说明: - `router_id`:路由 ID,可以随意设置。 - `vrrp_script`:自定义脚本,用于检测 NFS 服务是否正常。 - `vrrp_instance`:VRRP 实例配置,`state` 为当前节点状态(MASTER 或 BACKUP),`interface` 为节点网卡名称,`virtual_router_id` 为虚拟路由 ID,`priority` 为节点优先级,`virtual_ipaddress` 为虚拟 IP 地址。 3. 创建 NFS 检测脚本 `/usr/local/bin/chk_nfs.sh`,添加以下内容: ```bash #!/bin/bash nfs_status=$(systemctl status nfs | grep "Active:" | awk '{print $2}') if [ "$nfs_status" != "active" ] then exit 1 fi exit 0 ``` 说明:该脚本用于检测 NFS 服务是否正常,如果服务异常则返回 1。 4. 启动 Keepalived ```bash systemctl start keepalived ``` 至此,CentOS7+DRBD+NFS+Keepalived搭建已经完成了。您可以通过访问虚拟 IP 地址来访问 NFS 服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值