开发者社区> 科技小先锋> 正文

ubuntu drbd双机互备

简介:
+关注继续查看
    DRBD 是由内核模块和相关脚本而构成,用以构建高可用性的集群。其实现方式是通过网络来镜像整个设备。您可以把它看作是一种网络RAID.

Drbd 负责接收数据,把数据写到本地磁盘,然后发送给另一个主机。另一个主机再将数据存到自己的磁盘中。其他所需的组件有集群成员服务,如TurboHA 或 心跳连接,以及一些能在块设备上运行的应用程序

drbd1:192.168.6.106
drbd2:192.168.6.107

OS:ubuntu server 8.04.1
软件:drbd-8.2.6.tar.gz

分别在两台机器安装,我的机器分区是用LVM来管理的
所以,我给两台机器都分了一个G,在/dev/www/www~
1。安装drbd所需要的,因为DRBD编译在内核里的,所以也要安装linux-headers
#uname -r 看下内核版本
2.6.24-19-serve  我的内核版本
#apt-get install  flex  linux-headers-2.6.24-19-server
2.编译安装drbd
#tar zxvf drbd-8.2.6.tar.gz
#cd drbd-8.2.6
#make clean    清除以前历史记录
#make KDIR=/usr/scr/linux-headers-2.6.24-19-server  编译+内核路径
#make install   安装
#groupadd haclient    建立组不然会提示警告
#chgrp haclient /sbin/drbdsetup
#chmod o-x /sbin/drbdsetup
#chmod u+s /sbin/drbdsetup

3.修改配置文件
#mv /etc/drbd.conf /etc/drbd.conf.bak 备份原配置文件
#vim /etc/drbd.conf
贴入
common {
# 设置主备节点同步时的网络速率最大值,单位是字节.
syncer { rate 10M; }
}
resource r0 {
# 使用协议C.表示收到远程主机的写入确认后,则认为写入完成.
protocol C;
disk { .-io-error detach; }
# 每个主机的说明以"on"开头,后面是主机名.在后面的{}中为这个主机的配置.
on drbd1 {
device /dev/drbd0;
disk /dev/www/www;   (如果是新家的硬盘就写 /dev/sdb1;/dev/sdc...)
address 192.168.6.106:7788;
meta-disk internal;
}
on drbd2 {
device /dev/drbd0;
disk /dev/www/www;   (如果是新家的硬盘就写 /dev/sdb1;/dev/sdc...)
address 192.168.6.107:7788;
meta-disk internal;
}
}
我的是很简单的,为了测试,还需要大家根据自己的需要自己修改~
好了两台机器都写完配置文件后,在drbd1和drbd2上分别输入命令
#drbdadm create-md r0  “r0”是我们在drbd.conf里定义
弹出的信息,敲回车,如果drbd.conf配置好的话,有的信息是不会弹出的。

现在我们可以启动DRBD了,分别在两台主机上执行:  
[root@drbd1 local]#/etc/init.d/drbd start
[root@drbd2 local]#/etc/init.d/drbd start 

[root@drbd1 ~]# cat /proc/drbd 
version: 8.0.11 (api:86/proto:86)
SVN Revision: 2713 build by 
root@drbd1
, 2008-06-27 14:07:14 1: cs:Connected st: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
        resync: used:0/31 hits:0 misses:0 starving:0 dirty:0 changed:0
        act_log: used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0
”/proc/drbd”中显示了drbd当前的状态.第一行的st表示两台主机的状态,都是”备机”状态.
ds是磁盘状态,都是”不一致”状态. 
这是由于,DRBD无法判断哪一方为主机,以哪一方的磁盘数据作为标准数据.所以,我们需要初始化

一个主机.在drbd1上执行:  
[root@drbd1 local]#drbdsetup /dev/drbd0 primary -o

 主备机状态分别是”主/备”,主机磁盘状态是”实时”,备机状态是”不一致”. 
在第3行,可以看到数据正在同步中,即主机正在将磁盘上的数据,传递到备机上.现在的进度是[>...................] sync'ed:  0.4% (1040316/1040316)K
稍等一会,在数据同步完后,再查看一下drbd1的DRBD状态:  


