SSブログ

Linuxでクラスタ~heartbeatを試す(そして苦しむ)~その3 [Linux(CentOS/VineLinux)]

 はい。heartbeatが一応起動したってことで、まずはギッタンバッコンする前に、現状の確認から。
[root@nfs001 ~]# crm_mon
Defaulting to one-shot mode
You need to have curses available at compile time to enable console mode


============
Last updated: Mon Feb 28 17:24:40 2011
Current DC: nfs002.mycompany.com (6a838508-****-****-****-72e755b88326)
2 Nodes configured.
1 Resources configured.
============

Node: nfs002.mycompany.com (6a838508-****-****-****-72e755b88326): online
Node: nfs001.mycompany.com (47e72b74-****-****-****-18077e2dcd57): online

Resource Group: nfs_service
    ipaddr      (heartbeat::ocf:IPaddr):        Started nfs001.mycompany.com
    lvm (heartbeat::ocf:LVM):   Started nfs001.mycompany.com
    filesystem  (heartbeat::ocf:Filesystem):    Started nfs001.mycompany.com
    networkfilesystem   (heartbeat::ocf:NFS):   Started nfs001.mycompany.com


 ※あ、都合上、NFSのリソースがすでに定義され動作してしまっているが、ここではちと見なかったことにしていただきたい。(笑) 以下同じ。

 上記のコマンドから判ること。
 ・クラスタシステムに組み込まれているのはnfs001.mycompany.comnfs002.mycompany.comの2つのノード(サーバ)である。
 ・リソースを握っているのはnfs001.mycompany.comである。 → つまりこちらが稼動系ということ
 ・組み込まれているリソースは、クラスタの仮想IPアドレス、lvm(共有ディスク)、ファイルシステム(共有ディスク)、そしてNFSである。(NFSはあとで触れるので、今は見なかったことに…)

 この状態で、クラスタの仮想IPアドレスにpingを投げたり、sloginとか実行すると、nfs001側が応答する。
 sshで試してみよう。
[root@togame ~]# ssh nfscl01 uname -a
Linux nfs001.mycompany.com 2.6.18-194.32.1.el5 #1 SMP Wed Jan 5 17:52:25 EST 2011 x86_64 x86_64 x86_64 GNU/Linux

 「nfscl01」はクラスタの仮想IPアドレスに付けた名前である。
 unameしてみると、nfs001が反応していることがわかる。

 では、リソースの状態を個別に確認してみよう。
 まず、ifconfigをそれぞれのサーバで実行すると…
 nfs001側
[root@nfs001 ~]# ifconfig
eth1      Link encap:Ethernet  HWaddr 00:21:5A:D1:3C:C6
          inet addr:192.168.1.1  Bcast:192.168.1.3  Mask:255.255.255.252
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5878 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5837 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1484641 (1.4 MiB)  TX bytes:1427366 (1.3 MiB)
          Interrupt:177 Memory:ca000000-ca012800

eth2      Link encap:Ethernet  HWaddr 00:1F:29:5D:3F:EA
          inet addr:192.168.2.1  Bcast:192.168.2.3  Mask:255.255.255.252
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5866 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5823 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1460409 (1.3 MiB)  TX bytes:1390416 (1.3 MiB)
          Memory:dffe0000-e0000000

eth4      Link encap:Ethernet  HWaddr 00:17:A4:3F:70:18
          inet addr:172.16.40.101  Bcast:172.16.43.255  Mask:255.255.252.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:192492 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3194 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:12180665 (11.6 MiB)  TX bytes:543060 (530.3 KiB)
          Interrupt:162

eth4:0    Link encap:Ethernet  HWaddr 00:17:A4:3F:70:18
          inet addr:172.16.42.1  Bcast:172.16.43.255  Mask:255.255.252.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:162
(略)

 eth4:0が、クラスタシステムの仮想IPアドレス。

 nfs002側は…
[root@nfs002 ~]# ifconfig
eth1      Link encap:Ethernet  HWaddr 00:21:5A:DC:EA:70
          inet addr:192.168.1.2  Bcast:192.168.1.3  Mask:255.255.255.252
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6267 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6447 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1545104 (1.4 MiB)  TX bytes:1659913 (1.5 MiB)
          Interrupt:177 Memory:ca000000-ca012800

