HAクラスタシステム構築(Heartbeat+DRBD+Apache+Tomcat)

最終更新日: 2017.05.24

<<トップページ <<新着情報 <<逆引き集 <<リンク集 <<サイト内検索 <<メルマガ <<Scientific Linuxで自宅サーバー構築 <<Fedoraで自宅サーバー構築

■概要

Heartbeat+DRBDでアクティブ・スタンバイ型のHA(High Availability:高可用性)クラスタシステムを構築する。
ここでは、2台のサーバーでクラスタシステムを構築し、アクティブ側サーバーダウン時に自動でスタンバイ側サーバーにサービスを切り替え(フェイルオーバー)、スタンバイ側でサービスを継続できるようにする。対象サービスはDRBDとApacheとTomcatとする。

HeartbeatTomcatインストール済であることが前提


■DRBD設定

※DRBDインストール〜起動はHAクラスタシステム構築(Heartbeat+DRBD+Apache)を参照
[root@cl1 ~]# vi /etc/drbd.conf ← DRBD設定ファイル編集
※ノード1、ノード2で同じ内容とすること
resource drbd1 { ← DRBDリソース名※既存のDRBDリソース名と重複しないこと
    device /dev/drbd1; ← DRBDデバイス名※既存のDRBDデバイス名と重複しないこと
    meta-disk internal;
    on cl1.centossrv.com { ← ノード1ホスト名(「uname -n」コマンドで表示される名前)
        disk    /dev/VolGroup00/lvol1; ← ノード1論理ボリューム名
        address 192.168.1.100:7790; ← ノード1IPアドレス※ポート番号は既存のDRBDリソースと重複しないこと
    }
    on cl2.centossrv.com { ← ノード2ホスト名(「uname -n」コマンドで表示される名前)
        disk    /dev/VolGroup00/lvol1; ← ノード2論理ボリューム名
        address 192.168.1.200:7790;    } ← ノード2IPアドレス※ポート番号は既存のDRBDリソースと重複しないこと
}   

[root@cl1 ~]# drbdadm create-md drbd1 ← DRBDメタデータ作成
v08 Magic number not found
md_offset 134213632
al_offset 134180864
bm_offset 134176768

Found some data
 ==> This might destroy existing data! <==

Do you want to proceed?
[need to type 'yes' to confirm] yes

v07 Magic number not found
v07 Magic number not found
v08 Magic number not found
Writing meta data...
initialising activity log
NOT initialized bitmap
New drbd meta data block sucessfully created.
success

[root@cl1 ~]# /etc/rc.d/init.d/drbd reload ← DRBD設定反映
Reloading DRBD configuration.
※ノード2側のDRBD設定反映と同時にDRBDディスク初期同期が始まる

DRBD設定をノード2側でも実施する。

■DRBD確認

[root@cl1 ~]# drbdadm primary all ← ノード1側をプライマリ化

[root@cl1 ~]# /etc/rc.d/init.d/drbd status ← ノード1側DRBD状態確認
drbd driver loaded OK; device status:
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-i386-build, 2008-10-03 11:42:32
m:res    cs         st                 ds                 p  mounted   fstype
0:drbd0  Connected  Primary/Secondary  UpToDate/UpToDate  C  /var/www  ext3
1:drbd1  Connected  Primary/Secondary  UpToDate/UpToDate  C ← ノード1側がプライマリ

■Tomcat設定

アプリケーション格納ディレクトリ(/usr/local/tomcat/webapps)をDRBDで共有する。
[root@cl1 ~]# /etc/rc.d/init.d/tomcat stop ← ノード1側Tomcat停止

[root@cl1 ~]# chkconfig tomcat off ← ノード1側Tomcat自動起動解除

[root@cl2 ~]# /etc/rc.d/init.d/tomcat stop ← ノード2側Tomcat停止

[root@cl2 ~]# chkconfig tomcat off ← ノード2側Tomcat自動起動解除

[root@cl1 ~]# mkfs -t ext3 /dev/drbd1 ← ノード1側でDRBDディスクへファイルシステム作成
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
32768 inodes, 131032 blocks
6551 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
16 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729

Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 21 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

