share facebook facebook2 twitter menu hatena pocket slack

2014.07.29 TUE

超私的 Undocumented Pacemaker and Corosync Vol.2

川原 洋平

WRITTEN BY川原 洋平

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. リソース制御

基本動作(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

元記事は、こちら