一 DRBD实现原理图

二    DRDB的安装
从官方网站下载源码包来编译或直接使用yum源来安装,这里以CentOS为例说明安装过程,其它系统类似。
[root@drbd1 ~]# uname -a
Linux drbd1 2.6.18-194.11.1.el5 #1 SMP Tue Aug 10 19:09:06 EDT 2010 i686 i686 i386 GNU/Linux
通过yum安装DRBD服务:
[root@drbd1 ~]# yum -y install kmod-drbd83 drbd83
检查DRBD是否安装成功:
[root@drbd1 ~]# lsmod | grep -i drbd
drbd                  228528  3
[root@drbd1 ~]#  modprobe -l | grep -i drbd
/lib/modules/2.6.18-194.11.1.el5/weak-updates/drbd83/drbd.ko
安装成功之后/sbin目录下面有drbdadm,drbdmeta,drbdsetup命令,以及/etc/init.d/drbd启动脚本。
三    配置DRDB
DRBD运行需要读取/etc/drbd.conf配置文件,下面是两台主机节点配置的drbd.conf文件的简单示例:
[root@drbd1 ~]#cat /etc/drbd.conf
#
# drbd.conf
#
# create by jackbillow@gmail.com at 2010-08-12
global {
    # minor-count 64;
    # dialog-refresh 5; # 5 seconds
    # disable-ip-verification;
usage-count no;  
#是否参加DRBD使用者统计,默认yes
}

common {
  syncer { rate 200M; }
#设置主备节点同步时的网络速率最大值,单位是字节。
}

resource r0 {
  #资源名字为r0.
  protocol      C;
# 使用drbd的第三种同步协议,表示收到远程主机的写入确认后,则认为写入完成.
  handlers {
    pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f";
    pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f";
    local-io-error "echo o > /proc/sysrq-trigger ; halt -f";
    fence-peer "/usr/lib64/heartbeat/drbd-peer-outdater -t 5";
    pri-lost "echo pri-lost. Have a look at the log files. | mail -s 'DRBD Alert' root";
    split-brain "/usr/lib/drbd/notify-split-brain.sh root";
    out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";
  }

net {
    # timeout           60;
    # connect-int       10;
    # ping-int          10;
    # max-buffers     2048;
    # max-epoch-size  2048;
    cram-hmac-alg "sha1";
shared-secret "MySQL-HA";
# DRBD同步时使用的验证方式和密码信息。
  }

disk {
    on-io-error detach;
fencing resource-only;
#使用dpod功能(drbd outdate-peer daemon)保证在数据不同步时不进行切换。
  }

startup {
    wfc-timeout 120;
    degr-wfc-timeout 120;
  }

device        /dev/drbd0;
 
  on dbm157 {
#每个主机的说明以on开头,后面是hostname(uname -n),在后面的{}中为这个主机的配置。
disk        /dev/sda2;
#/dev/drbd0使用的磁盘分区是/dev/sda2。
address     192.168.0.157:7788;
#设置DRBD的监听端口,用于与另一台主机通信。
    meta-disk   internal;
  }
  on dbm158 {
disk        /dev/sda2;
#/dev/drbd0使用的磁盘分区是/dev/sda2。
address     192.168.0.158:7788;
#设置DRBD的监听端口,用于与另一台主机通信。
    meta-disk   internal;  #drbd的元数据存放方式。
  }

}
将上面这个drbd.conf文件分别复制到两台主机的/etc目录下。drbd.conf的配置参数很多,有兴趣的话可以使用命令:man drbd.conf来查看了解更多的参数说明。
四 启动DRBD

1 在两个节点执行
在启动DRBD之前,你需要分别在两台主机的hdb1分区上,创建供DRBD记录信息的数据块.分别在两台主机上执行:
[root@drbd1 ~]# drbdadm create-md r0 或者执行drbdadm create-md all
[root@drbd2 ~]# drbdadm create-md r0
2在两个节点启动服务
[root@drbd1 ~]#/etc/init.d/drbd start
[root@drbd2 ~]#/etc/init.d/drbd start
最好同时启动
3在任意节点查看节点状态
[root@drbd1 ~]# cat /proc/drbd
 1: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r----
    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:2007644