磁盘状态都是”实时”,表示数据同步完成了.
你现在可以把主机上的DRBD设备挂载到一个目录上进行使用.备机的DRBD设备无法被挂载,因为它是
用来接收主机数据的,由DRBD负责操作. 
在drbd1执行
root@drbd1:~# mkfs.ext2 /dev/drbd0  (格式化)
root@drbd1:~# mount /dev/drbd0 /mnt  (挂载到/mnt 目录)
root@drbd1:~# cd /mnt        
root@drbd1:/mnt# touch aaa
root@drbd1:/mnt# ls
aaa  lost+found
然后在 drbd2 上执行
root@drbd2:~#/etc/init.d/drbd stop
Stopping all DRBD resources.
root@drbd2:~# mount /dev/drbd0 /mnt
root@drbd2:~# cd /mnt
root@drbd1:~# ls
aaa  lost+found
可以看到,在主机drbd1上产生的文件aa,也完整的保存在备机drbd2的DRBD分区上. 
这就是DRBD的网络RAID-1功能. 在主机上的任何操作,都会被同步到备机的相应磁盘分区上,达到数据备份的效果.
=====================================================================
DRBD的主备机切换有时,你需要将DRBD的主备机互换一下.可以执行下面的操作: 
在主机上,先要卸载掉DRBD设备
root@drbd1~# umount /mnt
将主机降级为”备机”
root@drbd1~# drbdadm secondary r0
root@drbd1~# cat /proc/drbd
version: 8.0.11 (api:86/proto:86)
SVN Revision: 2713 build by 
root@drbd1
, 2008-06-27 14:07:14
1: cs:Connected st:Secondary/Secondary ds:UpToDate/UpToDate C r---
    ns:497972 nr:0 dw:28 dr:498006 al:2 bm:36 lo:0 pe:0 ua:0 ap:0
        resync: used:0/31 hits:31100 misses:34 starving:0 dirty:0 changed:34
        act_log: used:0/127 hits:26 misses:2 starving:0 dirty:0 changed:2
现在,两台主机都是”备机”. 
在备机drbd2上,将它升级为”主机”.  [root@drbd2 mnt]# drbdadm primary r0
root@drbd2~# cat /proc/dr
drbd    driver/ 
[root@drbd2 mnt]# cat /proc/drbd 
version: 8.0.11 (api:86/proto:86)
SVN Revision: 2713 build by 
root@drbd2
, 2008-06-27 14:11:24 1: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r---
    ns:0 nr:16 dw:16 dr:0 al:0 bm:2 lo:0 pe:0 ua:0 ap:0
        resync: used:0/31 hits:6 misses:2 starving:0 dirty:0 changed:2
        act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0
现在drbd2成为主机了。
===============================================================

特别注意,我在测试的时候发生一个问题,就是我做双机互备的时候,先把/dev/www/www 格式化总是出错,后来从新做,然后格式化的/dev/drbd0就没有错误`所以大家做的时候,不要先格式化。在有就是两个drbd用的盘一样的同等大小!




本文转自Deidara 51CTO博客,原文链接:http://blog.51cto.com/deidara/105875,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Ubuntu 20.04安装sogou输入法
Ubuntu 20.04安装sogou输入法
5 0
Ubuntu 20.04安装中文输入法和切换中文系统
Ubuntu 20.04安装中文输入法和切换中文系统
8 0
Ubuntu 20.04中SecureCRT的安装和使用
Ubuntu 20.04中SecureCRT的安装和使用
7 0
Ubuntu中gcc-arm-none-eabi的安装、移除和版本切换
Ubuntu中gcc-arm-none-eabi的安装、移除和版本切换
6 0
Linux | Liunx安装Tomcat(Ubuntu版)
Linux | Liunx安装Tomcat(Ubuntu版)
13 0
Linux | Linux卸载和安装MySQL(Ubuntu版)
Linux | Linux卸载和安装MySQL(Ubuntu版)
19 0
Ubuntu 18.04安装N卡驱动
Ubuntu 18.04安装N卡驱动
12 0
在ubuntu上安装postgresql 12
登录到postgresql的官方网站,选择相应的版本
21 0
Ubuntu安装RabbitMQ server - 在ubuntu+cpolar+rabbitMQ环境下,实现mq服务端远程访问
Ubuntu安装RabbitMQ server - 在ubuntu+cpolar+rabbitMQ环境下,实现mq服务端远程访问
37 0
Ubuntu安装docker和docker compose
Ubuntu安装docker容器化环境
125 0
+关注
科技小先锋
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载
相关实验场景
更多