基于CentOS6.5的drbd的安装与配置

一、drbd概述

Distributed Replicated Block Device(DRBD)是一种基于软件的,无共享,复制的存储解决方案,在服务器之间的对块设备(硬盘,分区,逻辑卷等)进行镜像。

DRBD工作在内核当中的,类似于一种驱动模块。DRBD工作的位置在文件系统的buffer cache和磁盘调度器之间,通过tcp/ip发给另外一台主机到对方的tcp/ip最终发送给对方的drbd,再由对方的drbd存储在本地对应磁盘 上,类似于一个网络RAID-1功能。

在高可用(HA)中使用DRBD功能,可以代替使用一个共享盘阵。本地(主节点)与远程主机(备节点)的数据可以保 证实时同步。当本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用。

DRBD的架构如下图

底层设备支持
    DRBD需要构建在底层设备之上,然后构建出一个块设备出来。对于用户来说,一个DRBD设备,就像是一块物理的磁盘,可以在上面内创建文件系统。DRBD所支持的底层设备有以下这些类:
1、一个磁盘,或者是磁盘的某一个分区;
2、一个soft raid 设备;
3、一个LVM的逻辑卷;
4、一个EVMS(Enterprise Volume Management System,企业卷管理系统)的卷;
5、其他任何的块设备。

DRBD复制模式

协议A:

异步复制协议。一旦本地磁盘写入已经完成,数据包已在发送队列中,则写被认为是完成的。在一个节点发生故障时,可能发生数据丢失,因为被写入到远程节点上的数据可能仍在发送队列。尽管,在故障转移节点上的数据是一致的,但没有及时更新。这通常是用于地理上分开的节点。

协议B:

内存同步(半同步)复制协议。一旦本地磁盘写入已完成且复制数据包达到了对等节点则认为写在主节点上被认为是完成的。数据丢失可能发生在参加的两个节点同时故障的情况下,因为在传输中的数据可能不会被提交到磁盘。

协议C

同步复制协议。只有在本地和远程节点的磁盘已经确认了写操作完成,写才被认为完成。没有任何数据丢失,所以这是一个群集节点的流行模式,但I / O吞吐量依赖于网络带宽。

一般使用协议C,但选择C协议将影响流量,从而影响网络时延。为了数据可靠性,我们在生产环境使用时须慎重选项使用哪一种协议。

二、drbd的安装

1、准备工作

1)本配置共有两个测试节点,分别node1.comratings.com和node2.comratings.com,相的IP地址分别为10.0.0.16和10.0.0.17,且解析写到对应的/etc/hosts下面;

2)node1和node2两个节点上各提供了一个大小相同的分区作为drbd设备;我们这里为在两个节点上均为/dev/sda5,大小为512M;

3)系统为CentOS 6.5,x86_64平台。

2、软件包介绍

drbd共有两部分组成:内核模块和用户空间的管理工具。其中drbd内核模块代码已经整合进Linux内核2.6.33以后的版本中,因此,如果您的内核版本高于此版本的话,你只需要安装管理工具即可;否则,您需要同时安装内核模块和管理工具两个软件包,并且此两者的版本号一定要保持对应。

目前适用CentOS 5的drbd版本主要有8.0、8.2、8.3三个版本,其对应的rpm包的名字分别为drbd, drbd82和drbd83,对应的内核模块的名字分别为kmod-drbd, kmod-drbd82和kmod-drbd83。而适用于CentOS 6的版本为8.4,其对应的rpm包为drbd和drbd-kmdl,但在实际选用时,要切记两点:drbd和drbd-kmdl的版本要对应;另一个是drbd-kmdl的版本要与当前系统的内容版本相对应。各版本的功能和配置等略有差异;我们实验所用的平台为x86_64且系统为CentOS 6.4,因此需要同时安装内核模块和管理工具。我们这里选用最新的8.4的版本(drbd-8.4.3-33.el6.x86_64.rpm和drbd-kmdl-2.6.32-431.el6-8.4.3-33.el6.x86_64.rpm),下载地址为ftp://rpmfind.net/linux/atrpms/,请按照需要下载。

实际使用中,您需要根据自己的系统平台等下载符合您需要的软件包版本,这里不提供各版本的下载地址。

3、软件包安装

下载完成后直接安装即可:

# rpm -ivh drbd-8.4.3-33.el6.x86_64.rpm drbd-kmdl-2.6.32-431.el6-8.4.3-33.el6.x86_64.rpm


三、配置drbd

1、配置文件介绍

