实现DRBD的简单配置

DRBD介绍

DRBD:Distributed Replicated Block Device 分布式复制的块设备,是一个软件实现的、无共享的、服务器之间镜像块设备内容存储复制的解决方案。DRBD的功能在内核中开启,在内核中完成。一段工作在内核空间,一段工作在用户空间。

DRBD的系统结构图:

说明:在linux kernel 2.6.33之前,DRBD并没有做进内核,而是需要通过打内核补丁的方式打进内核并重新编译内核;linux kernel 2.6.33以后,DRBD直接做进内核了,只需要在编译内核时选中DRBD功能就行了。

由于作者本人的内核版本低于2.6.33,但又不想通过打内核补丁的方式重新编译内核,在专业人士的指导下,找到了一条捷径:只需要安装一个内核模块,不需要重新编译内核即可(此时这个内核模块是一个rpm包)。

本实验共需两个服务器(两个测试节点):

node1.lihuan.com  IP:172.16.22.10

node2.magedu.com  IP:172.16.22.11

系统为rhel5.4,x86平台

本文以Primary/Secondary模型来配置

一、准备条件

1.在node1上:

在sda上准备一个分区:sda5,大小为2G,先不要格式化

  1. # vim /etc/sysconfig/network-scripts/ifcfg-eth0  #更改其中IPADDR,NETMASK为:
  2. IPADDR=172.16.22.10
  3. NETMASK=255.255.0.0
  4. # service network restart
  5. # hostname node1.lihuan.com
  6. # vim /etc/sysconfig/network  #更改HOSTNAME为:
  7. HOSTNAME=node1.magedu.com
  8. # ssh-keygen -t rsa
  9. # ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.22.11
  10. # vim /etc/hosts  #增加如下两项:
  11. 172.16.22.10   node1.lihuan.com nide1
  12. 172.16.22.11   node2.lihuan.com nide2

2.在node2上:

在sda上准备一个分区:sda5,大小为2G,先不要格式化

  1. # vim /etc/sysconfig/network-scripts/ifcfg-eth0   #更改其中IPADDR,NETMASK为:
  2. IPADDR=172.16.22.11
  3. NETMASK=255.255.0.0
  4. # service network restart
  5. # hostname node2.lihuan.com
  6. # vim /etc/sysconfig/network  #更改HOSTNAME为:
  7. HOSTNAME=node2.magedu.com
  8. # ssh-keygen -t rsa
  9. # ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.22.10
  10. # vim /etc/hosts  #增加如下两项:
  11. 172.16.22.10   node1.lihuan.com nide1
  12. 172.16.22.11   node2.lihuan.com nide2

二、安装配置DRBD

1.安装DRBD软件以及内核模块

所需软件包为:

drbd83-8.3.12-2.el5.centos.i386.rpm

kmod-drbd83-PAE-8.3.12-1.el5.centos.i686.rpm

下载地址为:http://mirrors.163.com/centos/5.8/extras/i386/RPMS/

在node1上安装:

rpm -ivh drbd83-8.3.12-2.el5.centos.i386.rpm  kmod-drbd83-PAE-8.3.12-1.el5.centos.i686.rpm

在node2上安装:

rpm -ivh drbd83-8.3.12-2.el5.centos.i386.rpm  kmod-drbd83-PAE-8.3.12-1.el5.centos.i686.rpm

2.对drbd进行配置

drbd的主配置文件/etc/drbd.conf,为了方便管理将配置文件分成多个部分放在/etc/drbd.d/下,主配置文件使用"include"指令将这些配置文件片断整合起来。

(1).建立主配置文件以及修改片段配置文件

# cp /usr/share/doc/drbd83-8.3.8/drbd.conf  /etc  #复制样例配置文件作为配置文件

  1. # vim /etc/drbd.d/global-common.conf  #内容如下:
  2. global {
  3. usage-count yes;
  4. # minor-count dialog-refresh disable-ip-verification
  5. }
  6. common {
  7. protocol C;
  8. handlers {
  9. pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
  10. pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
  11. local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
  12. # fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
  13. # split-brain "/usr/lib/drbd/notify-split-brain.sh root";
  14. # out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";
  15. # before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k";
  16. # after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;
  17. }
  18. startup {
  19. wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb
  20. wfc-timeout 120;
  21. }
  22. disk {
  23. on-io-error fencing use-bmbv no-disk-barrier no-disk-flushes
  24. no-disk-drain no-md-flushes max-bio-bvecs
  25. }
  26. net {
  27. # sndbuf-size rcvbuf-size timeout connect-int ping-int ping-timeout max-buffers
  28. # max-epoch-size ko-count allow-two-primaries cram-hmac-alg shared-secret
  29. # after-sb-0pri after-sb-1pri after-sb-2pri data-integrity-alg no-tcp-cork
  30. cram-hmac-alg "sha1";
  31. shared-secret "mydrbdlab";
  32. }
  33. syncer {
  34. # rate after al-extents use-rle cpu-mask verify-alg csums-alg
  35. rate 1000M;
  36. }
  37. }

