pacemaker本家さん+heartbeat+drbd日本語サイトさんでクラスタの巻
用語(絶対覚える必要ありです)
CRM Cluster Resource Manager
CIB Cluster Information Base
DC ??クラスタの指揮サーバ
インターコネクト通信 heartbeatで通信する相互生死確認用通信、この通信チャンネルが切断させる事でスプリットブレインになる可能性が大きい。なので一般には冗長化(複数経路)持たすのが望ましい。推奨は2経路。サービス用1つと合わせると3つのNICが必要になる。
STONITH スプリットブレインになった時に相手側を強制的にフェンシング(再起動)させる。このため、リモートから電源が操作できるハードが必要。標準のIPMIからiLO、IMM等のプラグインがある
OCF Open Cluster Flamework クラスタリソース定義クラスの1つ
LSB Linux Standard Base
環境
ここを見て必要なrpmへのリポジトリ情報を得る。今回はCentOS5上に展開しようと思うので、epel 5のリポジトリを使う。当然epelのリポジトリも必要。
rpm -Uhv http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm wget -O /etc/yum.repos.d/clusterlabs.repo \ http://www.clusterlabs.org/rpm/epel-5/clusterlabs.repo yum install pacemaker heartbeat drbd83 kmod-drbd83
vi /etc/drbd.d/global_common.conf vi /etc/drbd.d/r0.res
chkconfig等で設定したリソースが自動起動しないようにしておく。 HeartbeatやDRBDについても同様。手動であげる。
DRBDとPacemakerのログ設定が重要。
DRBDを利用する場合はPacemakerのグローバルプロパティに以下3つは最低限設定する
DRBDを定義して、マルチステートリソースとして再定義する。 これにより、両ノードでDRBDが起動した上でアクティブノード側でプライマリ、スタンバイノード側でセカンダリとしてDRBDリソースが動作する。
DRBDがプライマリになったら、そのノードでリソースグループを起動する。というcolocationとorderの設定をする。
migration-threshold migration-thresholdに設定した値になると故障とみなす。デフォルト値は0となり、故障とみなさないという意味になる。
Dummy RA ダミーのRA。start処理でステータスファイルを作成してmonitor処理でステータスファイルの有無を確認してstop処理でステータスファイルを削除する
on-fail=restart
/var/lib/pengineの下のファイル達 Pacemakerのpengine(Policy Engine)が出力する状態遷移グラフ
出力されるファイルは3種類
デフォルト値は-1でunlimited。クラスタオプションのpropetyで
を設定すればOK
リソースエージェントの設定情報はmeta情報で見れる
crm ra meta <class>:<providor> 例えば meta ocf:mysql みたいなー
crm configure property pengineの設定の説明は
# /usr/lib/heartbeat/pengine metadataで確認できる
batch-limit= | 30s | TEが並列処理を許可するジョブ数 |
cluster-delay= | 60s | ネットワーク越しの遅延時間 |
default-action-timeout= | 20s | アクションが成功するのを待機する時間 |
default-resource-stickiness= | 0 | |
is-managed-default= | true | true/false trueにするとstart/stop処理が止まる |
maintenance-mode= | false | true/false trueにするとstart/stop/monitor処理が止まる |
no-quorum-policy= | stop | ignore/stop/freeze/suicide |
node-health-green= | 0 | |
node-health-red= | -INFINITY | |
node-health-strategy= | none | none/migrate-on-red/only-green/progressive/custom |
node-health-yellow= | 0 | |
pe-error-series-max= | -1 | 異常系(ERROR)遷移グラフの数、Defaultは-1で無制限、0は無効 |
pe-input-series-max= | -1 | 正常系遷移グラフの数、Defaultは-1で無制限、0は無効 |
pe-warn-series-max= | -1 | 異常系(WARN)遷移グラフの数、Defaultは-1で無制限、0は無効 |
remove-after-stop= | false | リソースが止まったらLRMから解除する |
start-failure-is-fatal= | true | always treat start failures as fatal.これは古い。falseに設定したらresource-failure-stickinessを使うようになる |
startup-fencing= | true | Advanced user only |
stonith-action= | reboot | reboot/poweroff STONITHデバイスに送るアクション |
stonith-enabled= | true | true/false STONITHを有効にするか無効にするか |
stonith-timeout= | 60s | STONITHアクションが成功するのを待つ時間 |
stop-all-resources= | false | |
stop-orphan-actions= | true | キャンセルされたらアクションを削除する |
stop-orphan-resources= | true | リソースが停止したら削除する |
symmetric-cluster= | true | 全てのリソースはどこでも起動できるか |
/var/lib/pengine/の下にできるpe-{input/warn/error}-XXX/bz2はseries-maxを設定する事で抑制できる。