对输出的含义解释如下:
ro表示角色信息,第一次启动drbd时,两个drbd节点默认都处于Secondary状态,
ds是磁盘状态信息,“Inconsistent/Inconsisten”,即为“不一致/不一致”状态,表示两个节点的磁盘数据处于不一致状态。
Ns表示网络发送的数据包信息。
Dw是磁盘写信息
Dr是磁盘读信息
4设置主节点
由于默认没有主次节点之分,因而需要设置两个主机的主次节点,选择需要设置为主节点的主机,然后执行如下命令:
[root@drbd1 ~]#drbdsetup /dev/drbd1 primary –o
或者执行下面命令也是可以的
[root@drbd1 ~]#drbdadm -- --overwrite-data-of-peer primary all
第一次执行完此命令后,在后面如果需要设置哪个是主节点时,就可以使用另外一个命令:
[root@drbd1 ~]#/sbin/drbdadm primary r0或者/sbin/drbdadm primary all
执行此命令后,开始同步两台机器对应磁盘的数据
[root@drbd1 ~]#cat /proc/drbd
1: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r----
    ns:576224 nr:0 dw:0 dr:581760 al:0 bm:34 lo:84 pe:369 ua:256 ap:0 ep:1 wo:b oos:1443196
        [====>...............] sync'ed: 28.4% (1443196/2007644)K delay_probe: 69
        finish: 0:03:56 speed: 6,024 (5,876) K/sec
从输出可知:
    “ro状态现在变为“Primary/Secondary”,“ds”状态也变为“UpToDate/Inconsistent”,也就是“实时/不一致”状态,现在数据正在主备两个主机的磁盘间进行同步,且同步进度为28.4%,同步速度每秒5.8M左右。
等待片刻,再次查看同步状态,输出如下:
[root@drbd1 ~]#cat /proc/drbd
1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----
ns:2007644 nr:0 dw:0 dr:2007644 al:0 bm:123 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
可以看到同步完成了,并且“ds“状态也变为“UpToDate/UpToDate”了。即为“实时/实时”状态了。
如果第一次设置主备节点时使用“/sbin/drbdadm primary r0”命令,那么会提示如下错误:
0: State change failed: (-2) Need access to UpToDate data
Command '/sbin/drbdsetup 0 primary' terminated with exit code 17
只要第一次用上面命令成功后,以后就可以用“/sbin/drbdadm primary r0”命令了。
5格式化文件系统
由于mount操作只能在主节点进行,所以只有设置了主节点后才能格式化磁盘分区,然后挂载:
[root@drbd1 ~]#mkfs.ext3 /dev/drbd0
[root@drbd1 ~]#mount /dev/drbd1 /mnt

五 DRBD主备节点切换
主备节点切换有两种方式,分别是停止drbd服务切换和正常切换,依次介绍:
1停止drbd服务切换
关闭主节点服务,此时挂载的drbd分区就自动在主节点卸载了,然后在备用节点执行切换命令:
[root@drbd2 ~]#drbdadm primary all
此时会报错:
2: State change failed: (-7) Refusing to be Primary while peer is not outdated
Command 'drbdsetup 2 primary' terminated with exit code 11
因此,必须在备用节点执行如下命令:
[root@drbd2 ~]#drbdsetup /dev/drbd0 primary –o
或者
[root@drbd2~]#drbdadm -- --overwrite-data-of-peer primary all
此时就可以正常切换了。
当在备用节点执行切换到主节点命令后,原来的主用节点自动变为备用节点。无需在主用节点再次执行切换到备用节点的命令。
2正常切换
在主节点卸载磁盘分区,然后执行
[root@drbd1 ~]#drbdadm secondary all
如果不执行这个命令,直接在备用节点执行切换到主节点的命令,会报错:
2: State change failed: (-1) Multiple primaries not allowed by config
Command 'drbdsetup 2 primary' terminated with exit code 11
接着,在备用节点执行
[root@drbd2 ~]#drbdadm primary all
最后在备用节点挂载磁盘分区即可:
[root@drbd2 ~]#mount /dev/drbd2  /mnt

