Linuxでクラスタ~heartbeatを試す(そして苦しむ)~その3 [Linux(CentOS/VineLinux)]
はい。heartbeatが一応起動したってことで、まずはギッタンバッコンする前に、現状の確認から。
※あ、都合上、NFSのリソースがすでに定義され動作してしまっているが、ここではちと見なかったことにしていただきたい。(笑) 以下同じ。
上記のコマンドから判ること。
・クラスタシステムに組み込まれているのはnfs001.mycompany.comとnfs002.mycompany.comの2つのノード(サーバ)である。
・リソースを握っているのはnfs001.mycompany.comである。 → つまりこちらが稼動系ということ
・組み込まれているリソースは、クラスタの仮想IPアドレス、lvm(共有ディスク)、ファイルシステム(共有ディスク)、そしてNFSである。(NFSはあとで触れるので、今は見なかったことに…)
この状態で、クラスタの仮想IPアドレスにpingを投げたり、sloginとか実行すると、nfs001側が応答する。
sshで試してみよう。
「nfscl01」はクラスタの仮想IPアドレスに付けた名前である。
unameしてみると、nfs001が反応していることがわかる。
では、リソースの状態を個別に確認してみよう。
まず、ifconfigをそれぞれのサーバで実行すると…
nfs001側
eth4:0が、クラスタシステムの仮想IPアドレス。
nfs002側は…
待機側のnfs002にはeth4:0が無いことがわかる。
続いて、LVMの状態。
稼動系であるnfs001は…
LV Statusが「available」であるので、この論理ボリュームが使用可能な状態に置かれている。
では、nfs002はというと…
こちらはLV Statusが「NOT available」になっている。待機系であるから、この論理ボリュームにはアクセスできませんよ…という状態になっている。
続いてファイルシステムのマウント状態。
まあ、論理ボリュームはnfs001が使用可能、nfs002は使用不能であるから、結果はもうわかりきっているが。(笑)
マウントできてますな。
ではnfs002側を念のため見てみると?
当然ありません。ということに。すばらしい!!(笑)
では、クラスタの稼動系を交換してみよう。
いきなりカーネルを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
実行結果はというと…
ちょっと長いが、
①クラスタの稼動系切り替え前にまずは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にクラスタの稼動系を交換することができた。
ちなみに、クラスタシステムの世界では、稼動系の交換のことを「フェイルオーバー」とか呼んだりする。人によっては「切り倒し」なんて表現をする人も。
そんな訳でクラスタの稼動系交換に成功したことが確認できた。
アーティクルが長くなったので一旦ここで区切る。
[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.comとnfs002.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にクラスタの稼動系を交換することができた。
ちなみに、クラスタシステムの世界では、稼動系の交換のことを「フェイルオーバー」とか呼んだりする。人によっては「切り倒し」なんて表現をする人も。
そんな訳でクラスタの稼動系交換に成功したことが確認できた。
アーティクルが長くなったので一旦ここで区切る。
コメント 0