KVM でライブマイグレーション可能なクラスタ環境の設定手順めも。

手順

ホストAとホストBのふたつのサーバでクラスタ化する。サーバはLANポートが2つあるものを利用。そのうち1ポートはクロスケーブルで相互接続して DRBD 専用にする。
Debian sid をいれる。
DRBD8 をいれる。
OCFS2 をいれる。
keepalived をいれる。
KVM をいれる。
ゲスト OS をいれる。

Debian のインストール

Debian GNU/Linux 5.0 では kvm 関連のパッケージのバージョンが古いのでうまくいきませんでした。
なので sid にしてます。CentOS 5.4 が出ればそれがいいかもです。64 bit 版を入れます。
パーティション
DRBD meta-disk 領域はパーティション1つだけなら 128MB あればいいです。
パーティションパーティションタイプ容量ファイルシステムマウントポイント
/dev/sda1基本10GBext3/
/dev/sda2基本2GBswapswap
/dev/sda3基本1GB無し(後で DRBD meta-disk にする)無し
/dev/sda5拡張130GB無し(後で ocfs2 にする)無し(後で /mnt/ocfs2/ にする)
ネットワーク環境
インターフェースネットワークデフォルトゲートウェイDNS サーバドメイン
eth0192.168.0.0/24192.168.0.1192.168.0.1example.net
eth110.0.0.0/24なしなしなし
ホスト名IPアドレス(eth0)IPアドレス(eth1:DRBD用)
sv10.example.net192.168.0.1010.0.0.10
sv11.example.net192.168.0.1110.0.0.11
/etc/network/interfaces

kvm ゲストとの接続の関係でブリッジ設定する必要があるようです。現状手動かな。

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
        address 192.168.0.10
        network 192.168.0.0
        netmask 255.255.255.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        bridge_ports eth0
        bridge_fd 9
        bridge_hello 2
        bridge_maxage 12
        bridge_stp off
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 192.168.0.1
        dns-search example.net

auto eth1
iface eth1 inet static
        address 10.0.0.10
        netmask 255.255.255.0
        network 10.0.0.0
        broadcast 10.0.0.255
A と B 両ホストで IP アドレスだけ変更して他は同様に設定。

DRBD8 をいれる

aptitude install drbd8-utils drbd8-modules-2.6-amd64
/etc/drbd.conf
デフォルトから書き換える所 net の以下の行のコメントを外す
   cram-hmac-alg sha1;
   shared-secret "FooFunFactory";
   allow-two-primaries;
書き換える
    rate 100M;
コメントアウトする
    # after "r2";
書き換える
  on sv10 {
    device     /dev/drbd0;
    disk       /dev/sda5;
    address    10.0.0.10:7788;
    meta-disk /dev/sda3[0];
  }
  on sv11 {
    device     /dev/drbd0;
    disk       /dev/sda5;
    address    10.0.0.11:7788;
    meta-disk /dev/sda3[0];
  }
消す
  r1 〜 r3 の設定は消す
複数の DRBD ディスクを作成する場合(r1 とか)は、meta-disk が /dev/sda3[1] とかになる。一つの meta-disk で 128MB の容量が必要。
ユーザ設定
パッケージをアップデートした後などもこのコマンドが必要になる場合があります。
addgroup haclient
chgrp haclient /sbin/drbdsetup
chmod o-x /sbin/drbdsetup
chmod u+s /sbin/drbdsetup
chgrp haclient /sbin/drbdmeta
chmod o-x /sbin/drbdmeta
chmod u+s /sbin/drbdmeta
DRBD 初期化
modprobe drbd
drbdadm create-md r0
ここで
If you want me to do this, you need to zero out the first part of the device (destroy the content).
とか言われた場合。
dd if=/dev/zero of=/dev/sda3 bs=1M count=128
としてから、create-md をやりなおし。
drbdadm adjust r0
DRBD 起動
/etc/init.d/drbd start
相方を待ち続けるので、強制起動する場合は yes と入力するか、120秒待つ。
動作状態を確認
cat /proc/drbd
で表示が
Secondary/Unknown
で正常。
両系を起動させた場合は
Secondary/Secondary
になります。
DRBD プライマリ指定
drbdsetup /dev/drbd0 primary -o
動作状態を確認
cat /proc/drbd
で表示が
Primary/Unknown
で正常。
両系で実行した場合は
Primary/Primary
になります。

