cloudpack の 自称 Sensu芸人 の かっぱこと 川原 洋平(@inokara)です。
はじめに
以下の資料を読んだので 1 から 5 位までを写経。
クラスタってなに? Pacemaker ってなに?
クラスタってなに?
- 複数のコンピュータを結合し、果実・花等の房のようにひとまりとしたシステム
HA クラスタってなに?
- High Availability = 高可用性
- 一台のコンピュータでは得られない高い信頼性を持つコンピュータシステム
HA クラスタを導入すると…
- 現用系で故障が発生してサービスが継続出来なかった時に、待機系でサービスを自動起動する
- サービスの中断を最小限にすることが出来る
Pacemaker とは?
- HA クラスタソフトウェアで実績のあった Heartbeat の後継
- Pacemaker は Heartbeat の後継
システム構成
基本構成
Active / Standby
- 通常は Active ノート呼ばれるサーバーでサービスを提供
- Active ノードが故障した場合には Standby ノードが Active になりサービスを継続することをフェールオーバ
Active / Active
- Active / Standby 構成を 2 セット組み合わせた構成
- 両方のサービスでそれぞれサービスが稼働する
- あるノードが故障した場合には、別ノードにサービスをフェールオーバする
Pacemaker では…
- 複数台構成が可能
- 複数台の Active ノードや複数台の Standby ノードを設定可能(N+N 構成)
Pacemaker の基本動作
基本動作
- ノード監視
- リソース制御
基本動作(1)ノード監視
- 相手ノードの静止を確認するために一定間隔で相手ノードを監視(ハートビート通信)
- 相手ノードと通信出来なくなった場合、相手はダウンしたと判断
- フェイルオーバー等のクラスタ制御の処理を行う
基本動作(2)リソース制御
- リソースをリソースエージェント(RA)を介して start / stop / monitor する
- リソースが故障した場合にはフェイルオーバー等のリソース制御処理を行う
そもそもリソースってなに?
- クラスタが管理するもの全て
- ノード間でサービスを引き継ぐ為に制御が必要なもの(サーバプログラム、コンピュータリソース)
- サービスの故障を検知する為に監視が必要なもの(ネットワーク監視、ディスク監視)
- Pacemaker が起動、停止、監視するものがリソース
リソースエージェント(RA)とは
- リソースと Pacemaker を仲介するプログラム
- 主にシェルスクリプトで記述
- Pacemaker はリソースエージェントに対してリソースの start / stop / monitor を指示
リソースエージェントの種類
目的 | リソース | リソースエージェント名 |
---|---|---|
サーバープログラム | データベース、インターネットサーバー | pgsql / orcle / mysql 等… |
コンピュータ資源 | ファイルシステム、仮想 IP | Filesystem / IPaddr2 等… |
異常監視 | ネットワーク監視、ディスク監視 | pingd / diskd 等… |
- リソースエージェントは自作可能
- フォアグランドプロセスで動作するプログラムであれば、汎用の RA の anything というものもある
スプリットブレイン対策
スプリットブレイン
- 全てのハートビート LAN が切れてしまった場合
- お互いを故障と判断して双方でサービスを引き継ごうとすること
- データを共有している場合にデータ破壊発生、IP を共有していると IP 競合発生等の危険性
- スプリットブレイン対策として STONITH 機能(強制電源断)/ sfex(共有ディスク排他制御)/ Quorum 機能(多数決に基づく制御)
Pacemaker のコンポーネント構成
複雑
リソース制御部の Pacemaker
- 他のクラスタソフトウェア間とのコンポーネント共通化の為に Heatbeat2 からリソース制御部分として切りだされた
- リソース制御部分には以下のようなコンポーネントが含まれる
- 残念ながら Pacemaker 単独では動作しない…(勘違いしてた)
- クラスタ制御部分と組み合わせて使用する必要がある
リソース制御部分には以下のようなコンポーネントが含まれる。
略称 | 名前 |
---|---|
CRM | Cluster Resouce Manager |
Tengine | Transition Engine |
Pengine | Policy Engine |
CCM | Cluster Consensus Membership |
RA | Resouce Agent |
Resouce Agent の部分が Bash で作られたスクリプトや Linux-HA から提供されるスクリプトになるのかな…。
クラスタ制御部の Heartbeat3
- CCM
- Heartbeat2 のクラスタ制御部分が Heartbeat3 として切りだされた
クラスタ制御部の Corosync
- OpenAIS というオープンソースの HA クラスタのクラスタ制御部分が Corosync として切りだされた
コンポーネントの組み合わせ
Linux-HA Japan では…
- Pacemaker + Corosync を Pacemaker と呼ぶ
- Pacemaker + Heatbeat3 も Pacemaker と呼ぶ
紛らわしw
元記事は、こちら