跨主机的块设备镜像系统,工作在内核中完成
drbd工作原理:客户端发起一个写操作的系统调用给文件系统,写请求再到达内核缓冲区,最到达DRBD模块,此时drbd会复制写入磁盘的数据,且进行两步操作,第一步操作是调用磁盘驱动,将数据写入本地的磁盘设备,第二部是通过网卡设备将数据发送给备用节点,备用节点的网卡接受到数据之后,将数据再发送给drbd模块,DRBD模块再调用磁盘驱动将数据写入磁盘。这就实现了数据写入的高可用.
高可用集群都需要时间同步、主机名相互通信、ssh免密码登入(node1、node2两个节点已经ok)

  • 安装DRBD(在node1,node2上都需要安装)
1:配置yum仓库
vi /etc/yum.repos.d/drbd.repo
[network_drbd]
name=drbd
baseurl=http://elrepo.org/linux/elrepo/el7/x86_64/
gpgcheck=0
enabled=1
 
2:安装drbd内核模块、DRBD管理工具
yum install -y drbd84-utils kmod-drbd84
 
3:给node1、node2添加一个虚拟磁盘,且分区5G
[root@node2 ~]# fdisk -l
 
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 41945087 20971520 83 Linux
 
4:编辑/etc/drbd.d/global_common.conf文件,修改如下配置即可
global {
# 指定不被DRBD官方纳入调研对象
usage-count no;
# 指定udev策略
udev-always-use-vnr; # treat implicit the same as explicit volumes
}
common {
handlers {
}
startup {
}
options {
}
disk {
# 指定磁盘io出现错误的时候,拆除磁盘
on-io-error detach;
}
net {
# 指定数据在drbd节点通信时,使用的加密算法
cram-hmac-alg "sha1";
# 指定密钥
shared-secret "UzcHlMYSw5o";
}
# 指定drbd节点通信时,所使用的带宽
syncer {
rate 1000M;
}
}
 
5:编辑/etc/drbd.d/mariadb.res,创建drbd的工作方式,已经使用的资源
resource mysql {
 
# 指定drbd存储设备名称
device /dev/drbd0;
 
# 指定实际的drbd使用的磁盘分区
disk /dev/sdb1;
 
# 指定元数据存放值磁盘上
meta-disk internal;
 
# 指定主节点
on node1 {
 
address 192.168.43.10:7789;
 
}
 
# 指定从节点
on node2 {
 
address 192.168.43.11:7789;
 
}
}
 
6:将node1的配置文件拷贝一份到node2
scp -pr /etc/drbd.d/global_common.conf /etc/drbd.d/mariadb.res node2:/etc/drbd.d/
 
7:在node1和node2上分别执行资源初始化(如果数据资源初始化不成功,可以尝试重启系统)
drbdadm create-md mysql
 
8:在node1和node2上启动DRBD
systemctl start drbd.service
 
9:查看节点同步情况
drbd-overview
 
10:让node1成为主节点 ,开始同步
drbdadm primary --force mysql
 
11:再次查看node1和node2节点数据同步情况
drbd-overview
 
12:等待同步完成之后,可以在node1节点直接在/dev/drbd0上创建文件系统,且挂载
mkfs -t ext4 /dev/drbd0
mount /dev/drbd0 /mnt
 
13:向/mnt目录拷贝文件,卸载挂载点,让后将node1切换为从节点
cp /etc/fstab /mnt
umount /dev/drbd0
drbdadm secondary mysql
 
14:在node2上执行命令,让node2为主, 挂载/mnt,查看是否在/mnt目录下存在/etc/fstab
drbdadm primary mysql
mount /dev/drbd0 /mnt
  • 高可用Mariadb + DRBD
需求分析:配置一个Mariadb的高可用集群,且Mariadb的数据目录由DRBD存储提供
 
1:分别在node1、node2中停止DRBD服务
systemctl stop drbd.service
 
2:如果想将drbd作为集群中的资源,那么drbd将不能开机自启,分别在node1、node2中让drbd禁止开机自启,
systemctl disable drbd.service
 
3:查看资源代理,这里的linbit为drbd代理的提供者
crm(live)ra# list ocf linbit
drbd
 
4:查看ocf中drbd代理的使用帮助
crm(live)ra# info ocf:drbd
 
5:定义drbd在集群中的组资源
primitive storage ocf:drbd params drbd_resource=mysql op monitor role=Master interval=15s timeout=20s op monitor role=Slave interval=10s timeout=20s
 
