最近、"HAクラスタソフト を使用して DB サーバをクラスタ構成にする" という機会があったので、そもそも何で HAクラスタソフト をシステムに導入するんだっけ? から振り返ってみようと思います。
(ちなみに、HAクラスタソフトは Pacemaker を使いました)
そもそもシステムって
動かないと困るんです
基幹系システムから ECサイトまで、世の中のシステムが常に動くのはもはや当たり前のようになっています。
障害が発生しシステムが予期せず止まってしまうと、経済損失はおろか、人命に関わる 事態を引き起こしてしまうことがあります。
安定して動かすために
上記のような事態を引き起こさないために、安定して動くシステムを構築する必要があります。
そこで非機能要求の 1 つである 可用性 を実現する必要があります。
可用性はシステムが障害に強く、安定して稼働する能力のことであり、稼働率 で数値表現することが出来ます。
稼働率 A = \frac{MTBF (動作可能時間)}{MTBF + MTTR (動作不能時間)}
稼働率と対応するシステム例を以下に示します。(※)システム例はあくまで目安です。
稼働率 | 許容停止時間 (年間) | システム例 |
---|---|---|
100% | 0 分 (30秒) | 人命に関わるシステム |
99.999% | 5 分 | 電気、水道などのインフラ系 |
99.99% | 53 分 | 金融、保険 |
99.90% | 8.8時間 | メール |
99.00% | 3.6日 | 商用でない社内システム |
可用性を実現するために
システムに要求される可用性を実現するためには色々な方法があります。
- RAID
- ロードバランサ
- レプリケーション
- クラスタリング (HAクラスタ)
上記の中から、構築の対象とした HAクラスタ について当記事で紹介します。
(※) HA : High Availability
HAクラスタ
概要
クラスタとは、複数の PC をネットワークで接続して、__1 つの PC のように振る舞う__仕組みのことです。
中でも HAクラスタでは、複数の PC を以下の 2 つに分けて稼働させます。
- 現用系 (Master) : サービスが起動している
- 待機系 (Slave) : サービスが起動せず待機している
何が出来るか
クラスタ構成にした PC に HAクラスタソフトを導入しすることで、現用系で障害が発生した場合に素早く・正確にシステムを復旧することが出来ます。
- 現用系サービスの再起動による復旧
- サービス起動主体の、待機系への切替えによる復旧 (フェールオーバー)
HAクラスタソフトの導入により 稼働率約 99.99 %、復旧時間約 53 分 のシステムを構築出来ると言われています。
どうして復旧できるか
HAクラスタソフトは、PC 内の様々なサービスが正常に稼働しているかを常に監視しています。
加えて、ソフトがインストールされている PC(ノード) 間で通信を行い、以下を確認しています。
- 監視対象の__障害発生有無__
- 接続されている__ノードの生死__
これより、監視対象のサービスまたは各ノードで発生した障害をリアルタイムに検知し、復旧対応をとることが出来ます。
以下に HAクラスタソフトで監視することが出来るサービス例を示します。
なお、クラスタソフトによっては自分で監視対象をカスタムすることも出来ます。
- ネットワーク監視
- アプリケーション・ミドルウェア監視
- OS 機能監視
- ディスク監視
- ノード (自己・他者間) 監視
以上より、HAクラスタで実現できることを説明しました。最後に、HAクラスタの組み方にはどういったパターンがあるかを紹介します。
HAクラスタ の組み方
HAクラスタの組み方は、「ディスク構成」 × 「Master / Slave のサービス構成」で決まります。
どの構成を選択するかは、実行処理の負荷、トランザクション管理、データの引継ぎなどに考慮した上で、システム要件に沿って決める必要があります。
ディスク構成
ディスク構成は、主に「シェアード構成」「シェアード・ナッシング構成」の 2 つに分類出来ます。
構成 | 特徴 | 注意点 |
---|---|---|
シェアード構成 | Master/Slave 間で共有ディスクを利用 | 共有ディスクが __単一障害点__とならない設計にする |
シェアード・ナッシング構成 | Master と Slave でデータをレプリケーションする | レプリケーションで__データ損失__が発生しない設計にする |
サービス構成
Master / Slave のサービス構成は、主に「Active/Standby」「Active/Active」「N : 1」「N : M」の 4 つに分類出来ます。
構成 | 特徴 | 注意点 |
---|---|---|
Active/Standby | 1 台ずつ Master/Slave があり、全サービスが Master で起動 | 1 台の Master で全サービスが起動することの負荷 |
Active/Active | 1 台ずつある Master/Slave それぞれで異なるサービスが起動 | サービス間のデータ引継ぎやトランザクション管理 |
N : 1 | 複数台の Master に分散してサービスが起動 | 同上 |
N : M | それぞれ複数台ある Master/Slave に異なるサービスが分散して起動 | 同上(より複雑化) |
おわりに
当記事では以下を紹介しました。
- システムが動かない影響と対策
- 可用性を実現するための HAクラスタで出来ること
- HAクラスタの組み方
可用性(の中でも HAクラスタ)に話を絞りましたが、システム構成を考える上では他にも性能、セキュリティ etc... 実現しなければいけない要件が沢山あり、難しいですが面白いですね。