eth2      Link encap:Ethernet  HWaddr 00:1F:29:5D:43:1E
          inet addr:192.168.2.2  Bcast:192.168.2.3  Mask:255.255.255.252
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6260 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6438 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1519820 (1.4 MiB)  TX bytes:1619234 (1.5 MiB)
          Memory:dffe0000-e0000000

eth4      Link encap:Ethernet  HWaddr 00:17:A4:3F:60:C0
          inet addr:172.16.40.102  Bcast:172.16.43.255  Mask:255.255.252.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:206192 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3345 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:12914961 (12.3 MiB)  TX bytes:511954 (499.9 KiB)
          Interrupt:162
(略)

 待機側のnfs002にはeth4:0が無いことがわかる。

 続いて、LVMの状態。
 稼動系であるnfs001は…
[root@nfs001 ~]# lvdisplay
  --- Logical volume ---
  LV Name                /dev/vgcontents/data
  VG Name                vgcontents
  LV UUID                rckNY1-1kmo-T2iB-wlBk-p1NK-6MXL-NrBaUP
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                12.70 TB
  Current LE             207999
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

 LV Statusが「available」であるので、この論理ボリュームが使用可能な状態に置かれている。
 では、nfs002はというと…
[root@nfs002 ~]# lvdisplay
  --- Logical volume ---
  LV Name                /dev/vgcontents/data
  VG Name                vgcontents
  LV UUID                rckNY1-1kmo-T2iB-wlBk-p1NK-6MXL-NrBaUP
  LV Write Access        read/write
  LV Status              NOT available
  LV Size                12.70 TB
  Current LE             207999
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto

 こちらはLV Statusが「NOT available」になっている。待機系であるから、この論理ボリュームにはアクセスできませんよ…という状態になっている。

 続いてファイルシステムのマウント状態。
 まあ、論理ボリュームはnfs001が使用可能、nfs002は使用不能であるから、結果はもうわかりきっているが。(笑)
[root@nfs001 ~]# mount
/dev/cciss/c0d0p3 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/cciss/c0d0p1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/mapper/vgcontents-data on /mnt/local/data type xfs (rw,noatime)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
[root@nfs001 ~]# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/cciss/c0d0p3      59G  1.7G   54G   4% /
/dev/cciss/c0d0p1      97M   26M   67M  28% /boot
tmpfs                 6.9G     0  6.9G   0% /dev/shm
/dev/mapper/vgcontents-data
                       13T  8.7T  4.1T  69% /mnt/local/data

 マウントできてますな。
 ではnfs002側を念のため見てみると?
[root@nfs002 ~]# mount
/dev/cciss/c0d0p3 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/cciss/c0d0p1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
[root@nfs002 ~]# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/cciss/c0d0p3      59G  1.8G   54G   4% /
/dev/cciss/c0d0p1      97M   26M   67M  28% /boot
tmpfs                 6.9G     0  6.9G   0% /dev/shm

 当然ありません。ということに。すばらしい!!(笑)

 では、クラスタの稼動系を交換してみよう。
 いきなりカーネルをkillしてみたい衝動に駈られるが、まずはちょっと自重して(笑)、heartbeatのコマンドで稼動系を交換してみる。
 稼動系を交換する場合は、現在の稼動系ノード(サーバ)をスタンバイ状態にするとよい。コマンドは crm_standby を用いる。
 書式は crm_standby -U 操作対象のノード名 -v スタンバイモードのON/OFF と、なる。なお、「操作対象のノード名」は、crm_monコマンドで表示される名前と完全に一致する必要があるので注意されたい。また、「スタンバイモードのON/OFF」は「on」または「off」で指定するが
  「on」…スタンバイモードがオン  つまりスタンバイ
  「off」…スタンバイモードがオフ  つまりアクティブ
 と、なることに注意。      …わかりづらいよねえ。(笑)

 では、nfs001をスタンバイモードにしてnfs002を稼動系にしてみよう。コマンドはこうなる。
 crm_standby -U nfs001.mycompany.com -v on
 実行結果はというと…
[root@nfs001 ~]# crm_mon
Defaulting to one-shot mode
You need to have curses available at compile time to enable console mode


