实现DRBD的简单配置
实现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,先不要格式化
- # vim /etc/sysconfig/network-scripts/ifcfg-eth0 #更改其中IPADDR,NETMASK为:
- IPADDR=172.16.22.10
- NETMASK=255.255.0.0
- # service network restart
- # hostname node1.lihuan.com
- # vim /etc/sysconfig/network #更改HOSTNAME为:
- HOSTNAME=node1.magedu.com
- # ssh-keygen -t rsa
- # ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.22.11
- # vim /etc/hosts #增加如下两项:
- 172.16.22.10 node1.lihuan.com nide1
- 172.16.22.11 node2.lihuan.com nide2
2.在node2上:
在sda上准备一个分区:sda5,大小为2G,先不要格式化
- # vim /etc/sysconfig/network-scripts/ifcfg-eth0 #更改其中IPADDR,NETMASK为:
- IPADDR=172.16.22.11
- NETMASK=255.255.0.0
- # service network restart
- # hostname node2.lihuan.com
- # vim /etc/sysconfig/network #更改HOSTNAME为:
- HOSTNAME=node2.magedu.com
- # ssh-keygen -t rsa
- # ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.22.10
- # vim /etc/hosts #增加如下两项:
- 172.16.22.10 node1.lihuan.com nide1
- 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 #复制样例配置文件作为配置文件
- # vim /etc/drbd.d/global-common.conf #内容如下:
- global {
- usage-count yes;
- # minor-count dialog-refresh disable-ip-verification
- }
- common {
- protocol C;
- handlers {
- 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";
- 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";
- local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
- # fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
- # split-brain "/usr/lib/drbd/notify-split-brain.sh root";
- # out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";
- # before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k";
- # after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;
- }
- startup {
- wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb
- wfc-timeout 120;
- }
- disk {
- on-io-error fencing use-bmbv no-disk-barrier no-disk-flushes
- no-disk-drain no-md-flushes max-bio-bvecs
- }
- net {
- # sndbuf-size rcvbuf-size timeout connect-int ping-int ping-timeout max-buffers
- # max-epoch-size ko-count allow-two-primaries cram-hmac-alg shared-secret
- # after-sb-0pri after-sb-1pri after-sb-2pri data-integrity-alg no-tcp-cork
- cram-hmac-alg "sha1";
- shared-secret "mydrbdlab";
- }
- syncer {
- # rate after al-extents use-rle cpu-mask verify-alg csums-alg
- rate 1000M;
- }
- }
(2).定义一个资源:
- # vim /etc/drbd.d/web.res #内容如下:
- resource web {
- on node1.magedu.com {
- device /dev/drbd0;
- disk /dev/sda5;
- address 172.16.100.11:7789;
- meta-disk internal;
- }
- on node2.magedu.com {
- device /dev/drbd0;
- disk /dev/sda5;
- address 172.16.100.12:7789;
- meta-disk internal;
- }
- }
# 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上,查看服务启动状态:
- [root@node1 ~]# cat /proc/drbd
- version: 8.3.8 (api:88/proto:86-94)
- GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by
- mockbuild@builder10.centos.org, 2010-06-04 08:04:16
- 0: cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate C r----
- ns:2024308 nr:36 dw:64544 dr:1960114 al:27 bm:150 lo:0 pe:0 ua:0
- ap:0 ep:1 wo:b oos:0
说明:此时可以看到两个节点都是Secondary,这是由于没有定义谁是primary,这里定义以node1为primary
3.定义node1为primary
在node1上:
- # drbdadm -- --overwrite-data-of-peer primary web
- [root@node1 ~]# cat /proc/drbd
- version: 8.3.8 (api:88/proto:86-94)
- GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by
- mockbuild@builder10.centos.org, 2010-06-04 08:04:16
- 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----
- ns:2024308 nr:36 dw:64544 dr:1960114 al:27 bm:150 lo:0 pe:0 ua:0
- ap:0 ep:1 wo:b oos:0
说明:此时看到node1为Primary了。
四、创建文件系统
文件系统的挂载只能在Primary节点进行,因此,这里只能在node1上进行:
在node1上:
- # mke2fs -j -L DRBD /dev/drbd0
- # mount /dev/drbd0 /mnt
- # cd /mnt
- # mkdir a b c #创建几个测试目录
- # touch 1 2 3 #创建几个测试文件
- [root@node1 ~]# ls /mnt
- 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的简单配置相关推荐
- 简单配置nginx反向代理,实现跨域请求
简单配置nginx去做反向代理,实现跨域请求 简单介绍nginx的nginx.conf最核心的配置,去做反向代理,实现跨域请求. 更多详细配置,参考nginx官方文档 先介绍几个nginx命令 打开n ...
- 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 ...
- virtualbox 创建桥接网络_VirtualBox桥接网络的简单配置,让虚拟机直接访问网络
VirtualBox桥接网络的简单配置,让虚拟机直接访问网络 分类: Linux 2009-08-20 08:59 5071人阅读 评论(0) 收藏 举报 (1)最新的 VirtualBox 可以简单 ...
- Webpack4 学习笔记 - 01:webpack的安装和简单配置
安装 webpack 新建一个Demo文件夹,执行初始化: npm init 在Demo文件夹里安装 webpack 和 webpack-cli : npm install webpack webpa ...
- yum源的超级简单配置
yum源的超级简单配置 1.先挂载光盘. 使用命令"mount -o loop /dev/sr0 /mnt/cdrom".如果使用命令"mount -o loop ...
- Apache简单配置(4)搭建Discuz 7.0.0论坛
Apache简单配置(4)搭建Discuz 7.0.0论坛 RHEL5.3 基本网络配置 一. 1.RHEL5 U3:如图1 (如图1) 2.#hostname //查看当前主机的主机名:如图2 (如 ...
- maven存在的意义及其与eclipse的简单配置
Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. 以上定义源自百度百科. 其实,我认为,Maven是一个采用纯Java编写的开源项目管理工 ...
- 20 ubuntu 中科大源_Linux-Ubuntu简单配置-换国内源-中文显示
Linux-Ubuntu(个人示例使用版本20.04,其余版本区别不大) 好像知乎的动图加载有问题,这个动图应该阔以(*^▽^*)Linux-Ubuntu简单配置-更换国内源-中文设置www.bil ...
- DNS服务器之简单配置(一)
名词解释: 域名: 域名是域名系统名字空间中,从当前节点到根节点的路径上所有节点标记的点分顺序连接. 域: 域是指域名系统名字空间中的一个子集,也就是树形结构名字空间中的一颗子树.这个子树根节点的域名 ...
最新文章
- Spring源码分析【8】-分布式环境SpringSecurity保持用户会话
- R语言伯努利分布(Bernoulli distribution)函数(dbern, pbern, qbern rbern)实战
- linux 常用的系统信息查看命令
- docker安装nginx实例
- 新手学逆向,调试abexcm1过程
- text-overflow: ellipsis; 文本溢出隐藏
- java哈希表实现_Java实现简单哈希表详细代码
- 【KE特效仿制】假面骑士 EX-AID NCOP+无彩限的怪灵世界 NCOP
- 国密SM2/SM3算法在单片机平台上的实现(C语言)
- python数字黑洞123_演示数字黑洞现象
- win10系统怎么修复网络连接服务器失败怎么办,Win10网络重置后无法连接网络怎么办 网络重置后恢复网络方法教程...
- H5案例分享:jquery.qrcode.js生成简易二维码
- 计算机应用基础(专)【10】
- 第十一届“挑战杯”广东省大学生课外学术科技作品竞赛总结——陈文斌
- 得数据者得天下!作为后端开发必备技能之一的MySQL,这份十多年经验总结的应用实战与性能调优我想你肯定是需要的!
- 一步一步使用ABP框架搭建正式项目系列教程之本地化详解
- 【干货】郭朝晖:工业大数据的特征、方法与价值创造
- 内网横向移动|哈希传递PTH|mimikatz使用
- 为何世人对C+语言存在误解?C语言和C+太难?没前途?谬论!
- axios拦截器阻止发送请求
热门文章
- matplotlib 直方图_掌握了Matplotlib这两个方法,轻松绘制出漂亮的直方图!
- mysql jdbc 驱动名称_【经验分享】常用 JDBC 驱动名字和 URL 列表
- 细胞增殖曲线_【音频】第6章 细胞的生命历程 第1节 细胞的增殖
- CUDA TOOlkit Programming Guide K. Unified Memory Programming
- Element menu
- opencv-api drawKeyPoints
- C++语言vector容器介绍和示例
- 等保2.0标准下,测评中重点关注的内容
- redhat6.9系统telnet命令rpm包安装
- Android学习总结(5)——9个非常有用的Andorid 程序片段