drbd的主配置文件为/etc/drbd.conf;为了管理的便捷性,目前通常会将些配置文件分成多个部分,且都保存至/etc/drbd.d目录中,主配置文件中仅使用"include"指令将这些配置文件片断整合起来。通常,/etc/drbd.d目录中的配置文件为global_common.conf和所有以.res结尾的文件。其中global_common.conf中主要定义global段和common段,而每一个.res的文件用于定义一个资源。

在配置文件中,global段仅能出现一次,且如果所有的配置信息都保存至同一个配置文件中而不分开为多个文件的话,global段必须位于配置文件的最开始处。目前global段中可以定义的参数仅有minor-count, dialog-refresh, disable-ip-verification和usage-count。

common段则用于定义被每一个资源默认继承的参数,可以在资源定义中使用的参数都可以在common段中定义。实际应用中,common段并非必须,但建议将多个资源共享的参数定义为common段中的参数以降低配置文件的复杂度。

resource段则用于定义drbd资源,每个资源通常定义在一个单独的位于/etc/drbd.d目录中的以.res结尾的文件中。资源在定义时必须为其命名,名字可以由非空白的ASCII字符组成。每一个资源段的定义中至少要包含两个host子段,以定义此资源关联至的节点,其它参数均可以从common段或drbd的默认中进行继承而无须定义。

以下是我的配置事例:

#cat /etc/drbd.d/global-common.conf

global {
        usage-count no;
        # 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 120;
                #degr-wfc-timeout 120;
        }
        disk {
                on-io-error detach;
                #fencing resource-only;
        }
        net {
                cram-hmac-alg "sha1";
                shared-secret "mydrbd";
        }
        syncer {
                rate 1000M;
        }
}

2、定义一个资源/etc/drbd.d/web.res,内容如下:

resource web {
  on node1.comratings.com {
    device    /dev/drbd0;
    disk      /dev/sda5;
    address   10.0.0.16:7789;
    meta-disk internal;
  }
  on node2.comratings.com {
    device    /dev/drbd0;
    disk      /dev/sda5;
    address   10.0.0.17:7789;
    meta-disk internal;
  }
}

注:以上配置在两个节点上必须相同

四、drbd启动和查看

1、初始化资源

在Node1和Node2上分别执行:

# drbdadm create-md web

2、启动服务

在Node1和Node2上分别执行:

# service drbd start

3、查看启动状态

# cat /proc/drbd

version: 8.3.8 (api:88/proto:86-94)

GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by [email protected], 2010-06-04 08:04:16

0: cs:Connected ro: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 ep:1 wo:b oos:505964

也可以使用drbd-overview命令来查看:

# drbd-overview

0:web  Connected Secondary/Secondary Inconsistent/Inconsistent C r----

从上面的信息中可以看出此时两个节点均处于Secondary状态。于是,我们接下来需要将其中一个节点设置为Primary。在要设置为Primary的节点上执行如下命令:

# drbdadm primary --force resource

注: 也可以在要设置为Primary的节点上使用如下命令来设置主节点:

# drbdadm -- --overwrite-data-of-peer primary web

而后再次查看状态,可以发现数据同步过程已经开始:

# drbd-overview

0:web  SyncSource Primary/Secondary UpToDate/Inconsistent C r----

[============>.......] sync‘ed: 66.2% (172140/505964)K delay_probe: 35

等数据同步完成以后再次查看状态,可以发现节点已经牌实时状态,且节点已经有了主次:

# drbd-overview

0:web  Connected Primary/Secondary UpToDate/UpToDate C r----

4、创建文件系统

文件系统的挂载只能在Primary节点进行,因此,也只有在设置了主节点后才能对drbd设备进行格式化:

# mke2fs -j -L DRBD /dev/drbd0

# mkdir /mnt/drbd

# mount /dev/drbd0 /mnt/drbd

5、切换Primary和Secondary节点

对主Primary/Secondary模型的drbd服务来讲,在某个时刻只能有一个节点为Primary,因此,要切换两个节点的角色,只能在先将原有的Primary节点设置为Secondary后,才能原来的Secondary节点设置为Primary:

Node1:

# cp -r /etc/drbd.* /mnt/drbd

# umount /mnt/drbd

# drbdadm secondary web

查看状态:

# drbd-overview

0:web  Connected Secondary/Secondary UpToDate/UpToDate C r----

Node2:

# drbdadm primary web

# drbd-overview

0:web  Connected Primary/Secondary UpToDate/UpToDate C r----

# mkdir /mnt/drbd