6:将drbd资源设置为主从模式
ms drbd_storage storage meta clone-max=2 clone-node-max=1 master-max=1 master-node-max=1

DRBD 实验的更多相关文章

  1. 解决ubuntu的chkconfig[/sbin/insserv 无法找到路径问题]

    http://www.cnblogs.com/lost-1987/archive/2012/10/17/2727285.html 今天在虚拟机里做DRBD实验,使用chkconfig管理服务的时候,出 ...

  2. 基于corosync+pacemaker+drbd+LNMP做web服务器的高可用集群

    实验系统:CentOS 6.6_x86_64 实验前提: 1)提前准备好编译环境,防火墙和selinux都关闭: 2)本配置共有两个测试节点,分别coro1和coro2,对应的IP地址分别为192.1 ...

  3. Heartbeat+DRBD+NFS 构建高可用的文件系统

    1.实验拓扑图 2.修改主机名 1 2 3 vim /etc/sysconfig/network vim /etc/hosts drbd1.free.com     drbd2.free.com 3. ...

  4. 两台linux利用heartbeat+drbd 完美实现双机热备

    一直想做基于linux的双机热备,一直没有时间和机会.一直以为只要做双机热备的实验就必须两台机器外接一个存储.甚至一个月以前在学习keepalived的时候还在琢磨keepalvied去掉哪些条件可以 ...

  5. DRBD(数据镜像)+hearbeat(自动切换)

    DRBD 数据镜像软件 一.DRBD介绍 1.1.数据镜像软件DRBD介绍 分布式块设备复制(Distributed Relicated Block Deivce,DRBD),是一种基于软件.基于网络 ...

  6. drbd(一):简介和安装

    本文目录:1.drbd简介2.drbd工作原理和术语说明 2.1 drbd工作原理 2.2 drbd复制协议模型 2.3 drbd设备的概念 2.4 drbd资源角色 2.5 drbd工作模式 2.6 ...

  7. drbd(二):配置和使用

    本文目录:1.drbd配置文件2.创建metadata区并计算metadata区的大小3.启动drbd4.实现drbd主从同步5.数据同步和主从角色切换6.drbd脑裂后的解决办法7.drbd多卷组配 ...

  8. DRBD数据镜像与搭建

    一.数据安全工具DRDB 1. 数据镜像软件DRDB介绍 分布式块设备复制,是基于软件.基于网络的块复制存储解决方案 作用:用于服务器之间的磁盘.分区.逻辑卷等进行数据镜像. 例如:当用户将数据写入本 ...

  9. 配置:heartbeat+nginx+mysqld+drbd高可用笔记(OK)

    参考资料:http://www.centoscn.com/CentosServer/cluster/2015/0605/5604.html   背景需求: 使用heartbeat来做HA高可用,并且把 ...

随机推荐

  1. jQuery学习-属性选择器

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. django学习笔记(1)

    Django 特点 强大的数据库功能     用python的类继承,几行代码就可以拥有一个丰富,动态的数据库操作接口(API),如果需要你也能执行SQL语句 自带的强大的后台功能     几行简单的 ...

  3. html元素可以同时实现两个class的功能

    html元素标签可以放置两个不同的class文件并分别实现效果

  4. Python中re模块详细介绍

    正则的介绍及应用实例详解 """ 1.什么是正则 正则就是用一系列具有特殊含义的字符组成一套规则,该规则用来描述具有某一特征的字符串, 正则就是用来去一个大的字符串中匹配 ...

  5. Navigation - How to define the structure of the navigation tree via the NavigationItemAttribute

    In the meantime, you should use the Model Editor to create such a navigation structure. There are se ...

  6. 【转载】钉钉开发c#帮助类 获取用户信息 DingHelper.cs

    using System;using System.Collections.Generic;using System.Configuration;using System.Linq;using Sys ...

  7. QTP日常积累

    1.init同步测试对象 同步测试对象: CODE: Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit(" ...

  8. 第四篇 HTTP请求返回状态码收集及解释

    [转载]https://blog.csdn.net/wangsen2235068/article/details/8081274 当用户试图通过 HTTP 访问一台正在运行 Internet 信息服务 ...

  9. 学习python,第三篇:.pyc是个什么鬼?

    .pyc是个什么鬼? 1. Python是一门解释型语言? 我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存 ...

  10. ubuntu下import matplotlib错误解决办法

    环境:ubuntu16.04,python2.7,tensorflow1.4.0 问题: ImportError: No moudule named _tkinter, please install ...