快速安装及部署DRBD

DRBD以其开源,简单,高效,性能不俗为广大运维者们所青睐。主要功能是在不同节点上两个相同大小的设备块级别之间的数据同步镜像。drbd是由内核模块和相关脚本而构成,用以构建高可用性的集群。本文主要描述其安装方式,供大家参考。 有关DRBD的特性,功能及其相关基础知识,大家可以参考: DRBD原理及特性概述

一、演示环境

OS版本:CentOS release 6.5 (Final)
orasrv1: 192.168.21.10 
orasrv2: 192.168.21.13 
DRBD版本Version: 8.3.15 (api:88)

二、yum方式安装drbd(两节点)

1、以下通过yum方式安装

配置epel源,可以从这里下载,或者直接用wget方式获取
http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
# wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm 
# rpm -Uvh epel-release-6-8.noarch.rpm
# yum -y install drbd83 kmod-drbd83
# modprobe drbd
# lsmod |grep drbd
drbd                  345363  0 

2、配置部分,请参考第三点编译方式安装drbd之第4小点后续部分

###注,通过yum方式安装时,drbd配置文件目录有所不同
###drbd.conf文件放置到/etc目录下,其余的2个配置文件存放到/etc/drbd.d目录下

三、编译方式安装drbd

1、安装用户空间工具(两节点)

# yum -y install kernel-devel kernel-headers flex gcc
# pwd
usr/local/src     ###drbd压缩文件存放位置
# tar -xvf drbd-8.3.15.tar.gz 
# cd drbd-8.3.15
# ./configure --prefix=/usr/local/drbd --with-km
# make KDIR=/usr/src/kernels/2.6.32-431.el6.x86_64/
# make install
# ls /usr/local/drbd/   ##查看安装后的文件
etc  lib  sbin  share  var

# cp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/init.d/drbd
# chkconfig --add drbd
# chkconfig drbd on

2、安装drbd模块(两节点)

# cd /usr/local/src/drbd-8.3.15/drbd
# make clean
# make KDIR=/usr/src/kernels/2.6.32-431.el6.x86_64/
# cp drbd.ko /lib/modules/`uname -r`/kernel/lib/
# depmod
# modprobe drbd    ###加载drbd模块到Linux内核
注:/usr/src/kernels/2.6.18-274.18.1.el5-i686/这个内核源码树路径需要根据自己的系统修改。

3、验证drbd内核加载(两节点)

# lsmod |grep drbd
drbd                  345363  0 

4、配置系统磁盘(两节点)

### Author : Leshami
### Blog   : http://blog.csdn.net/leshami
###本示例种为当前2节点单独分配了/dev/sdb磁盘,以下操作在2节点完成
# fdisk /dev/sdb    ###依次输入n,p,1,回车(enter),回车(enter),w
# partprobe         ###如果依旧无法看到分区,请reboot以及查找原因
# fdisk -l /dev/sdb

5、配置drbd.conf及global_common.conf(两节点)

# mv /usr/local/drbd/etc/drbd.conf /usr/local/drbd/etc/drbd.conf.bk
# cp /usr/local/src/drbd-8.3.15/scripts/drbd.conf /usr/local/drbd/etc/drbd.conf

# more /usr/local/drbd/etc/drbd.conf   ###查看drbd.conf应包含下列include内容
# You can find an example in  /usr/share/doc/drbd.../drbd.conf.example
include "drbd.d/global_common.conf";
include "drbd.d/*.res";

# mv /usr/local/drbd/etc/drbd.d/global_common.conf /usr/local/drbd/etc/drbd.d/global_common.conf.bk
# vi /usr/local/drbd/etc/drbd.d/global_common.conf   ###global_common.conf可以参考drbd.conf.example
global {
        usage-count yes;
        # minor-count dialog-refresh disable-ip-verification
}

common {
        protocol C;

        handlers {
        }

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

        disk {
                on-io-error detach;
        }

        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 "MySQL-HA";      
        }

        syncer {
                # rate after al-extents use-rle cpu-mask verify-alg csums-alg
                rate 35M;
        }
}

###配置资源文件redisk.res
# vi /usr/local/drbd/etc/drbd.d/redisk.res              
resource redisk {
  on orasrv1.xlk.com {
    device    /dev/drbd0;
    disk      /dev/sdb1;
    address   192.168.21.10:7789;
    meta-disk internal;
  }
  on orasrv2.xlk.com {
    device    /dev/drbd0;
    disk      /dev/sdb1;
    address   192.168.21.13:7789;
    meta-disk internal;
  }
}

###也可以通过copy方式直接将配置文件copy到节点2,则无需单独配置2个配置文件,如下:
# scp /usr/local/drbd/etc/drbd.d/* 192.168.21.13:/usr/local/drbd/etc/drbd.d/
# scp /usr/local/drbd/etc/drbd.conf 192.168.21.13:/usr/local/drbd/etc/