[root@cl1 ~]# mount /dev/drbd1 /mnt/ ← ノード1側でDRBDディスクを/mntへマウント

[root@cl1 ~]# rsync -avz -e ssh --delete /usr/local/tomcat/webapps/ /mnt/ ← アプリケーションデータをDRBDディスク(/mnt)へコピー

[root@cl1 ~]# umount /mnt/ ← ノード1側でDRBDディスクマウント解除

■Heartbeat設定

(1)Tomcat用環境変数設定※ノード1、ノード2両方で実施
[root@cl1 ~]# vi /etc/ha.d/shellfuncs ← Heartbeat環境変数設定ファイル編集
: ${HA_SBIN_DIR:=/usr/sbin}
−−追加(ここから)−−
: ${OCF_AGENTS:= /usr/lib/ocf/resource.d}
: ${OCF_ROOT:=/usr/lib/ocf}
: ${OCF_RESKEY_java_home:=/usr}
: ${OCF_RESKEY_catalina_home:=/usr/local/tomcat}
−−追加(ここまで)−−

export HA_DATEFMT HA_RESOURCEDIR HA_DOCDIR
export OCF_AGENTS OCF_ROOT OCF_RESKEY_java_home OCF_RESKEY_catalina_home ← 追加

(2)heartbeat設定※ノード1側のみ作業
[root@cl1 ~]# vi haresources ← haresources新規作成
cl1.centossrv.com \
        IPaddr2::192.168.1.80/24/eth0/192.168.1.255 \
        drbddisk::drbd0 \
        drbddisk::drbd1 \ ← DRBDリソース(drbd1(/dev/drbd1))を起動
        Filesystem::/dev/drbd0::/var/www \
        Filesystem::/dev/drbd1::/usr/local/tomcat/webapps \ ← /dev/drbd1を/usr/local/tomcat/webappsへマウント
        httpd \ ← 最後尾に「 \」追加
        tomcat ← Tomcatを起動

[root@cl1 ~]# /usr/lib/heartbeat/haresources2cib.py --stdout haresources > /tmp/cib.xml ← haresourcesから/tmp/cib.xml作成

[root@cl1 ~]# vi /tmp/cib.xml ← /tmp/cib.xml編集
               <nvpair id="IPaddr2_1_attr_0" name="ip" value="192.168.1.80"/>
               <nvpair id="IPaddr2_1_attr_1" name="nic" value="24"/>
               ↓
               <nvpair id="IPaddr2_1_attr_1" name="nic" value="eth0"/> ← nicのvalueをeth0へ修正※バグ?
               <nvpair id="IPaddr2_1_attr_2" name="cidr_netmask" value="eth0"/>
               ↓
               <nvpair id="IPaddr2_1_attr_2" name="cidr_netmask" value="24"/> ← cidr_netmaskのvalueを24へ修正※バグ?
               <nvpair id="IPaddr2_1_attr_3" name="broadcast" value="192.168.1.255"/>

[root@cl1 ~]# crm_verify -x /tmp/cib.xml ← /tmp/cib.xmlチェック

[root@cl1 ~]# cibadmin -R -o resources -x /tmp/cib.xml ← /tmp/cib.xml反映

[root@cl1 ~]# rm -f haresources ← haresources削除


■Heartbeat+DRBD+Tomcat確認

[root@cl1 ~]# crm_mon ← ノード1側Heartbeat状態確認
Defaulting to one-shot mode
You need to have curses available at compile time to enable console mode


============
Last updated: Mon Mar  2 18:19:07 2009
Current DC: cl1.centossrv.com (b431343b-5a3a-4ab6-9ad1-d1c21584eefd)
2 Nodes configured.
1 Resources configured.
============

Node: cl1.centossrv.com (b431343b-5a3a-4ab6-9ad1-d1c21584eefd): online
Node: cl2.centossrv.com (1e6245d4-01f6-42f0-b2aa-5811a88cc9be): online