DRDB的安装配置与使用(第二版)相关推荐

  1. 阿里云安装配置mysql(centos版)

    阿里云安装配置mysql(centos版) 阿里云安装配置mysql(centos版) 1,安装mysql数据库 a)下载mysql源安装包:wget http://dev.mysql.com/get ...

  2. SQLite安装配置详细教程2023版

    前言 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统. 它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低. 它能够支持Windows/Linux/ ...

  3. Android Studio 安装配置教程 - Windows(详细版)

    准备工作 Java环境变量配置好,参考:Java环境变量配置 然后首先是安装程序,这里默认不翻墙,使用国内的,下载地址有两个, 一.安卓中文组下载 Android Studio下载地址-安卓中文组,最 ...

  4. Redis的安装配置与介绍(Windows版)

    基本介绍 Redis 是完全开源的,是一个高性能的 key-value 数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保 ...

  5. 简要描述如何安装配置一个apache开源版hadoop,描述即可,列出步骤更好

    解压hadoop包,到指定安装文件夹. 配置linux基本网络环境.jdk环境.防火墙环境. 修改主机名,方便后面UI的访问. 修改hadoop/etc/hadoop/conf下的配置文件,根据部署的 ...

  6. MongoDB安装配置教程(详细版)

    前言:MongoDB是前端开发人员普遍使用的数据库,因为MongoDB不需要图形界面,是一个基于分布式文件存储的开源数据库系统.MongoDB 将数据存储为一个文档,数据结构由键值对(key=> ...

  7. Android Studio 安装配置教程 - MacOS(详细版)

    前言 因为之前做了在Window下安装AS的教程,有人和我说也做一个在Mac下安装的教程,这样会全面一点,我觉得也是,于是就有了下文. 然后首先是安装程序,这里默认不翻墙,使用国内的,下载地址有两个, ...

  8. Selenium Grid Node 安装配置(CentOS 7 版)

    转载于:https://www.cnblogs.com/Crixus3714/p/10897877.html

  9. php7 apache 环境,php7+apache的环境安装配置

    php7+apache的环境安装配置 php7+apache的环境安装配置 为什么80%的码农都做不了架构师?>>> 因为刚开始接触php,所以要对php的开发环境进行搭建. 1.首 ...

最新文章

  1. sybase Invalid command line argument 'and'.
  2. python dataframe 分位数_Python pandas.DataFrame.quantile函数方法的使用
  3. node.js实现图片上传(包含缩略图)
  4. Spring中ApplicationContextAware的用法
  5. python之路——迭代器与生成器
  6. ssh mysql 命令_ssh mysql命令大全
  7. usleep头文件_Linunx的sleep,usleep,select,nonasleep对比与应用
  8. 洛谷1363——幻想迷宫(搜索)
  9. 学计算机专业必须要买电脑吗,上大学需要买电脑吗 该如何选择合适的电脑
  10. 游戏跟计算机不兼容,端游不兼容怎么解决
  11. 帝国cms 图集模型 php,帝国CMS教程图集字段的大图,小图,说明的调用
  12. STM32F103C8T6+LD3320语音识别模块智能灯控
  13. 计算圆周率可以根据公式如下:请利用Python提供的itertools模块,我们来计算这个序列的前N项和——python
  14. 如何应对团队协作的五大障碍
  15. Android Support Library介绍
  16. java中finally语句是否一定会被执行
  17. 计算机图形学 | 实验四:绘制一个球体
  18. 【Vue.JS】Vue.JS 表格内容排序组件,Render函数的使用
  19. simulink 储能AGC二次调频,储能采用下垂控制,自适应控制,系统其他机组为水电机组和风电机组,储能出力受ACE变化改变。
  20. python刷今日头条阅读量_用python3.5逛看今日头条

热门文章

  1. JSR349(Bean Validation 1.1)
  2. elasticsearch查询
  3. Qt设置应用程序图标
  4. python 数据可视化 -- 读取数据
  5. 关于Cocos2d-x中对其他某个类的某个属性的获得
  6. shell脚本编程-结构化命令2-for命令
  7. [Python基础]003.语法(2)
  8. richTextBox设置选中的字体属性
  9. Python 数据类型及其用法
  10. C和指针:第十三,十四章