(2).定义一个资源:

  1. # vim /etc/drbd.d/web.res  #内容如下:
  2. resource web {
  3. on node1.magedu.com {
  4. device    /dev/drbd0;
  5. disk      /dev/sda5;
  6. address   172.16.100.11:7789;
  7. meta-disk internal;
  8. }
  9. on node2.magedu.com {
  10. device    /dev/drbd0;
  11. disk      /dev/sda5;
  12. address   172.16.100.12:7789;
  13. meta-disk internal;
  14. }
  15. }

# scp -r  /etc/drbd.*  node2:/etc   #由于两个节点的配置文件相同,直接把配置文件拷贝到另一个节点

三、测试

1.初始化资源并启动服务:

在node1上:

# drbdadm create-md web

在node2上:

# drbdadm create-md web

在node1上:

# /etc/init.d/drbd start

在node2上:

# /etc/init.d/drbd start

2.在node1上,查看服务启动状态:

  1. [root@node1 ~]# cat /proc/drbd
  2. version: 8.3.8 (api:88/proto:86-94)
  3. GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by
  4. mockbuild@builder10.centos.org, 2010-06-04 08:04:16
  5. 0: cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate C r----
  6. ns:2024308 nr:36 dw:64544 dr:1960114 al:27 bm:150 lo:0 pe:0 ua:0
  7. ap:0 ep:1 wo:b oos:0

说明:此时可以看到两个节点都是Secondary,这是由于没有定义谁是primary,这里定义以node1为primary

3.定义node1为primary

在node1上:

  1. # drbdadm -- --overwrite-data-of-peer primary web
  2. [root@node1 ~]# cat /proc/drbd
  3. version: 8.3.8 (api:88/proto:86-94)
  4. GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by
  5. mockbuild@builder10.centos.org, 2010-06-04 08:04:16
  6. 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----
  7. ns:2024308 nr:36 dw:64544 dr:1960114 al:27 bm:150 lo:0 pe:0 ua:0
  8. ap:0 ep:1 wo:b oos:0

说明:此时看到node1为Primary了。

四、创建文件系统

文件系统的挂载只能在Primary节点进行,因此,这里只能在node1上进行:

在node1上:

  1. # mke2fs -j -L DRBD /dev/drbd0
  2. # mount /dev/drbd0 /mnt
  3. # cd /mnt
  4. # mkdir a b c   #创建几个测试目录
  5. # touch 1 2 3    #创建几个测试文件
  6. [root@node1 ~]# ls /mnt
  7. 1  2  3  a  b  c  lost+found

现在把主节点改为node2

首先在node1上:

# umount /mnt

# drbdadm secondary web

说明:先卸载/dev/drbd0再设置node1为次节点

然后在node2上:

# drbdadm primary web

# mount /dev/drbd0 /mnt

说明:先设置node2为主节点再挂载/dev/drbd0

[root@node2 ~]# ls /mnt

1  2  3  a  b  c  lost+found

此时在node2上也能看到刚才创建的目录以及文件了。

一个简单的DRBD实现了。

补充知识:

DRBD的资源角色有:

primary(主节点):可读可写可挂载

secondary(次节点):不可读不可写不可挂载

DRBD有两种模型:

Dual-primary

Primary/Secondary

DRBD的复制模型有:

Protocol A:异步复制(主节点一旦写入完成,数据发往本地TCP/IP缓存就宣告完成)

Protocol B:内存同步复制,半同步复制(主节点一旦写入完成,数据发往接收方的内存空间中,就宣告完成)

Protocol C:同步复制(主节点一旦写入完成,数据发往接收方的磁盘中,就宣告完成)

要想简单实现Primary/Secondary模型只需要在/etc/drbd.d/global-common.conf文件中net{……}

里增加如下一句:

allow-two-primaries;

并定义二者都为primary即可实现Primary/Secondary模型。

转载于:https://blog.51cto.com/lihuan/836847