Resource Group: group_1
    IPaddr2_1   (heartbeat::ocf:IPaddr2):       Started cl1.centossrv.com
    drbddisk_2  (heartbeat:drbddisk):   Started cl1.centossrv.com
    drbddisk_3  (heartbeat:drbddisk):   Started cl1.centossrv.com
    Filesystem_4        (heartbeat::ocf:Filesystem):    Started cl1.centossrv.com
    Filesystem_5        (heartbeat::ocf:Filesystem):    Started cl1.centossrv.com
    httpd_6     (lsb:httpd):    Started cl1.centossrv.com
    tomcat_7    (heartbeat::ocf:tomcat):        Started cl1.centossrv.com ← ノード1側でTomcatがアクティブ

ブラウザで仮想IPアドレス(例:http://192.168.1.80/tomcat/)へアクセスしてTomcatページが表示されることを確認

ノード1側システム停止

[root@cl2 ~]# crm_mon ← ノード2側Heartbeat状態確認
Defaulting to one-shot mode
You need to have curses available at compile time to enable console mode


============
Last updated: Mon Mar  2 18:23:34 2009
Current DC: cl2.centossrv.com (1e6245d4-01f6-42f0-b2aa-5811a88cc9be)
2 Nodes configured.
1 Resources configured.
============

Node: cl1.centossrv.com (b431343b-5a3a-4ab6-9ad1-d1c21584eefd): OFFLINE
Node: cl2.centossrv.com (1e6245d4-01f6-42f0-b2aa-5811a88cc9be): online

Resource Group: group_1
    IPaddr2_1   (heartbeat::ocf:IPaddr2):       Started cl2.centossrv.com
    drbddisk_2  (heartbeat:drbddisk):   Started cl2.centossrv.com
    drbddisk_3  (heartbeat:drbddisk):   Started cl2.centossrv.com
    Filesystem_4        (heartbeat::ocf:Filesystem):    Started cl2.centossrv.com
    Filesystem_5        (heartbeat::ocf:Filesystem):    Started cl2.centossrv.com
    httpd_6     (lsb:httpd):    Started cl2.centossrv.com
    tomcat_7    (heartbeat::ocf:tomcat):        Started cl2.centossrv.com ← ノード2側でTomcatがアクティブ

ブラウザで仮想IPアドレス(例:http://192.168.1.80/tomcat/)へアクセスしてTomcatページが表示されることを確認

ノード1側システム起動

[root@cl1 ~]# crm_mon ← ノード1側Heartbeat状態確認
Defaulting to one-shot mode
You need to have curses available at compile time to enable console mode


============
Last updated: Mon Mar  2 16:14:30 2009
Current DC: cl2.centossrv.com (1e6245d4-01f6-42f0-b2aa-5811a88cc9be)
2 Nodes configured.
1 Resources configured.
============

Node: cl1.centossrv.com (b431343b-5a3a-4ab6-9ad1-d1c21584eefd): online
Node: cl2.centossrv.com (1e6245d4-01f6-42f0-b2aa-5811a88cc9be): online

Resource Group: group_1
    IPaddr2_1   (heartbeat::ocf:IPaddr2):       Started cl1.centossrv.com
    drbddisk_2  (heartbeat:drbddisk):   Started cl1.centossrv.com
    drbddisk_3  (heartbeat:drbddisk):   Started cl1.centossrv.com
    Filesystem_4        (heartbeat::ocf:Filesystem):    Started cl1.centossrv.com
    Filesystem_5        (heartbeat::ocf:Filesystem):    Started cl1.centossrv.com
    httpd_6     (lsb:httpd):    Started cl1.centossrv.com
    tomcat_7    (heartbeat::ocf:tomcat):        Started cl1.centossrv.com ← ノード1側でTomcatがアクティブ

ブラウザで仮想IPアドレス(例:http://192.168.1.80/tomcat/)へアクセスしてTomcatページが表示されることを確認






▲このページのトップへ戻る

LPIロゴ Copyright© 2005-2017 fallenangels, All rights reserved.
ご自由にリンクしてください(連絡は不要です)
本ページへのご意見・ご要望、誤字・脱字・リンク切れ等のご連絡はこちらからお願いします