drbd+keepalived实现存储高可用
更新时间:2018-02-06 10:27:29•点击:165442 • 运维笔记
系统:CentOS6.3
(Primary)IP:192.168.20.252
(Secondary)IP:192.168.20.240
虚拟IP:192.168.20.108
Primary笔记:
1.关闭防火墙,关闭selinux.
2.设置hosts(域随便改成自己喜欢的)
3.创建一个分区,不做挂载操作,此分区为独立硬盘
创建分区方法
1.fdisk /dev/sdb 2.n 3.p 4.1 5.1 6.+100G 7.w
再创建一个文件夹到时候挂载
mkdir /data
4.时间同步一下
ntpdate -u asia.pool.ntp.org
提示命令不存在请安装NTP
5.下载drbd
wget http://oss.linbit.com/drbd/8.4/drbd-8.4.3.tar.gz
tar zxvf drbd-8.4.3.tar.gz
cd drbd-8.4.3
./configure --prefix=/usr/local/drbd --with-km
无法编译请安装 gcc gcc-c++ make glibc flex kernel-devel kernel-headers
make KDIR=/usr/src/kernels/2.6.32-504.16.2.el6.i686 (自己去路径下看看)
make install
mkdir -p /usr/local/drbd/var/run/drbd
cp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/rc.d/init.d
chkconfig --add drbd
chkconfig drbd on
加载DRBD模块:
modprobe drbd
查看DRBD模块是否加载到内核:
lsmod |grep drbd
6.编辑配置文件
vim /usr/local/drbd/etc/drbd.conf
resource r0{
protocol C;
startup { wfc-timeout 0; degr-wfc-timeout 120;}
disk { on-io-error detach;}
net{
timeout 60;
connect-int 10;
ping-int 10;
max-buffers 2048;
max-epoch-size 2048;
}
syncer { rate 30M;}
on drbd1.example.com{
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.20.241:7788;
meta-disk internal;
}
on drbd2.example.com{
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.20.240:7788;
meta-disk internal;
}
}
创建DRBD设备并激活ro资源
mknod /dev/drbd0 b 147 0
drbdadm create-md r0
等待片刻,显示success表示drbd块创建成功
在输入一次drbdadm create-md r0
提示:New drbd meta data block successfully created. 表示成功
查看drbd状态
我是配置好了 初次创建 RO均为Secondary/Secondary
将drbd1设置成主节点 drbdsetup /dev/drbd0 primary --force
再看drbd状态
ro在主从服务器上分别显示 Primary/Secondary和Secondary/Primary
ds显示UpToDate/UpToDate
表示主从配置成功。
然后挂载DRBD到系统目录
mkfs.ext4 /dev/drbd0
mount /dev/drbd0 /data
我们在data里创建几个文件夹模拟节点1故障
我们把备用节点设置成主节点
drbdadm primary r0
/bin/mount /dev/drbd0 /data/
可以看到数据是同步了的。
再来说keepalived
YUM直接安装
编辑配置文件
vim /etc/keepalived/keepalived.conf(主)
vim /etc/keepalived/keepalived.conf(从)
! Configuration File for keepalived
global_defs {
router_id drbd1.example.com
}
vrrp_instance VI_1 {
state MASTER
interface eth1
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.20.108
}
}
-------------------------------------------------
! Configuration File for keepalived
global_defs {
router_id drbd2.example.com
}
vrrp_sync_group VI{
group {
VI_1
}
notify_master /sh/master.sh
notify_backup /sh/backup.sh
}
vrrp_instance VI_1 {
state BACKUP
interface eth1
virtual_router_id 52
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.20.108
}
}
在路径下创建脚本,可以在监控到主节点故障时候执行脚本
backup.sh:
#!/bin/bash
/bin/umount /dev/drbd0
drbdadm secondary r0
master.sh:
#!/bin/bash
drbdadm primary r0
/bin/mount /dev/drbd0 /data
现在启动keepalived
service keepalived start
查看下虚拟IP是否启用
ip addr
现在我们来模拟主节点宕机,看从设备是否能接替主继续工作
看到备用机自动升级为主节点。之前的主节点我关机了,所以提示DUnknown.
到此 自动切换成功。
我们看看当恢复主节点的时候。
之前的主节点自动变成了从。
这时候 最好还是把之前的主变成主,现在的主还是降级到备用。
降级 直接执行backup脚本
升级 直接执行master脚本
脑裂情况:
怎么造成的呢
主突然断网,从自动变成了主。主突然网络恢复。就会出现脑列的情况。
当然 有了keepalived的2个脚本是不会出现这样的情况,但是了需要执行以下命令解决
(Secondary)
# drbdadm secondary r0
# drbdadm disconnect all
# drbdadm --discard-my-data connect r0
(Primary)
# drbdadm disconnect all
# drbdadm connect r0
# drbdsetup /dev/drbd0 primary
官方文档
http://drbd.linbit.com/users-guide/s-resolve-split-brain.html
-
武汉万和思远科技有限公司安防工程企业资质肆级证书-20250727
2022-08-07 10:19:11•176422 次
-
Purple Fox恶意软件正大肆攻击Windows设备
2021-04-08 20:42:51•208506 次
-
NetLogon特权提升漏洞验证代码公开 修复漏洞即可防御
2020-09-17 12:06:11•266571 次
-
武汉万和思远科技有限公司获得安防工程企业资质肆级证书
2020-07-31 10:01:30•234748 次