Program LOG

勉強した内容をまとめ中。。。間違ってたら教えて。。。

VurtualBoxでDRBDを構築検証! - 検証環境構築編

インフラをやっていると、サーバーの冗長化を行う事が多々ありますよね?
イメージサーバーやDBサーバーの冗長化を行う際に、
データの同期方法で悩みまして、DRDBなるものがある事を知りました!
今回は、概要把握と簡単なセットアップをvirtualboxに仮想サーバーを2つ作成し、
それぞれに同じ環境のcentosをインストールして検証を開始したいと思います。

DRBDとは?

DRBD (Distributed Replicated Block Device) は、Linuxプラットフォームの分散ストレージシステムである。
カーネルモジュール、管理アプリケーション、シェルスクリプトで構成され、高可用 (HA) クラスタで使うのが一般的である。 DRBD は RAID 1 に似ているが、ネットワーク上で動作する点が異なる。

んー。。よく分からないw
ミラーリングツール「DRBD」によるデータ保護って記事がありましたので、こっちを確認するといいかもしれません!
Heartbeatでかんたんクラスタリング(4):ミラーリングツール「DRBD」によるデータ保護 (1/3) - @IT

仮想マシンを2つ用意する。

VirturlBoxに検証用マシンを2台用意します。
環境は以下の通りです。

- drdb01
 -- 名前:drdb01
 -- タイプ:Linux
 -- バージョン:Redhat(64bit)
 -- メモリ:1024MB
 -- 仮想ハードドライブを作成する。
 -- VDI(可変サイズ/30GB)
 
- drdb02
 -- 名前:drdb02
 -- タイプ:Linux
 -- バージョン:Redhat(64bit)
 -- メモリ:1024MB
 -- 仮想ハードドライブを作成する。
 -- VDI(可変サイズ/30GB)

作成が完了したら、次はCentOSをインストールします。
今回は、CentOS 64bitのDVDでインストールします。
http://ftp.riken.jp/Linux/centos/6.5/isos/x86_64/CentOS-6.5-x86_64-bin-DVD1.iso
[設定] → [ストレージ] → [CDマーク] → [仮想ドライブを選択]の順でクリックしていき、
ダウンロードしたDVDファイルを選択しましょう!
その後起動すると、自動的にインストール画面が表示されるはずです。

次に、インストールですが、以下のように設定しました。
基本的には、かなり前に最小構成でインストールしたのと
ほとんど変わりません。
ですが、パーティションの設定部分が若干違うので、そこについて記載しておきたいと思います。

# drdb01
・ホスト名:drdb01.jp
・カスタムレイアウトを使用する。
 ・/boot:ext4:200:固定容量:基本パーティションにする
 ・:swap:2048:固定容量:基本パーティションにする
 ・/drdb:ext4:10000:固定容量:基本パーティションにする
 ・/:ext4:200:最大許容量まで使用:基本パーティションにする
# drdb01
・ホスト名:drdb02.jp
・カスタムレイアウトを使用する。
 ・/boot:ext4:200:固定容量:基本パーティションにする
 ・:swap:2048:固定容量:基本パーティションにする
 ・:ext4:10000:固定容量:基本パーティションにする
 ・/:ext4:200:最大許容量まで使用:基本パーティションにする

ネットワークの設定

ネットワークの設定をしておきたいと思います。
以前も設定内容を記載したことがあるので、今回は、コマンドと修正内容のみとします。
基本的には、2台とも同じ設定を行いますが、
DRBD01「IPADDR=192.168.33.17」でDRBD02「IPADDR=192.168.33.18」としました!

[root@drdb01] vi /etc/resolv.conf
options single-request-reopen
nameserver 10.0.2.3
nameserver 8.8.8.8

[root@drdb01] vi /etc/networks
default 0.0.0.0
loopback 127.0.0.0
link-local 169.254.0.0

[root@drdb01] vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=drdb01.jp

[root@drdb01] vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="dhcp"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="56f45b3e-1d42-4cf8-a78e-4a041835f3a1"

[root@drdb01] vi /etc/sysconfig/network-scripts/ifcfg-eth1
NM_CONTROLLED=no
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.33.17
NETMASK=255.255.255.0
DEVICE=eth1
PEERDNS=no

[root@drdb01] vi /etc/sysconfig/network-scripts/ifcfg-lo
DEVICE=lo
IPADDR=127.0.0.1
NETMASK=255.0.0.0
NETWORK=127.0.0.0
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback

[root@drdb01] getenforce
[root@drdb01] setenforce 0
[root@drdb01] vi /etc/sysconfig/selinux
SELINUX=disabled

[root@drdb01] service iptables stop
[root@drdb01] chkconfig iptables off

[root@drdb01] /etc/init.d/network restart

[root@drdb01] yum update

それでは、疎通確認をしておきたいと思います!

[root@drdb01] ssh 192.168.33.18
root@192.168.33.18 password:
[root@drdb02]  

ゲスト間でも疎通が出来ている事を確認しました!
やっと環境が用意できたので、DEDBの検証に入っていこうと思います。
作るのも結構めんどいので、スナップショットを忘れずに!w

DRBDをインストールする

さて、環境構築が完了したので、DRBDをインストールしていきたいと思います。
DRBDは標準パッケージではインストールできない為、「elrepo」レポジトリを入れてから行います。
以下の処理は2台のマシンとも行います。

[root@drdb01 ~]# rpm -Uvh http://elrepo.org/linux/elrepo/el6/x86_64/RPMS/elrepo-release-6-5.el6.elrepo.noarch.rpm
[root@drdb01 ~]# vi /etc/yum.repos.d/elrepo.repo
vi 8)enabled=0
[root@drdb01 ~]# yum --enablerepo=elrepo install drbd84-utils.x86_64
[root@drdb01 ~]# yum --enablerepo=elrepo install kmod-drbd84

インストールは以上で完了となります。

DRBDの設定を行う。

インストールが完了したので、設定を行います。

[root@drdb01 ~]# cp -apr /etc/drbd.conf /etc/drbd.conf.org
[root@drdb01 ~]# vi /etc/drbd.conf

# You can find an example in  /usr/share/doc/drbd.../drbd.conf.example

#include "drbd.d/global_common.conf";
#include "drbd.d/*.res";

global {
        usage-count no;
}

common {
        syncer { rate 200M; }
}

resource db {
        protocol C;
        startup {
                wfc-timeout 120;
                degr-wfc-timeout 120;
        }
        net {
                cram-hmac-alg "sha1";
                shared-secret "password";
                after-sb-0pri disconnect;
                after-sb-1pri disconnect;
                after-sb-2pri disconnect;
        }
        disk {
                on-io-error pass_on;
        }
        on drdb01.jp {                  # uname -n
                device /dev/drbd0;
                disk /dev/sda2;
                address 192.168.33.17:7788;
                meta-disk internal;
        }
        on drdb02.jp {                  # uname -n
                device /dev/drbd0;
                disk /dev/sda2;
                address 192.168.33.18:7788;
                meta-disk internal;
        }
}

次は、DRBDのメタファイルを作成するというところなんですが、
ちょっと検証までの道のりが長くなってきてしまうので、
急遽2回に分けて書いていこうと思います。

使用環境