linux服务之drbd
http://www.drbd.org/docs/about/
http://oss.linbit.com/drbd/
一般我们会在生产环境的MYSQL中用drbd +ha做master 备份,当然这是应对中小访问量,大的访问量就上LVS了。 DRBD已经是很多年的事,以前DRBD只是有一个LINUX的外部内核模块, 然而在高版本的LINUX内核中,已经集成了其中的这个模块,在老的系统中我们常把这个包叫做KMOD-DRBD,其实就是内核模块安装包,这是最重要的一个部分,通过调用内核模块达到网络RAID1的功能。
DRBD consists of two main components. The driver code in the kernel, and the user space tools to control, configure the driver, as well as integration programs and scripts that glues the DRBD system to cluster management software and other system components.
由于这个内核模块已经被集成到相对高版本的LINUX内核中,因此可以这么看,低于Linux-2.6.33 kernel 内核,必须安装KMOD-DRBD模块,高于这个版本的内核则不用。
有意思的是,在CENTOS5.X的时代,YUM INSTALL
yum install -y drbd83 kmod-drbd83 既可以达到同时安装DRBD内核模块和管理工具包的目的,但是到了CENTOS6就不行了。直接YUM INSTALL是行不通的。
在这种情况下,如果要安装二进制包文件,必须去找Binary packages provided by LINBIT,这是收费的。要么就是你升级内核,KMOD这个模块就不必安装了,直接安装管理包。
CENTOS 6.3的内核很不幸的是2.6.32,尚未达到2.6.33之上,所以必须升级内核。
看LINUX内核与DRBD的对应关系,相当明显:
为了drbd,更新了内核还是不支持,从2.6.32-431到2.6.32-642还是没有用
在linux 2.6.33以后的版本中,drbd已经集成到内核中,但在cs7.2中好像没有drbd.ko,但是在ubuntu14.04中有,所以只需要安装用户空间工具就行了
root@wo-KVM:/lib/modules/4.2.0-27-generic/kernel/drivers/block# cat /etc/issue
Ubuntu 14.04.4 LTS \n \l
root@wo-KVM:/lib/modules/4.2.0-27-generic/kernel/drivers/block# modprobe -r drbd
root@wo-KVM:/lib/modules/4.2.0-27-generic/kernel/drivers/block# lsmod |grep drbd
root@wo-KVM:/lib/modules/4.2.0-27-generic/kernel/drivers/block# modprobe drbd
root@wo-KVM:/lib/modules/4.2.0-27-generic/kernel/drivers/block# lsmod |grep drbd
drbd 339968 0
lru_cache 16384 1 drbd
libcrc32c 16384 1 drbd
root@wo-KVM:/lib/modules/4.2.0-27-generic/kernel/drivers/block# apt search drbd
Sorting... Done
Full Text Search... Done
drbd8-utils/trusty 2:8.4.4-1ubuntu1 amd64
RAID 1 over TCP/IP for Linux (user utilities)
安装drbd
# wget http://oss.linbit.com/drbd/8.4/drbd-8.4.3.tar.gz
# tar zxvf drbd-8.4.3.tar.gz
# cd drbd-8.4.3
# ./configure --prefix=/usr/local/drbd --with-km
# make KDIR=/usr/src/kernels/2.6.32-279.el6.x86_64/
yum -y install kernel-devel kernel-headers flex
注意:安装kernel-devel一定要和你uname -r 看到的内核版本一致,建议kernel-devel用本地源安装,不要用网络源安装
[root@node1 soft]# tar zxf drbd-8.4.3.tar.gz
[root@node1 soft]# cd drbd-8.4.3
[root@node1 drbd-8.4.3]# ./configure --prefix=/usr/local/drbd --with-km
注意:--with-km是启用内核模块
[root@node1 ~]# make KDIR=/usr/src/kernels/2.6.32-358.el6.i686
注意KDIR的路径 (这个内核源码路径需要根据自己的系统修改)
[root@node1 drbd-8.4.3]# make install
[root@node1 ~]# mkdir -p /usr/local/drbd/var/run/drbd
[root@node1 ~]# cp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/rc.d/init.d/
[root@node1 ~]# chkconfig --add drbd
[root@node1 ~]# chkconfig drbd on
安装drbd模块
回到刚刚解压drbd的目录,然后
[root@node1 drbd-8.4.3]# cd drbd
[root@node1 drbd]# make clean
[root@node1drbd]# make KDIR=/usr/src/kernels/2.6.32-358.el6.i686
[root@node1 drbd]# cp drbd.ko /lib/modules/`uname -r`/kernel/lib/
[root@node1 drbd]# modprobe drbd
查看模块是否加载成功
[root@node1 drbd]# lsmod | grep drbd
drbd 292307 0
先看看系统的内核版本
# uname -r (目前的版本)
2.6.32-279.el6.x86_64
下面以安装drbd模块为例进行说明
正确安装drbd模块后,使用modprobe进行加载
# modprobe drbd
FATAL: Module drbd not found.
出现如上错误
原因:这是因为系统默认的内核并不支持此模块,所以需要更新内核
更新内核的方法:
可以用 yum install kernel* 方式来更新。
如果你要节约点时间的话可以只更新一下的几个包:
kernel-devel
kernel
kernel-headers
更新后,记得要重新启动操作系统!!!
# depmod
说明:在编译并准备好一个Linux内核加载模块后,modprobe前必须先执行命令depmod,此命令会生成新的modules.dep。
[root@bd2 ~]# depmod
[root@bd2 ~]# modprobe drbd
[root@bd2 ~]# lsmod|grep drbd
drbd 325786 0
libcrc32c 1246 1 drbd
编辑配文
[root@bd2 ~]# vi /etc/drbd.conf
resource r0{
protocol C;
startup { wfc-timeout 0; degr-wfc-timeout 120;}
disk { on-io-error detach;}
net{
timeout 60;
connect-int 10;
ping-int 10;
max-buffers 2048;
max-epoch-size 2048;
}
syncer { rate 30M;}
on bd1{
device /dev/drbd0;
disk /dev/sdb1;
address 172.16.2.1:7788;
meta-disk internal;
}
on bd2{
device /dev/drbd0;
disk /dev/sdb1;
address 172.16.2.2:7788;
meta-disk internal;
}
}
创建分区
# fdisk /dev/sdb
----------------
n-p-1-1-"+1G"-w
----------------
# mkdir /data
创建DRBD设备并激活ro资源:(Primary,Secondary)
# mknod /dev/drbd0 b 147 0
# drbdadm create-md r0
等待片刻,显示success表示drbd块创建成功
--== Thank you for participating in the global usage survey ==--
The server's response is:
you are the 19411th user to install this version
no resources defined!
因为配文错误应该是下面的位置,而不是/etc/drbd.conf
[root@bd2 ~]# vi /usr/local/drbd/etc/drbd.conf
[root@bd2 ~]# drbdadm create-md r0
Writing meta data...
initializing activity log
NOT initializing bitmap
New drbd meta data block successfully created.
success
命令汇总
[root@bd2 ~]# fdisk /dev/sdb
[root@bd2 ~]# mkdir /data
[root@bd2 ~]# depmod
[root@bd2 ~]# modprobe drbd
[root@bd2 ~]# lsmod |grep drbd
[root@bd2 ~]# mknod /dev/drbd0 b 147 0
[root@bd2 ~]# drbdadm create-md r0
[root@bd1 ~]# service drbd start
[root@bd2 ~]# drbdadm -- --overwrite-data-of-peer primary r0
[root@bd2 ~]# ps -ef|grep drbd
root 1405 2 0 Aug11 ? 00:00:00 [drbd-reissue]
root 1410 2 0 Aug11 ? 00:00:00 [drbd_submit]
root 1417 2 0 Aug11 ? 00:00:52 [drbd_w_r0]
root 1421 2 0 Aug11 ? 00:00:52 [drbd_r_r0]
root 1426 2 0 Aug11 ? 00:00:01 [drbd_a_r0]
root 1753 1692 0 12:02 pts/0 00:00:00 grep drbd
[root@bd1 ~]# netstat -anput |grep 7788
tcp 0 40 172.16.2.1:7788 172.16.2.2:48538 ESTABLISHED -
tcp 0 80 172.16.2.1:7788 172.16.2.2:53019 ESTABLISHED -
[root@bd1 ~]# drbdadm cstate r0
Connected
[root@bd1 ~]# drbdadm dstate r0
UpToDate/UpToDate
[root@bd1 ~]# drbdadm role r0
Secondary/Primary
[root@bd1 ~]# drbd-overview
0:r0 cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
[root@bd2 ~]# service drbd status
drbd driver loaded OK; device status:
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@bd2, 2014-08-11 14:53:29
m:res cs ro ds p mounted fstype
0:r0 SyncSource Primary/Secondary UpToDate/Inconsistent C
... sync'ed: 90.0% (1648/16376)M
[root@bd1 ~]# cat /proc/drbd
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@bd2, 2014-08-11 14:53:29
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r---n-
ns:15643840 nr:0 dw:0 dr:15645336 al:0 bm:954 lo:0 pe:3 ua:1 ap:0 ep:1 wo:f oos:1129680
[=================>..] sync'ed: 93.3% (1100/16376)M
finish: 0:01:35 speed: 11,824 (11,492) K/sec
第一次数据同步完成之后,就可以创建文件系统并挂载使用了,只能挂primary,备机只能接收主机数据
[root@bd2 ~]# mkfs.ext3 /dev/drbd0
[root@bd2 /]# mount /dev/drbd0 /data/
linux服务之drbd的更多相关文章
- 两台linux利用heartbeat+drbd 完美实现双机热备
一直想做基于linux的双机热备,一直没有时间和机会.一直以为只要做双机热备的实验就必须两台机器外接一个存储.甚至一个月以前在学习keepalived的时候还在琢磨keepalvied去掉哪些条件可以 ...
- 第11章 Linux服务管理
1. 服务分类 (1)Linux的服务 ①Linux中绝大多数的服务都是独立的,直接运行于内存中.当用户访问时,该服务直接响应用户,其好处是服务访问响应速度快.但不利之处是系统中服务越多,消耗的资源越 ...
- 在 CentOS7 上将自定义的 jar 包注册为 linux 服务 service
在 CentOS7 上将自定义的 jar 包注册为 linux 服务 service 1.在 /etc/rc.d/init.d/ 目录下创建一个名字和服务名完全相同的 shell 脚本文件 joyup ...
- linux笔记:linux服务管理
linux服务的分类: 启动和自启动: 查询已经安装的服务: RPM包的默认安装路径: 独立服务的启动: 独立服务的自启动: 基于xinetd的服务的管理: xinetd服务的自启动: 源码包安装服务 ...
- Linux学习笔记(19) Linux服务管理
1. 服务的分类 Linux服务可分为RPM包默认安装的服务和源码包安装的服务.前者可细分为独立的服务(直接作用于内存中)和基于xinetd服务.xinetd本身是独立的服务,其唯一的功能是管理其他服 ...
- [Linux]服务管理:rpm包, 源码包
--------------------------------------------------------------------------------------------------- ...
- linux服务器之LVS、Nginx和HAProxy负载均衡器对比
linux服务器之LVS.Nginx和HAProxy负载均衡器对比. LVS特点: 1.抗负载能力强,使用IP负载均衡技术,只做分发,所以LVS本身并没有多少流量产生: 2.稳定性.可靠性好,自身 ...
- 《如何将windows上的软件包或文件上传到linux服务上》
昨天晚上朋友让我帮他简单的搭建个环境,他公司让他做款软件测试温度的,他自己搞的是嵌入式,在公司担任的是软件工程师,应届毕业生.也可能他们搞嵌入式的对这个linux系统不太熟,不会把windows上的软 ...
- linux服务端的网络编程
常见的Linux服务端的开发模型有多进程.多线程和IO复用,即select.poll和epoll三种方式,其中现在广泛使用的IO模型主要epoll,关于该模型的性能相较于select和poll要好不少 ...
随机推荐
- 玩转无线电 -- GPS Hacking (上)
0x00 序 GPS Hacking 在过去几年的安全会议上一直都是很受关注的议题. 但往往因为内容太过学术化, 所需设备成本太高. 让许多感兴趣的朋友苦于无法入门. 直到GPS-SDR-SIM 这类 ...
- jQuery轮播图
yii2 轮播 样式: <style type="text/css"> *{margin:0;padding:0} body{margin:50px} li{list- ...
- ORM和Hibernate的配置方式
分层体系结构: 逻辑上一般分为三层:表述层(提供与用户交互的界面).业务逻辑层(实现各种业务的逻辑).数据库层(负责存放和管理应用的持久性业务数据). 物理上一般分为两层:物理层(每一层都运行在网络上 ...
- BZOJ3261 最大异或和 (可持久化Trie)
; len=; var x,y,z,n,m,tot,lx,i:longint; sum:..maxn] of longint; rt:..maxn] of longint; time,l,r:..ma ...
- 关于oracle出现ORA-06143:连接未打开 解决方案
原因:程序所在的路径中含有()和中文 用plsql连接正常,连接字符串也检查不出毛病,换到另一个程序照样使用,折腾了半天,最后才发现程序所在的路径中含有()和中文,所以可能导致出现这种很难排查的问题出 ...
- HDU 5067
http://acm.hdu.edu.cn/showproblem.php?pid=5067 规定起点和终点的tsp问题,解法依然是状态压缩dp,在初始化和计算答案的时候略做改动即可 #include ...
- 深入理解JVM内部结构(转)
图中显示的组件将会在下面两部分中进行逐一的解释.第一部分涉及JVM为每一个线程都会创建的组件:第二部分则是独立于线程进行创建的组件. 1. Thread Thread是一个程序中的一个 ...
- php中能够获取到某一网站内容的方法
方法一:file_get_contents 函数 example: <?php $url = "http://www.cnblogs.com"; $contents = fi ...
- PAT (Basic Level) Practise:1004. 成绩排名
[题目链接] 读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入包含1个测试用例,格式为 第1行:正整数n 第2行:第1个学生的姓名 学号 成绩 第3 ...
- 解决:导入第三方jar包后,仍然出现java.lang.NoClassDefFoundError的错误
最近,在运行某个Android工程的时候,一直抛出java.lang.NoClassDefFoundError异常. 按照异常所给出的信息,应该是程序使用到的第三方jar包出了问题. 但是,这些第三方 ...