目的
クラスタの概要を、クラスタ初心者に向けてざっくり説明することを目的としています。
そもそもクラスタって何なの?
システムやサービスを止めないための、複数のサーバーで協力する仕組みのことです。
仮にサーバーが1台だけだと、ハードウェアの故障やOSがおかしくなったときに、提供しているサービス(Webサイト、データベースなど)に影響が出てしまいます。
そういったときに、「2台以上のサーバーで協力し合い、もしどれか1台に障害が起きても、自動的にもう1台に処理を引き継ぐ」という構成を作ります。これをクラスタと呼びます。
今回は、このクラスタを実現するためにLinuxではよく使われるPacemakerと Corosyncというソフトウェアを例にして説明します。
この記事でわかること
- Pacemaker / Corosync の基本的な役割
- クラスタがどのように障害を検知し、リソースを守るのか
Pacemaker と Corosyncってなに?
クラスタを構成する各サーバー(ノード)上で、PacemakerとCorosyncが連携して動作しています。
-
Corosyncの役割:
設定されたネットワークを通じて、お互いのノードに定期的に「生きてる?」という信号(ハートビート)を送り合います。 相手からの信号が一定時間途絶えると、「相手は停止した(または通信できなくなった)」と判断し、その情報をPacemakerに伝えます -
Pacemakerの役割:
Corosyncから受け取った情報や自身が管理するリソースの情報を保持し、障害時には自動的に別のサーバーへリソースを移動させたり、再起動したりといった復旧処理を行います
障害が起きると?
-
異常発生時の動作:
もしNode1上のリソースに障害が発生した場合、Pacemakerはその障害を検知します。まずは同じノード上でリソースを再起動して復旧を試みます。
それでも復旧できなかった場合、Pacemakerはリソースを別ノード(Node2)へフェイルオーバーさせて起動し直します。
これにより、アプリケーションなどの重要なサービスを速やかに復旧し、停止時間を最小限に抑えることができます。
まとめ
- クラスタ: 複数のサーバが協力してサービスを止めない仕組み
- Pacemaker: クラスタの管理者でありリソースの管理と障害時の復旧指示担当
- Corosync: ノード間の生存監視役であり、ハートビートで状態を把握しPacemakerに連携