zoukankan      html  css  js  c++  java
  • DRBD 实现数据备份的高可用性

    以下文章转载自http://goplay.blog.51cto.com/3237944/664560

    实验说明:

    1、通过drbd提供数据的冗余备份功能

    2、通过两台虚拟机模拟测试

    image

    实验配置

    一、配置ip和主机名

    1、配置ip #vim /etc/sysconfig/network-scripts/ifcfg-eth0

    image

    重启网络配置 #service network restart

    查看

    image

    2、配置主机名

    #vim /etc/hosts 使用hosts文件做dns地址解析

    image

    #vim /etc/sysconfig/network

    image

    #hostname test1.a.org

    测试配置结果 #uname –n

    image

    test2.a.org 配置相同

    二、ssh 配置(为方便远程管理,以后不用每次都输密码)

    #ssh-keygen –t rsa

    #ssh-copy-id –i ~/.ssh/id_rsa.pub root@test2

    image

    三、分区

    #fdisk /dev/sda

    image

    image

    #partprobe 重读分区表

    四、安装DRBD软件

    目前在用的drbd版本主要有8.0、8.2和8.3三个版本,其对应的rpm包的名字分别为drbd,

    drbd82和drbd83,对应的内核模块的名字分别为kmod-drbd, kmod-drbd82和kmod-drbd83。

    各版本的功能和配置等略有差异;我们实验所用的平台为x86且系统为rhel5.4,因此需要同时安装

    内核模块和管理工具。我们这里选用最新的8.3的版本(drbd83-8.3.8-1.el5.centos.i386.rpm和

    kmod-drbd83-8.3.8-1.el5.centos.i686.rpm),

    下载地址为:http://mirrors.sohu.com/centos/5.6/extras/i386/RPMS/。

    1、下载完成后直接安装即可:
    # yum -y --nogpgcheck localinstall drbd83-8.3.8-1.el5.centos.i386.rpm

    kmod-drbd83-8.3.8-1.el5.centos.i686.rpm

    2、配置

    drbd的主配置文件为/etc/drbd.conf;为了管理的便捷性,目前通常会将些配置文件分成多个部分,

    且都保存至/etc/drbd.d目录中,主配置文件中仅使用"include"指令将这些配置文件片断整合起来。

    通常,/etc/drbd.d目录中的配置文件为global_common.conf和所有以.res结尾的文件。

    其中global_common.conf中主要定义global段和common段,而每一个.res的文件用于定义一个资源。

    1)复制样例配置文件为即将使用的配置文件:
    # cp /usr/share/doc/drbd83-8.3.8/drbd.conf /etc

    2)配置/etc/drbd.d/global-common.conf (记得备份配置文件)
    global {
    usage-count no;
    # minor-count dialog-refresh disable-ip-verification
    }

    common {
    protocol C;

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

    disk {
    on-io-error detach;
    fencing resource-only;
    }

    net {
    cram-hmac-alg "sha1";
    shared-secret "mydrbdlab";
    }

    syncer {
    rate 200M;
    }
    }

    3、定义资源/etc/drbd.d/webserver.res,内容如下:

    resource webserver {
    on test1.a.org {
    device /dev/drbd0;
    disk /dev/sda6;
    address 10.0.0.143:7789;
    meta-disk internal;
    }
    on test2.a.org {
    device /dev/drbd0;
    disk /dev/sda6;
    address 10.0.0.144:7789;
    meta-disk internal;
    }
    }

    4、在两个节点上初始化已定义的资源并启动服务

    1)scp配置文件到另一个节点上

    image

    2)初始化资源,在test1和test2上分别执行:
    # drbdadm create-md webserver

    image

    3)启动服务,在test1和test2上分别执行:
    /etc/init.d/drbd start

    4)查看启动状态
    # cat /proc/drbd

    test1 #此时都是Secondary/Secondary

    image

    test2

    image

    从上面的信息中可以看出此时两个节点均处于Secondary状态。于是,我们接下来需要将

    其中一个节点设置为Primary。在要设置为Primary的节点上执行如下命令:

    # drbdsetup /dev/drbd0 primary –o (只有在第一次时这样使用)

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

    image

    test1 的状态已经变成Primary/Secondary

    0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----

    5、格式化、并挂载使用/dev/drbd0

    #mke2fs –j -L drbd /dev/drbd0

    #mkdir /drbd

    #mount /dev/drbd0 /drbd

    查看#mount

    image

    #cd /drbd

    #touch test.txt (测试使用)

    #echo "test for drbd" > test.txt

    6、主从交换,查看里边的内容

    test1

    #umount /drbd (要先卸载)

    #drbdadm secondary webserver

    查看状态

    image

    test2

    #drbdadm primary webserver

    #cat /proc/drbd

    image

    #mkdir /drbd

    #mount /dev/drbd0 /drbd

    #cd /drdb

    #ls

    结果

    image

    umount 的时候报错:device is busy

    http://liuyu.blog.51cto.com/183345/64044

  • 相关阅读:
    【C++】资源管理
    【Shell脚本】逐行处理文本文件
    【算法题】rand5()产生rand7()
    【Shell脚本】字符串处理
    Apple iOS产品硬件参数. 不及格的程序员
    与iPhone的差距! 不及格的程序员
    iPhone游戏 Mr.Karoshi"过劳死"通关. 不及格的程序员
    XCode V4 发布了, 苹果的却是个变态. 不及格的程序员
    何时readonly 字段不是 readonly 的?结果出呼你想象!!! 不及格的程序员
    object file format unrecognized, invalid, or unsuitable Command 不及格的程序员
  • 原文地址:https://www.cnblogs.com/google4y/p/2202326.html
Copyright © 2011-2022 走看看