跨主机的块设备镜像系统,工作在内核中完成
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. jdbc动态切换数据库

    http://www.oschina.net/code/snippet_140474_50797

  2. PHP 注释规范

    注释在写代码的过程中非常重要,好的注释能让你的代码读起来更轻松,在写代码的时候一定要注意注释的规范. php里面常见的几种注释方式: 1.文件头的注释,介绍文件名,功能以及作者版本号等信息 /** * ...

  3. 【转载】CString、BSTR和LPCTSTR之间的区别

    原文:http://www.cnblogs.com/GT_Andy/archive/2011/01/18/1938605.html 一.定义 1.CString:动态的TCHAR数组.它是一个完全独立 ...

  4. Openstack入门篇(十一)之neutron服务(控制节点)的部署与测试

    1.Neutron的介绍 Neutron 为整个 OpenStack 环境提供网络支持,包括二层交换,三层路由,负载均衡,防火墙和 *** 等.Neutron 提供了一个灵活的框架,通过配置,无论是开 ...

  5. Kali2.0可用国内源更新sources.list

    vim /etc/apt/sources.list #中科大 deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contri ...

  6. java.util.Arrays.asList 的小问题

    JDK 1.4对java.util.Arrays.asList的定义,函数参数是Object[].所以,在1.4中asList()并不支持基本类型的数组作参数. JDK 1.5中,java.util. ...

  7. Python之时间模块、random模块、json与pickle模块

    一.时间模块 1.常用时间模块 import time # 时间分为三种格式 #1.时间戳---------------------以秒计算 # start= time.time() # time.s ...

  8. SSIS 容器

    容器(Container)是控制流的特殊的任务(Task),它为一个或多个Task提供逻辑组合,可以实现工作流的重复执行和顺序执行,还可以把变量和事件处理程序的作用域缩小到容器中.不能在容器内的Tas ...

  9. Design3:数据层次结构建模之二

    SQL Server提供了一个新的数据类型 HierarchyID,用来处理层次结构的数据,这个数据类型是系统内置的CLR数据类型,不需要专门激活 SQL/CLR 功能即可使用.当需要表示各值之间的嵌 ...

  10. Mkdir方法

    新建目录或文件夹. 语法 MkDir 路径 所需的_路径_参数是一个字符串表达式,标识的目录或文件夹创建. _路径_可以包含驱动器. 如果未指定驱动器, MkDir当前的驱动器上创建新目录或文件夹. ...