============
Last updated: Mon Feb 28 18:27:02 2011
Current DC: nfs002.mycompany.com (6a838508-****-****-****-72e755b88326)
2 Nodes configured.
1 Resources configured.
============

Node: nfs002.mycompany.com (6a838508-****-****-****-72e755b88326): online
Node: nfs001.mycompany.com (47e72b74-****-****-****-18077e2dcd57): online

Resource Group: nfs_service
    ipaddr      (heartbeat::ocf:IPaddr):        Started nfs001.mycompany.com
    lvm (heartbeat::ocf:LVM):   Started nfs001.mycompany.com
    filesystem  (heartbeat::ocf:Filesystem):    Started nfs001.mycompany.com
    networkfilesystem   (heartbeat::ocf:NFS):   Started nfs001.mycompany.com
[root@nfs001 ~]# crm_standby -U nfs001.mycompany.com -v on
[root@nfs001 ~]# crm_mon
Defaulting to one-shot mode
You need to have curses available at compile time to enable console mode


============
Last updated: Mon Feb 28 18:27:28 2011
Current DC: nfs002.mycompany.com (6a838508-****-****-****-72e755b88326)
2 Nodes configured.
1 Resources configured.
============

Node: nfs002.mycompany.com (6a838508-****-****-****-72e755b88326): online
Node: nfs001.mycompany.com (47e72b74-****-****-****-18077e2dcd57): standby

Resource Group: nfs_service
    ipaddr      (heartbeat::ocf:IPaddr):        Started nfs001.mycompany.com
    lvm (heartbeat::ocf:LVM):   Started nfs001.mycompany.com
    filesystem  (heartbeat::ocf:Filesystem):    Started nfs001.mycompany.com
    networkfilesystem   (heartbeat::ocf:NFS):   Stopped
[root@nfs001 ~]# crm_mon
Defaulting to one-shot mode
You need to have curses available at compile time to enable console mode


============
Last updated: Mon Feb 28 18:27:34 2011
Current DC: nfs002.mycompany.com (6a838508-****-****-****-72e755b88326)
2 Nodes configured.
1 Resources configured.
============

Node: nfs002.mycompany.com (6a838508-****-****-****-72e755b88326): online
Node: nfs001.mycompany.com (47e72b74-****-****-****-18077e2dcd57): standby

Resource Group: nfs_service
    ipaddr      (heartbeat::ocf:IPaddr):        Started nfs002.mycompany.com
    lvm (heartbeat::ocf:LVM):   Started nfs002.mycompany.com
    filesystem  (heartbeat::ocf:Filesystem):    Started nfs002.mycompany.com
    networkfilesystem   (heartbeat::ocf:NFS):   Started nfs002.mycompany.com

 ちょっと長いが、
 ①クラスタの稼動系切り替え前にまずはcrm_monをしてみた。
 ②crm_standbyコマンドでnfs001をスタンバイモードに。
 ③すぐさまcrm_monコマンドでクラスタの状態を確認してみると…
Node: nfs002.mycompany.com (6a838508-****-****-****-72e755b88326): online
Node: nfs001.mycompany.com (47e72b74-****-****-****-18077e2dcd57): standby
  と、nfs001はスタンバイモードになっているが、
Resource Group: nfs_service
ipaddr (heartbeat::ocf:IPaddr): Started nfs001.mycompany.com
lvm (heartbeat::ocf:LVM): Started nfs001.mycompany.com
filesystem (heartbeat::ocf:Filesystem): Started nfs001.mycompany.com
networkfilesystem (heartbeat::ocf:NFS): Stopped
  というように、NFSが止まった状態で他のリソースはまだnfs001が握っている。
 ④少し待ってから再度crm_monでクラスタの状態を確認すると、リソースもnfs002が握っている状態になっている。

 という具合で、nfs001→nfs002にクラスタの稼動系を交換することができた。

 ちなみに、クラスタシステムの世界では、稼動系の交換のことを「フェイルオーバー」とか呼んだりする。人によっては「切り倒し」なんて表現をする人も。

 そんな訳でクラスタの稼動系交換に成功したことが確認できた。
 アーティクルが長くなったので一旦ここで区切る。
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。