init.d

デフォルトの順番がよろしくないので変更します。KVM の仮想マシンのファイルは DRBD 上に作成されるので、KVM が落ちる前に DRBD が落ちてるとまずいです。
cd /etc/rc0.d
mv K08drbd K21drbd
cd ../rc6.d
mv K08drbd K21drbd
cd ../rc2.d
ln -s ../init.d/drbd S19drbd
/etc/rc.local
exit 0 の前に追加
drbdsetup /dev/drbd0 primary -o
テスト
reboot してみる
shutdown -r now

OCFS2(Oracle Cluster File System 2)

インストール
aptitude install ocfs2-tools ocfs2-tools-dev
設定
mkdir -p /etc/ocfs2
vi /etc/ocfs2/cluster.conf
node:
        ip_port = 7777
        ip_address = 10.0.0.10
        number = 0
        name = sv10
        cluster = ocfs2
node:
        ip_port = 7777
        ip_address = 10.0.0.11
        number = 1
        name = sv11
        cluster = ocfs2
cluster:
        node_count = 2
        name = ocfs2
初期化
/etc/init.d/o2cb load
modprobe ocfs2_stackglue
/etc/init.d/o2cb online ocfs2
フォーマットする
上書きすんぞ、と聞いてくるので y
mkfs.ocfs2 -b 4k -C 32k -N 4 -L data /dev/drbd0
マウント
mkdir /mnt/ocfs2
mount -t ocfs2 /dev/drbd0 /mnt/ocfs2
自動起動設定
公式の仕組みがあればそちらを使うのが良いです。とりあえずみつからなかったので作りました。
起動用バッチ
vi /usr/local/bin/ocfs2_start
内容
#!/bin/bash
/etc/init.d/o2cb load
modprobe ocfs2_stackglue
/etc/init.d/o2cb online ocfs2
mount -t ocfs2 /dev/drbd0 /mnt/ocfs2
属性変更
chmod 700 /usr/local/bin/ocfs2_start
/etc/rc.local
rc.local はいかがなものかという気もしますが、、、順番的には DRBD 起動後に ocfs2。
ファイルの終わりのあたりの抜粋。
drbdsetup /dev/drbd0 primary -o
/usr/local/bin/ocfs2_start

exit 0
reboot してみる
reboot
再起動後に ocfs2 のマウントまで正常に終わってるか確認
df

Keepalived

障害検出どうしよう?とか、切り替えのスクリプトはどんなのがいいかな?とか迷い中なので省略

KVM

kvm libvirt-bin virtinst python-migrate virt-manager
あたりを入れてあとは virt-manager で。

ゲストOS

virt-manager で。

このページへのコメント

KVM_server_setup - 鐃術ワ申鐃緒申鐃緒申筌居申鐃緒申个鐃緒申鐃緒申鐃淑どのワ申鐃 - Seesaa Wiki鐃淑ワ申鐃緒申鐃緒申鐃緒申 for 鐃緒申鐃殉¥申鐃夙フワ申鐃緒申 ≪潟若 http://www.pslcbi.com/moncler2014.html

0
Posted by ≪潟若  2013年12月07日(土) 16:44:34 返信

腦区┴障紊援ぜ障違違с綵綽障! 若 ≪ http://www.fetang.com/

0
Posted by 若 ≪ 2013年07月31日(水) 06:11:56 返信

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

編集にはIDが必要です