クラスタシステムの苦労
今日は、当社の高可用HAクラスタ:PerfectHAの評価用バージョンの準備を行いました。この製品は単体で販売ということはこれまでほとんどなく、構築と一緒に、あるいは開発と一緒にという感じでお使いいただくことがほとんどで、評価用のバージョンがないばかりか、構築手順もほとんどまとめられていない状態でした(まあ、実は当社の古めのソフトウェア製品はこういう状態のものが多いのですが・・・)。
PerfectHAを開発した背景は、当時、あるマンション向けのシステムを手伝っていて、必要に迫られて開発したのでした。マンションのシステムはマンションの工事中から設置を行い、動かしながら設置・テストをしていくため、サーバはどんどん工事の誇りを吸い込み、半年もしないうちからどんどん壊れました。大抵HDDが壊れます。
もともとは他社が開発したシステムでしたので、クラスタシステムもその会社が選択したもので構築されていたのですが、HDDが壊れると大抵サーバは綺麗には落ちてくれず、ハングアップ状態に近い感じになります。一応動いてはいるけど、使い物にならない状態です。こうなると、不調になったサーバを落とすか、あるいはネットワークケーブルを抜いて、マスターIPアドレスを空けないとスレーブ機がマスターになれません。
結局クラスタ構成にしていても人がサーバ設置場所で作業しないと切り替えられないのです。しかも、場合によってはRAIDが故障してしまうこともあり、こうなるとRAID切り離しとクラスタシステムの調整が必要になり、半日がかりの作業になってしまいます。
そんなことの繰り返しから、現場からの切実な要望として、
・HDDが壊れても、人が関与せずに切り替わり、サービスを続けられること
・RAIDが壊れた場合などに、クラスタの切り離しや調整が簡単なこと
が出てきました。
そこで開発したのがPerfectHAです。ソフトウェアの仕組みとしては一般的なクラスタシステムと同様に、死活監視を行いながら切り替えるのですが、マスターIPアドレスが空かない状況になった場合に、ネットワークから強制的に隔離する手段を用意しました。ネットワークで制御できるテーブルタップを使い、マスター・スレーブそれぞれのネットワークにHUBを1つずつ設置し、そのHUBの電源を切ることにより隔離する方法を組み込んだのです。マスターのサーバ自体の電源を落としてしまっても良いのですが、そうすると後で故障の状態を観察することができなくなるので、HUBを落とすようにしました。
また、クラスタ自体を簡単にするために、非常にシンプルな構成にして、セットアップも削除も簡単にしました。
無事にそのマンションのシステムはPerfectHAを使うようになってから、自動でマスターが切り替わるようになり、サポートチームの人は翌日以降の都合のよいときに現地に行って対応する、ということができるようになりました。
マンション向けのシステムはLinuxでしたので、PerfectHAもLinux用だったのですが、同じ仕組みでWindows用も開発し、どちらも提供できるようにしています。
一般的なクラスタシステムは、構造も複雑なので、もともとクラスタを前提にシステム構築を設計しないと大変なのですが、PerfectHAはすでに単独で動いているシステムをクラスタ化するのも、大抵は容易です。
まあ、実は個人的にはあまりクラスタシステムは好きではなく、きっちり固まったシステムで、メンテナンスが遠方だったりお客さんの時間帯の都合などで大変なときには便利なのですが、自社のサーバなどですと、頻繁にプログラムを入れ替えたり、実験したりするため、クラスタにしてあると余計なところで切り替わってしまって、実に面倒なのです。
先日インターネットサーバ機関連を省エネ化した際に、実はクラスタは外してしまいました。壊れにくい構成にしたということもありますが。。
古い製品で、人気があまりないものは、ほとんど私が開発していて、サポートも私しかできないものもあり、お問い合わせをいただくとうれしいのですが、結構苦労もしています。。