# mount /dev/drbd0 /mnt/drbd

使用下面的命令查看在此前在主节点上复制至此设备的文件是否存在:

# ls /mnt/drbd

时间: 2024-11-03 21:37:34

基于CentOS6.5的drbd的安装与配置的相关文章

centos6.8下redis的安装和配置

centos6.8下redis的安装和配置 下载.安装 在redis官网可以获取到最新版本的redis 进入/usr/local/目录,执行如下命令 wget http://download.redis.io/releases/redis-4.0.2.tar.gztar xzf redis-4.0.2.tar.gzcd redis-4.0.2make 执行make构建redis时报如下错误,这是因为没有安装gcc,执行如下命令即可解决 错误: make[3]: gcc:命令未找到解决: yum

DRBD的安装与配置

DRBD安装与配置 1.什么是DRBD?DRBD是由内核模块和相关脚本构成,用以构建高可用性的集群.其实现方式是通过网络来镜像整个设备.它允许用户在远程机器上建立一个本地块设备的实时镜像.也可以把它看成一个网络RAID1. 工作原理:DRBD负责接收数据,把数据写到本地磁盘,然后发送给另一个主机.另一个主机再将数据存到自己的磁盘中.目前,DRBD每次只允许对一个节点进行读写访问,这对于通常的故障切换高可用性集群已经够了. DRBD协议:A:数据一旦写入磁盘并发送到网络中就认为完成了写入操作B:收

EFK教程 - 基于多节点ES的EFK安装部署配置

通过部署elasticsearch(三节点)+filebeat+kibana快速入门EFK,并搭建起可用的demo环境测试效果 作者:"发颠的小狼",欢迎转载与投稿 目录 ? 用途? 实验架构? EFK软件安装? elasticsearch配置? filebeat配置? kibana配置? 启动服务? kibana界面配置? 测试? 后续文章 用途 ? 通过filebeat实时收集nginx访问日志.传输至elasticsearch集群? filebeat将收集的日志传输至elasti

基于CentOS6.7的DRBD安装配置过程详解

一.DRBD简介 DRBD的全称为:Distributed ReplicatedBlock Device(DRBD)分布式块设备复制,DRBD是由内核模块和相关脚本而构成,用以构建高可用性的集群.其实现方式是通过网络来镜像整个设备.你可以把它看作是一种网络RAID.它允许用户在远程机器上建立一个本地块设备的实时镜像. 二.DRBD是如何工作的呢? (DRBD Primary)负责接收数据,把数据写到本地磁盘并发送给另一台主机(DRBD Secondary).另一个主机再将数据存到自己的磁盘中.目

基于centos6.5 hadoop 伪分布式安装

步骤1:修改IP 地址和主机名: vi /etc/sysconfig/network-scripts/ifcfg-eth0 如果该文件打开为空白文件代表你计算机上的网卡文件不是这个名称"ifcfg-eth0" ,可以 cd /etc/sysconfig/network-scripts/ 这个目录查看以ifcfg-***开头的文件,就是你的网卡文件.再进行编辑 vi /etc/sysconfig/network-scripts/ifcfg-*** 主要修改项为: BOOTPROTO=&q

drbd简单安装与配置

系统版本:centos6.4最小化 node1:192.168.31.111 node2:192.168.31.112 编译环境:yum -y groupinstall "Development tools" "Server Platform Development" drbd版本:drbd-8.4.7-1.tar.gz.drbd-utils-8.9.5.tar.gz 前提条件: 1.节点node1.node2基于ssh互信 2.节点之间时间同步 3.节点名称与ho

CentOS6.5+puppet3.7.3 安装、配置及测试(一)

1 /* ---示例代码----*/     2    3 OS:CentOS-6.5-x86_64     4    5 Puppet 3.7.3     6    7 Puppet master: master.fisteam2.com     8    9 Puppet clients:node1-5.fisteam2.com     10    11 /* ---示例代码----*/     12 Puppet 要求所有机器有完整的域名(FQDN),如果没有 DNS 服务器提供域名的话,

CentOS6 下Samba服务器的安装与配置

原地址:http://www.cnblogs.com/mchina/archive/2012/12/18/2816717.html 一.简介 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件.后来微软又把 SMB 改名为 CIFS(Common Interne

CentOS6.5+puppet3.7.3 安装、配置及测试(二)

在clients上安装puppet客户端 1 /* ---示例代码----*/     2    3    4 [root@node1 ~]# yum install puppet    5    6 ==========================省略线===============================================    7    8 Dependencies Resolved    9    10    11 =======================