|
  
|
1#
发表于 2009-4-18 22:06
| 只看该作者
DRBD + Keepalived + iSCSI target を VMware ESXi から使うメモ
単なるメモです。
* ホストを 2台用意して DRBD でミラーリング
* iSCSI Enterprise Target で iSCSI target にする
* Keepalived VRRP で VIP を振って Master/Backup 構成で failover 可能に
* VMware ESXi からその iSCSI target 上に仮想マシンを構築
* failover しても仮想マシンが止まらない
という構成ができた。OS は CentOS-5.2。
仮想マシンで make などをして、IO がガリガリ起きている状態で failover (マスターになっているマシンの電源断とか) しても、仮想マシン側では IO が数秒待たされるだけで特にエラーなどは起きず。結構気持ちいいなこれ。
ただし、DRBD のプロトコルが A or C だと大丈夫だが、B だと仮想マシン側で IO error が大量発生。A だと信頼性が不安だし、C だと速度でなさそうだし、というのがちょっと悩みどころかも。
# DRBD のホスト自体を仮想マシンで構築したので、速度は計測していない。
以下インストールと設定のメモ。
ちなみに DRBD + Keepalived の部分はおなじみの
[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)
[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)
* 作者: 安井真伸, 横川和哉, ひろせまさあき, 伊藤直也, 田中慎司, 勝見祐己
* 出版社/メーカー: 技術評論社
* 発売日: 2008/08/07
* メディア: 単行本(ソフトカバー)
ほとんどそのままです。 * VIP: 192.168.0.40
* drbd1: 192.168.0.41
* drbd2: 192.168.0.42 - # yum install drbd82 kmod-drbd82
- # tar zxvf keepalived-1.1.15.tar.gz
- # cd keepalived-1.1.15
- # ./configure
- # make
- # make rpm # rpm ができる
- # rpm -Uvh keepalived-1.1.15-5.i386.rpm
- # rpm -Uvh daemontools-toaster-0.76-1.3.3.i386.rpm
复制代码 /etc/drbd.conf- common { syncer { rate 100M; } }
- resource r1 {
- protocol C;
- on drbd1 {
- device /dev/drbd1;
- disk /dev/sdc;
- address 192.168.0.41:7790;
- meta-disk internal;
- }
- on drbd2 {
- device /dev/drbd1;
- disk /dev/sdc;
- address 192.168.0.42:7790;
- meta-disk internal;
- }
- }
复制代码- # modprobe drbd
- # drbdadm create-md all # メタディスク作成 (両方で)
- # drbdadm up all # 起動 (両方で)
- # drbdadm -- --overwrite-data-of-peer primary all # 最初に primary -> secondary の同期を取る (ホストdrbd1のみ)
- # cat /proc/drbd # 状態を見る
复制代码 iSCSI Enterprise Target のインストール。# yum install kernel-devel
# tar zxvf iscsitarget-0.4.16.tar.gz
# cd iscsitarget-0.4.16
# make
# make install /etc/ietd.conf
Target iqn.2008-10.com.topicmaker.internal.drbdtest
Lun 1 Path=/dev/drbd1,Type=fileio
Alias drbd-test
Keepalived VRRP の設定。
/etc/keepalived/keepalived.conf- vrrp_instance DRDB {
- state BACKUP
- interface eth0
- garp_master_delay 5
- virtual_router_id 200
- priority 100
- nopreempt
- advert_int 1
- authentication {
- auth_type PASS
- auth_pass XXXX
- }
- virtual_ipaddress {
- 192.168.0.40/24 dev eth0
- }
- notify_master "/usr/local/sbin/drbd-master"
- notify_backup "/usr/local/sbin/drbd-backup"
- notify_fault "/usr/local/sbin/drbd-backup"
- }
复制代码 マスターになったときに行う処理 /usr/local/sbin/drbd-master#!/bin/sh
drbdadm primary all
service iscsi-target start バックアップになったときに行う処理 /usr/local/sbin/drbd-backup- #!/bin/sh
- service iscsi-target stop
- drbdadm secondary all
复制代码 daemontools から keepalived を起動するためのスクリプト /etc/daemon/keepalived/run- #!/bin/sh
- [ -f /var/run/vrrp.pid ] && exit
- exec 2>&1
- trap 'kill -TERM $PID' TERM
- trap 'kill -HUP $PID' HUP
- trap 'kill -INT $PID' INT
- keepalived -n -S 1 --vrrp &
- PID=$!
- wait $PID
- /usr/local/sbin/drbd-backup
复制代码 /etc/inittab に以下を追加
# daemontools- SV:123456:respawn:/usr/bin/svscanboot
复制代码 http://d.hatena.ne.jp/sfujiwara/20081014/1223980412 |
|