使用drbd实现数据的高可用

需求

一部分的数据需要高可用,需要能够在两台机器上面都有,数据变化不是很多,主要是一些配置的数据,配合pacemaker进行服务的高可用的服务

分析

pacemaker能够实现的是服务的一些控制,ip的一些控制,但是对数据并不能进行转移,所有需要有一个底层的存储的高可用,这里选择使用drbd

安装

yum install drbd

下载内核模块

https://linbit.com/linbit-software-download-page-for-linstor-and-drbd-linux-driver/#drbd-9

这个是下载地址,目前使用的新的9的版本

[root@lab202 root]# wget https://pkg.linbit.com//downloads/drbd/9/drbd-9.1.4.tar.gz?_ga=2.224371998.420225483.1634529780-675209462.1634529780 --no-check-certificate
[root@lab202 drbd-9.1.4]# tar -xvf drbd-9.1.4.tar.gz
[root@lab202 drbd-9.1.4]# cd drbd-9.1.4
[root@lab202 drbd-9.1.4]# rpmbuild -bb drbd-kernel.spec

修改配置文件

[root@lab202 drbd.d]# cat global_common.conf
global {
	usage-count yes;
	udev-always-use-vnr; # treat implicit the same as explicit volumes
}

common {
	handlers {
		# disconnected /bin/true;
	}

	startup {
	}

	options {
		# on-no-quorum suspend-io | io-error;
	}

	disk {
                # c-min-rate disk-timeout
	}

	net {
		protocol C;
		transport "tcp";
	    after-sb-0pri discard-least-changes;
	    after-sb-1pri consensus;
	    after-sb-2pri disconnect;
	}
}

上面大部分是默认配置,动了几个配置

protocol C;
同步复制协议。只有在确认本地和远程磁盘写入之后,主节点上的本地写入操作才被视为完成。因此,单个节点的丢失不会导致任何数据丢失。数据丢失当然是不可避免的,即使采用这个复制协议,如果所有节点(例如:它们的存储子系统)同时遭到不可逆转的破坏, 数据也可能丢失。
DRBD设置中最常用的复制协议是protocol C。

transport “tcp”;
通过tcp来进行节点间的传输,也支持rdma

故障后发生脑裂的控制

after-sb-0pri discard-least-changes;
after-sb-1pri consensus;
after-sb-2pri disconnect;

after-sb-0pri
裂脑被检测到,但此时资源在任何主机上都不是主要角色。

after-sb-1pri
裂脑被检测到,此时资源在一个主机上扮演主要角色。

after-sb-2pri
裂脑被检测到,此时资源在两个主机上都处于主要角色。此选项接受与 after-sb-1pri 相同的关键字,但 discard-secondary 和 consensus 除外。

  • discard-least-changes:丢弃并回滚发生较少更改的主机上的更改。
  • consensus:应用 after-sb-0pri 中指定的相同恢复策略。如果在应用这些策略后可以选择裂脑受害者,则自动解决。否则,行为就像指定了 disconnect 一样。
  • disconnect:与 after-sb-0pri 一样,只需调用 split brain 处理程序脚本(如果已配置),断开连接并以断开模式继续。

资源配置文件

[root@lab202 drbd.d]# cat rc0.res
resource r0 {
  on lab202 {
    device    /dev/drbd1;
    disk      /dev/sdb1;
    address   192.168.0.202:7789;
    meta-disk internal;
  }
  on lab203 {
    device    /dev/drbd1;
    disk      /dev/sdb1;
    address   192.168.0.203:7789;
    meta-disk internal;
  }
}

处理脑裂的脚本

[root@lab202 drbd.d]# cat primary.sh
drbdadm disconnect r0
drbdadm connect r0
[root@lab202 drbd.d]# cat secondary.sh
drbdadm disconnect r0
drbdadm secondary  r0
drbdadm connect  r0

备注

资源同一时刻只能在一台机器上面进行访问

两台机器执行

drbdadm create-md <resource>
drbdadm up   <resource>

选择一台做下面的命令,选择主

drbdadm primary --force <resource>

状态查询

[root@lab202 drbd.d]# drbdadm status r0
r0 role:Primary
  disk:UpToDate
  lab203 role:Secondary
    peer-disk:UpToDate

[root@lab203 ~]# drbdadm status r0
r0 role:Secondary
  disk:UpToDate
  lab202 role:Primary
    peer-disk:UpToDate

自带包的里面的启动脚本存在问题,修改如下:

[root@lab203 ~]# cat /usr/lib/systemd/system/drbd.service
[Unit]
Description=Distributed Replicated Block Device
After=systemd-modules-load.service network.target

[Service]
Type=oneshot
RemainAfterExit=yes

# load config
ExecStart=/usr/sbin/drbdadm adjust all
# user interruptible version of wait-connect all
#ExecStart=/usr/sbin/drbdadm wait-con-int
# become primary if configured
#ExecStart=/usr/sbin/drbdadm up all
# disconnect and detach all resources
ExecStop=/usr/sbin/drbdadm down all

[Install]
WantedBy=multi-user.target

这个会自己判断自己是不是主还是备份的系统,后续的,拿到priamry的ip,pacemaker去判断自己是主的情况下把节点挂载起来,不是主的,把节点挂载点给卸载掉,把正常情况下的ip的切换给跑通

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

武汉磨磨

打赏是写出更好教程的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值