Linuxサーバーのクラスタリングは、リスクマネジメントという観点で非常に重要です。特に高い可用性が求められる業務であれば、より重視される技術です。
クラスタを組むことで、安心・安全な運用を目指せます。自動で死活監視ができるので、管理の手間も省けます。
この記事では、Linuxクラスタの活用シーンとソフトウェアの特徴などを解説します。
クラスタとは?
クラスタとは、複数台のサーバを仮想的に一つに統合し、システム全体の処理能力を向上させたり、可用性を高めたりできる技術です。クラスタを実現させるためには、高価なソフトウェアや専用ネットワーク機器が必要になるケースもあります。しかし、クラスタ用のオープンソフトウェアを利用すれば、導入コストを削減できます。
クラスタを組む方法には、いくつかの種類があります。
一つ目は「負荷分散クラスタ」です。
その名の通り、主にサーバーの負担を分散させて処理速度アップを狙います。サーバーは複数台で構成され、仮想的に一つのサーバーに見立ててシステムを提供します。そのため、処理性能を高めると同時に、故障を検知したサーバーをシステムから切り離し、高い可用性を実現するのです。
二つ目は「アクティブ・スタンバイクラスタ」です。
2台のサーバーで構成され、1台は稼働状態の「稼働系」、1台は「待機系」です。主に動いているのは稼働系のサーバーで、通常の業務で利用されます。待機系サーバーは、常に起動しつつ、稼働系サーバーの状態を監視しています。仮に稼働系サーバーが故障などで停止してしまったら、待機系サーバーはそれを感知し、すぐに代理として働き始めるのです。このように、ダウンタイムを短くして可用性を高めます。
Linuxクラスタの活用シーン・目的
Linuxクラスタを導入することで実現できることや達成する目的を紹介します。
ミラーリング
Linuxクラスタで「ミラーリング」を構築すれば、高い可用性で運用できます。これは、複数台のサーバーに対し、常に同じ状態である「同期」を取らせる必要があります。同期を取れば、一つのサーバーが故障しても、正常なサーバーに切り替えて運用すれば、業務を止めずに利用できるのです。
また、回復措置には新しいサーバーを用意し、起動しているサーバーと同期を取ることで複製を作れます。故障対応が早く、復元も容易であるため、安定した運用ができます。
ただし、常に同期を取れば、データを更新するたびに各サーバーへ書き込みが行われます。すると更新処理速度が落ちてしまい、運用に支障をきたしてしまう場合もあるのです。ミラーリングを組む場合は、高いサーバーのスペックや、スループットのよいネットワーク構成の検討が必要になります。
ミラーリングせずに同じ目的を達成する方法に、ストレージの共有が挙げられます。
アプリケーションを各サーバーにインストールし、書き込むストレージを共有することで、各サーバーが同期を取る必要はありません。
しかし、この場合は共有ディスクが破損するとデータを損失してしまいます。そのため、ディスクをミラーリング構成にしたり、随時バックアップを取得しなければなりません。
リソース監視・制御
クラスタ構成を組むと、リソースの監視や制御ができます。例えば、ストレージの使用容量やネットワークのスループット、サーバーのCPU使用状況などを一元的に監視できるでしょう。監視対象の中にはアプリケーションも含まれ、データベースソフトやウェブサーバーソフトなどのミドルウェアも制御可能です。
また、故障や障害などによって機器やネットワークと連携が取れなくなってしまった場合、待機系の切り替えるなどの措置が必要です。リソース制御ができれば、システム全体から自動で障害箇所を切り離せます。ただし、そのためにはどこでエラーが起きているのかが分かるトリガーが必要です。そのトリガーこそが次に紹介する死活監視です。これらと組み合わせることで、稼働系サーバーで故障が起きた場合でも、自動で待機系サーバーへ切り替えられます。
リソースの制御機能と死活監視機能を用いれば、高い可用性を実現できるのです。
死活監視
死活監視とは、対象範囲のネットワークや、サーバー、ストレージなどが故障や障害などによってダウンしたことを監視することです。どのノードと通信ができないのか、ネットワーク経路や機器を特定します。
ダウンだけではなく、システムの再開も検知できるため、システム全体の稼働状況をリアルタイムで把握できるのです。クラスタ構成では、これらの死活監視はとても重要なものになります。
クラスタ構成では複数台のサーバーやストレージ、ネットワークが用意されることがほとんどです。これらの一つでも使用できなくなれば、クラスタは破綻してしまいます。故障や障害を検知すると、一般的にはアラートを画面に表示したり、システム管理者などの関係者へメールを配信します。そのため、問題が起きた場合はそのまま放置されることなく、気づきを早めるようになっているのです。
Linux-HAとは
Linux-HAとは、Linuxに高い可用性を実現させる、オープンソースソフトウエアを提供するプロジェクトのことです。
これらが開発・維持しているものは、クラスタ通信レイヤを実現させるものであったり、ブロックデバイス複製機能であったり、さまざまなものがあります。
日本ではLinux-HA Japan プロジェクトが国内向けに維持・管理またはサポートしています。各システムのダウンロード先の紹介や、マニュアルを提供するほか、イベント情報なども通知してくれます。メーリングリストを用意しており、そこにメールすれば、仕様や設定方法に関する質問に答えてくれます。
HAクラスタのソフトウェア
HAクラスタのソフトウエアには、いくつか種類があります。どれも、可用性を高めるために有効なものです。それぞれの概要やメリットを紹介します。
DRBD
DRBDとは、リアルタイムでネットワーク越しにストレージを超高速複製するソフトウエアのことです。常にデータを冗長化し、高い可用性を実現するために利用されます。
通常は二つ以上のストレージを同時更新するのであれば、処理に負荷がかかり、パフォーマンスが低下してしまいます。
しかし、DRBDを利用すれば、そのような使いづらさは気になりません。ネットワークを越しに高速複製するため、BCP対策にもなります。
ネットワークは10Gbitの高速LANに対応しており、離れた距離でもほぼ遅延なくデータを更新し続けられるでしょう。
例えば、西日本の事務所から、東日本にあるデータセンターなどにデータを送信し続ければ、西日本で地震や災害が起きてもデータを損失することはありません。
メインで利用しているサーバーが故障した際も、複製先のサーバーに自動切り替えをするため、高い可用性を実現します。DRBD9では、最大32台のリアルレプリケーションを作成できます。オープンソースで大規模なシステムにも対応できる先進技術です。
Pacemaker
Pacemakerは、大きく分けて四つの機能を持つソフトウエアです。
一つ目の機能は、アプリケーションの状態監視です。例えば、PostgreSQLやTomcatなどを監視するだけでなく、ファイルシステムや仮想IPアドレスを制御できます。
二つ目は、ネットワーク監視です。定期的にpingを送信することで、ネットワーク経路の正常性を確認します。
三つ目の機能として、ノードを監視し、通信ができなくなったノードの電源を強制的にダウンさせることも可能です。電源を停止すれば、他のノードに与える影響も回避できます。
四つ目は、Pacemaker関連のプロセスを監視し、適宜プロセスの停止や再起動をする機能です。メインプロセスが停止した場合、自動的にOSを再起動させるなど、自己回復もできます。
このように、Pacemakerは電源やネットワーク、アプリケーションまで幅広く監視するだけでなく、回復・回避といった制御も可能です。
Corosync
クラスタ構成を利用する場合、各ノードの状態監視は必須といえるでしょう。Corosyncは、クラスタ通信層制御を可能とした、フレームワークを提供するソフトウエアです。Corosyncはあらゆる機能を持ち、それぞれを活用することによって、可用性を高められます。例えば、可用性マネージャーを使用すれば、処理を失敗したアプリケーションプロセスを再起動させられます。
メモリ内データベースでは、「情報が更新された」という情報を受信したり、通知したりできるのです。
ただし、Corosyncはクラスタ通信層の制御はできますが、リソース制御はできません。そのため、CorosyncとPacemakerは併せて使用されます。一般的に、Corosyncでノード死活監視をし、異常を感知した場合はPacemakerで対象のノードを切り離すなどのノード制御をします。他のソフトウエアと併用することで、より可用性の高い運用ができるのです。
Linuxクラスタの不安要素を解消する「LINBITクラスタスタックサポート」
Linux-HAクラスタはコストを抑えられるなどのメリットも多いのですが、オープンソースは後ろ盾がなく完全に自己責任となってしまいます。そのため、導入に抵抗を感じる企業も多いのが現状です。
このようなLinux-HAクラスタに対する不安を解消する、「LINBITクラスタスタッフサポート」というサービスがあります。内容は、インシデントサポートやソースコードレベルの日本語サポート、ホットフィックスの提供などを実施する、商用ソフトウエア並みの支援サービスです。サポート製品には、HA・DR・SDSがあります。
HA(High Availability)
HAはDRBDやPacemaker、Corosyncを組み合わせた高可用性のクラスタサービスです。稼働系のサーバーがダウンした場合、自動でリソースを切り替えます。待機系のサーバーで運用を続けることで、業務へのクリティカルな影響を回避します。これらは全てオープンソースによる仕組みですが、日本語によるサポート対応や、ホットフィックスを提供しています。
サポートがないまま構築するものと比べ、安心・安全なシステムを利用できます。また、高価な外部ストレージを調達する必要がないため、安価にクラスタ構成が組めます。DRBDは、最大1PBものデータ容量をサポート可能です。その上、687億組にわたる複数のディスク領域をサポートするため、容量をほとんど気にせず使用できます。
DR(Disaster Recovery)
通常、遠隔地へレプリケーションを作る環境を構築する場合、専用回線や高価なネットワーク機器などが必要になります。
しかし、通常のインターネット回線やVPN回線でも、専用回線並みにリアルタイムなレプリケーションを安価に実現できるサービスがDRです。
LINBITクラスタスタック・サポート加入者であれば、オプションで「DRBD Proxy」という転送ソフトウエアを使用できます。これを利用すれば、コストを削減しつつ、遠隔地へ安定的なレプリケーションが可能です。
また、マルチクラウドに対応しているため、既存で使用しているクラウドプラットフォームがあれば、別のクラウドサービスと併せて活用できます。
SDS(Software Defined Storage)
SDSは、DRBD9の特徴である分散ブロックストレージのミラーリングを提供するサポート製品です。
これまで1:1のレプリケーションしか作成できなかったものが、ブロックデバイスを利用することで1:nの分散コピーが可能になりました。これにより、さらに高い可用性やアクセス分散が見込めます。
SDSは複数のノードにまたがったディスクを、一つの大きなストレージとして、ディスクボリュームを自由に作成できます。これまでは主にSANなどの高価なストレージを用意していましたが、サーバーのディスクやストレージで対応が可能であるため、大幅なコストダウンが見込めます。システムが稼働している場合でも、ノードの入れ替えや設定変更が可能です。
まとめ
Linuxで高可用性を追求するのであれば、クラスタ構成は欠かせない技術です。商用ソフトウエアを利用するのも一つの手段ですが、オープンソースであるLinux-HAを活用すると大きくコストを削減できます。
しかし、商用機器に無償のソフトウエアを利用することに抵抗を感じるかもしれません。そのような場合は、ヘルプデスクやパッチの提供などで支援する、LINBITクラスタスタックサポートをご利用ください。
商用ソフトウエアに負けないサポートサービスを、検討してみてはいかがでしょうか。