实现DRBD的简单配置相关推荐

  1. 简单配置nginx反向代理,实现跨域请求

    简单配置nginx去做反向代理,实现跨域请求 简单介绍nginx的nginx.conf最核心的配置,去做反向代理,实现跨域请求. 更多详细配置,参考nginx官方文档 先介绍几个nginx命令 打开n ...

  2. Centos 6.5下一个SNMP简单配置(snmp protocol v3,监控宝)

    Centos 6.5下一个SNMP简单配置(snmp protocol v3.监控宝) jom_ch@2014/7/25 1,安装 >yum -y install net-snmp net-sn ...

  3. virtualbox 创建桥接网络_VirtualBox桥接网络的简单配置,让虚拟机直接访问网络

    VirtualBox桥接网络的简单配置,让虚拟机直接访问网络 分类: Linux 2009-08-20 08:59 5071人阅读 评论(0) 收藏 举报 (1)最新的 VirtualBox 可以简单 ...

  4. Webpack4 学习笔记 - 01:webpack的安装和简单配置

    安装 webpack 新建一个Demo文件夹,执行初始化: npm init 在Demo文件夹里安装 webpack 和 webpack-cli : npm install webpack webpa ...

  5. yum源的超级简单配置

    yum源的超级简单配置 1.先挂载光盘. 使用命令"mount  -o  loop  /dev/sr0 /mnt/cdrom".如果使用命令"mount -o  loop ...

  6. Apache简单配置(4)搭建Discuz 7.0.0论坛

    Apache简单配置(4)搭建Discuz 7.0.0论坛 RHEL5.3 基本网络配置 一. 1.RHEL5 U3:如图1 (如图1) 2.#hostname //查看当前主机的主机名:如图2 (如 ...

  7. maven存在的意义及其与eclipse的简单配置

    Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. 以上定义源自百度百科. 其实,我认为,Maven是一个采用纯Java编写的开源项目管理工 ...

  8. 20 ubuntu 中科大源_Linux-Ubuntu简单配置-换国内源-中文显示

    Linux-Ubuntu(个人示例使用版本20.04,其余版本区别不大) 好像知乎的动图加载有问题,这个动图应该阔以(*^▽^*)Linux-Ubuntu简单配置-更换国内源-中文设置​www.bil ...

  9. DNS服务器之简单配置(一)

    名词解释: 域名: 域名是域名系统名字空间中,从当前节点到根节点的路径上所有节点标记的点分顺序连接. 域: 域是指域名系统名字空间中的一个子集,也就是树形结构名字空间中的一颗子树.这个子树根节点的域名 ...

最新文章

  1. Spring源码分析【8】-分布式环境SpringSecurity保持用户会话
  2. R语言伯努利分布(Bernoulli distribution)函数(dbern, pbern, qbern rbern)实战
  3. linux 常用的系统信息查看命令
  4. docker安装nginx实例
  5. 新手学逆向,调试abexcm1过程
  6. text-overflow: ellipsis; 文本溢出隐藏
  7. java哈希表实现_Java实现简单哈希表详细代码
  8. 【KE特效仿制】假面骑士 EX-AID NCOP+无彩限的怪灵世界 NCOP
  9. 国密SM2/SM3算法在单片机平台上的实现(C语言)
  10. python数字黑洞123_演示数字黑洞现象
  11. win10系统怎么修复网络连接服务器失败怎么办,Win10网络重置后无法连接网络怎么办 网络重置后恢复网络方法教程...
  12. H5案例分享:jquery.qrcode.js生成简易二维码
  13. 计算机应用基础(专)【10】
  14. 第十一届“挑战杯”广东省大学生课外学术科技作品竞赛总结——陈文斌
  15. 得数据者得天下!作为后端开发必备技能之一的MySQL,这份十多年经验总结的应用实战与性能调优我想你肯定是需要的!
  16. 一步一步使用ABP框架搭建正式项目系列教程之本地化详解
  17. 【干货】郭朝晖:工业大数据的特征、方法与价值创造
  18. 内网横向移动|哈希传递PTH|mimikatz使用
  19. 为何世人对C+语言存在误解?C语言和C+太难?没前途?谬论!
  20. axios拦截器阻止发送请求

热门文章

  1. matplotlib 直方图_掌握了Matplotlib这两个方法,轻松绘制出漂亮的直方图!
  2. mysql jdbc 驱动名称_【经验分享】常用 JDBC 驱动名字和 URL 列表
  3. 细胞增殖曲线_【音频】第6章 细胞的生命历程 第1节 细胞的增殖
  4. CUDA TOOlkit Programming Guide K. Unified Memory Programming
  5. Element menu
  6. opencv-api drawKeyPoints
  7. C++语言vector容器介绍和示例
  8. 等保2.0标准下,测评中重点关注的内容
  9. redhat6.9系统telnet命令rpm包安装
  10. Android学习总结(5)——9个非常有用的Andorid 程序片段