6、创建device metadata(两节点执行)

# drbdadm create-md redisk
Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.

[root@orasrv1 drbd.d]# drbdadm up redisk
[root@orasrv1 drbd.d]# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.15 (api:88/proto:86-97)
GIT-hash: 0ce4d235fc02b5c53c1c52c53433d11a694eab8c build by root@orasrv1.xlk.com, 2015-10-31 09:16:05
m:res     cs            ro                 ds                     p  mounted  fstype
0:redisk  WFConnection  Secondary/Unknown  Inconsistent/DUnknown  C

5、设置Primary节点(主节点)

以下操作仅在节点1(orasrv1)执行
# drbdadm primary --force redisk
0: State change failed: (-2) Need access to UpToDate data
Command 'drbdsetup 0 primary' terminated with exit code 17
# drbdadm -- --overwrite-data-of-peer primary redisk
# mkfs.ext3 /dev/drbd0
# mkdir /data
# mount /dev/drbd0 /data
# df -h |grep data
/dev/drbd0      2.0G   36M  1.9G   2% /data

###在第二个节点上创建/data目录
# mkdir /data
###查看drbd状态信息:
#cat /proc/drbd

四、DRBD数据镜像功能测试

###首先在主节点完成如下操作
# cp -R /usr/local/drbd /data
# ls /data/drbd
etc  lib  sbin  share  var
# du -sh /data/drbd
324K    /data/drbd

# umount /data
# drbdadm secondary redisk
# cat /proc/drbd
version: 8.3.15 (api:88/proto:86-97)
GIT-hash: 0ce4d235fc02b5c53c1c52c53433d11a694eab8c build by root@orasrv1.xlk.com, 2015-10-31 10:58:13
 0: cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate C r-----
    ns:1044700 nr:0 dw:33780 dr:1045517 al:3 bm:64 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

###在备用节点完成如下操作  
# drbdadm primary redisk
# cat /proc/drbd
version: 8.3.15 (api:88/proto:86-97)
GIT-hash: 0ce4d235fc02b5c53c1c52c53433d11a694eab8c build by root@orasrv2.xlk.com, 2015-10-31 10:59:26
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:0 nr:1044700 dw:1044700 dr:672 al:0 bm:64 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
# mount /dev/drbd0 /data
# du -sh /data/drbd    ###两节点数据目录及大小完全一致
324K    /data/drbd

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java后端技术

GitLab配置ssh key

  当前很多公司都选择git作为代码版本控制工具,然后自己公司搭建私有的gitlab来管理代码,我们在clone代码的时候可以选择http协议,当然我们亦可以选...

13530
来自专栏linux运维学习

linux学习第四十二篇:限定某个目录禁止解析php, 限制user_agent,PHP相关配置

限定某个目录禁止解析php 虚拟主机配置文件添加的核心配置内容: <Directory /data/wwwroot/111.com/upload> ...

26790
来自专栏iOSer成长记录

Mac下使用OpenGL——配置glew/glut/glfw3/gltools环境

27860
来自专栏枕边书

网页实时聊天之js和jQuery实现ajax长轮询

众所周知,HTTP协议是无状态的,所以一次的请求都是一个单独的事件,和前后都没有联系。所以我们在解决网页实时聊天时就遇到一个问题,如何保证与服务器的长时间联系,...

82580
来自专栏pythonlove

FTP使用MariaDB完成虚拟用户认证

文件传输协议(英文:File Transfer Protocol,縮寫:FTP)是用於在網絡上進行文件傳輸的一套標準協議。它属于网络传输协议的应用层。FTP是一...

12640
来自专栏农夫安全

sqlmap基础使用详解(以sqli_labs为例)

一、基于错误的GET型注入 如果确定该url下存在注入,直接把url扔到sqlmap 1 先探测当前数据库版本 语句: sqlmap -u http://192...

52780
来自专栏ImportSource

GitHub不count contributions的解决办法

最近在github上提交代码,发现push上去代码以后,在Public activity 里是有记录的,如下: ? 但在Contribution activi...

37360
来自专栏SDNLAB

SDN开发笔记(一):SDN开发环境的搭建(win7环境)

前言 鉴于网上对于SDN开发相关的资料较少又乱的现状,从这篇文章开始,我将陆续分享我在SDN开发过程中的经验,我的SDN项目开发是基于OpenDaylight的...

46780
来自专栏Crossin的编程教室

极简 Github 上手教程

随着你写的代码越来越多,就需要去管理这些代码,可能要在不同的电脑上编写同一份代码,可能要和别人合作开发,也可能想把项目分享给别人。更进一步地,你可能还会需要管理...

33370
来自专栏wblearn

package.json文件快速入门详解

相信入门nodejs或者npm的同学会对package.json这个文件有疑惑,对这个文件的作用不是很清晰,但搭建自己的博客每每用到node,npm这个文件又必...

16010

扫码关注云+社区

领取腾讯云代金券