+ Xenで仮想化クラスタリングしてみよう! 2010 年 2 月 26 日 Linux-HA-Japanプロジェクト田中崇幸 Linux-HA-Japan Project 1
本日の話題 1 って何? 2 3 4 5 仮想化クラスタリング構成仮想化クラスタリング応用構成編 Linux-HA-Japanプロジェクトについて参考情報 Linux-HA-Japan project 2
1 って何? Linux-HA-Japan project 3
とは? オープンソースで実現する高可用性クラスタリングソフトウェアです は サービスの可用性向上ができる HA クラスタを可能とした コストパフォーマンスに優れたオープンソースのクラスタリングソフトウェアです Linux-HA-Japan project 4
概要 は 故障発生を検知し 待機系サーバへフェイルオーバさせることが可能です サービス利用者には故障を意識させずにサービスを継続して提供することが可能です Active Standby フェイルオーバ Active ハートビート 故障発生 故障 ハートビート 共有ディスク 共有ディスク Linux-HA-Japan project 5
基本的動作 : ノード監視 相手ノードの監視 一定間隔で相手ノードと通信し 相手ノードの生死を確認します ( ハートビート通信 ) 相手ノードと通信できなくなった場合に 相手はダウンしたと判断し フェイルオーバ処理を行います ACT ノード SBY ノード ACT ノード SBY ノード リソース 生きてる? リソース リソース リソース 故障 生きてるよ! ハートビート通信断 ノード断 Linux-HA-Japan project 6
リソース リソースエージェント とは? リソース ではよく出てくる言葉なのでおぼえてください! HA クラスタにおけるリソースとは サービスを提供するために必要な構成要素の事で が起動 停止 監視等の制御対象とするアプリケーション NIC ディスク等を示します Linux-HA-Japan project 7
リソースエージェント (RA) リソースエージェント (RA) とは そのリソースと を仲介するプログラムになり 主にシェルスクリプトで作成されています は リソースエージェントに対して指示を出し リソースの起動 (start) 停止 (stop) 監視 (monitor) の制御を行います Linux-HA-Japan project 8
基本的動作 : リソース制御 リソースの制御 : 起動 (start) 停止 (stop) 監視 (monitor) 起動後は一定間隔で監視 正しく動作していない場合にはフェイルオーバ等の処理を実施します 生きてる? ACT ノード リソース 生きてるよ! SBY ノード リソース 生きてる? ACT ノード 故障 リソース SBY ノード リソース 開始 リソースが壊れたな リソースを SBY 側で起動してサービス継続して! Linux-HA-Japan project 9
では Web 系 DB 系 ネットワーク系 ファイルシステム系等のリソースエージェントがなど 標準で多数用意されています MySQL や や Tomcat 用のリソースエージェントなどもありますよ! 標準リソースエージェントの一例 分類 リソース リソースエージェント (/usr/lib/ocf/ resource.d/heartbeat/) ファイルシステム系ディスクマウント Filesystem DB 系 PostgreSQL pgsql Web 系 Apache apache ネットワーク系 仮想 IPアドレス IPaddr Linux-HA-Japan project 10
pgsql リソースエージェント 監視 (monitor) 処理の抜粋 #!/bin/sh ( 省略 ) pgsql_monitor() { if! pgsql_status then ocf_log info "PostgreSQL is down" return $OCF_NOT_RUNNING fi if [ "x" = "x$ocf_reskey_pghost" ] then runasowner "$OCF_RESKEY_psql -p $OCF_RESKEY_pgport -U $OCF_RESKEY_pgdba $OCF_RESKEY_pgdb -c 'select now();' >/dev/null 2>&1" else ( 省略 ) Linux-HA-Japan project 11
例 ) と PostgreSQL リソース エージェントの関係 PostgreSQL 用リソースエージェント (pgsql) PostgreSQL 用のコマンド等に変換 リソース PostgreSQL start OK/NG monitor OK/NG stop OK/NG スタート制御 pgsql_start() 状態監視 pgsql_monitor() ストップ制御 pgsql_stop() pg_ctl start OK/NG select now(); OK/NG pg_ctl stop OK/NG Linux-HA-Japan project 12
2 仮想化クラスタリング 構成 ここからやっと本番? Linux-HA-Japan project 13
話を進めるにあたってまずは仮想化を行うターゲットの構成を決めます Linux-HA-Japan project 14
仮想化のターゲットとする HA 構成 ここでは 異なる 2 つのサービスでクラスタ化されている 4 台ノード構成を Xen でサーバ統合する構成を考えてみます サービスA 仮想 IP ACT ノード サービス A 系クラスタグループ SBY ノード サービス LAN サービスB 仮想 IP ACT ノード サービス B 系クラスタグループ SBY ノード クライアント リソース A リソース A リソース B リソース B ハートビート LAN1 ハートビート LAN2 ハートビート LAN1 ハートビート LAN2 Linux-HA-Japan project 15
ACT ノードには サービス LAN 側に からサービス提供用仮想 IP IPアドレスが付与され クライアントへサービスが提供されているとします クライアント サービスA 仮想 IP ACT ノード サービス A 系クラスタグループ SBY ノード サービス LAN サービスB 仮想 IP ACT ノード サービス B 系クラスタグループ SBY ノード リソース A リソース A リソース B リソース B ハートビート LAN1 ハートビート LAN2 ハートビート LAN1 ハートビート LAN2 Linux-HA-Japan project 16
サービスA 仮想 IP ACT ノード サービス A 系クラスタグループ SBY ノード すべてのノードで サービス LAN ハートビート LAN は別経路が用意され それぞれの LAN は冗長化されているとします リソース A リソース A ハートビート LAN1 ハートビート LAN2 Linux-HA-Japan project 17
サービス A サービス B と 4 ノードで別々のサービスが提供されているクラスタグループを Xen により仮想化してサーバ統合する構成を考えます クライアント サービスA 仮想 IP ACT ノード サービス A 系クラスタグループ SBY ノード サービス LAN サービスB 仮想 IP ACT ノード サービス B 系クラスタグループ SBY ノード リソース A リソース A リソース B リソース B ハートビート LAN1 ハートビート LAN2 ハートビート LAN1 ハートビート LAN2 Linux-HA-Japan project 18
このターゲットで仮想化クラスタリングの HA 構成を考えてみました Linux-HA-Japan project 19
を各 Domain-U のゲスト OS にインストールし ノード間の Domain-U でハートビート通信を行い HA クラスタを構成します ACT 系 Domain-U サービス LAN Domain-0 ACT ノード Domain-U [ サービス A] リソース A Domain-U [ サービス B] リソース B リソース監視 Domain-0 SBY ノード Domain-U [ サービス A] リソース A Domain-U [ サービスB] リソースリソースB b リソースエージェント リソースエージェント リソースエージェント リソースエージェント ハートビート通信 ハートビート LAN Linux-HA-Japan project 20
リソース監視方法など 物理環境と同様にリソースの制御が実現できます! ACT 系 Domain-U Domain-0 ACT ノード Domain-U [ サービスA] リソースA Domain-U [ サービス B] リソース B リソースエージェント リソースエージェント ハートビート通信 Linux-HA-Japan project 21
サービス層であるリソース監視のみで 仮想マシン層である Domain-U の監視が行われていないが? ACT 系 Domain-U Domain-0 ACT ノード Domain-U [ サービスA] リソースA Domain-U [ サービスB] リソースB リソースエージェント リソースエージェント ハートビート通信 Linux-HA-Japan project 22
Domain-U が停止している またはホスト OS である Domain-0 が停止している場合は ハートビート通信断によりフェイルオーバ処理が行われます Domain-0 ACT ノード Domain-U [ サービスA] リソースA Domain-U [ サービスB] リソースB 構成に面白味は無いけど Domain-U を物理環境 ( ハードウェア ) とみなすシンプルな構成ですね! Domain-0 SBY ノード Domain-U [ サービス A] リソース A Domain-U [ サービスB] リソースリソースB b リソースエージェント リソースエージェント リソースエージェント リソースエージェント ハートビート通信断 ノード断 Linux-HA-Japan project 23
仮想化クラスタリングに適した ネットワークの構成を 考えてみました Linux-HA-Japan project 24
仮想ブリッジと bonding 構成 ネットワークの冗長化は Domain-0 で bonding を構成し 仮想ブリッジと接続することで実現可能です Domain-U は bonding と結び付けられている仮想ブリッジに接続させるだけで bonding による冗長化の効果を得ることができます ACT ノード bond0 Domain-U eth0 Domain-0 vif0.0 vif1.0 xenbr0 pbond0 eth0 eth1 外部ネットワーク ( サービス LAN) サービス LAN 側は この bonding 構成により冗長化します Linux-HA-Japan project 25
仮想化クラスタリングのネットワーク構成 ACT ノード SBY ノード サービス A Domain-U サービス B Domain-U bond0 Domain-0 eth2 eth3 eth0:0 eth0 eth1 eth2 eth0:0 eth0 eth1 eth2 xenbr0 pbond0 xenbr1 xenbr2 eth0 eth1 peth2 peth3 サービス LAN ハートビート LAN1 ハートビート LAN2 eth0 eth1 peth2 peth3 pbond0 xenbr1 xenbr2 Domain-0 xenbr0 bond0 eth2 eth3 eth0 eth1 eth2 eth0 eth1 eth2 サービス A Domain-U サービス B Domain-U Linux-HA-Japan project 26
サービス A Domain-U サービス B Domain-U Domain-U のサービス LAN 側インターフェース (eth0) ACTノードは bonding デバイス (pbond0) に接続している仮想ブリッジ xenbr0 に接続します eth0:0 eth0 eth1 eth2 eth0 eth1 eth2 bond0 eth2 eth3 eth0:0 Domain-0 xenbr0 pbond0 xenbr1 xenbr2 eth0 eth1 peth2 peth3 サービス LAN ハートビート LAN1 ハートビート LAN2 Linux-HA-Japan project 27
サービス提供用の仮想 IP IPアドレスは Domain-U の ACT から起動されるノード IPaddr リソースエージェントにより eth0 に付与します ( リソースエージェントにより eth0:0 が作成される ) サービス A Domain-U サービス B Domain-U Domain-0 サービスLAN ( リソースエージェントにより bond0 eth0:0 eth0 が作成される ) eth2 xenbr0 pbond0 eth3 eth1 eth0:0 eth0 eth1 eth2 eth0:0 eth0 eth1 eth2 xenbr1 xenbr2 peth2 peth3 ハートビート LAN1 ハートビート LAN2 Linux-HA-Japan project 28
サービス A Domain-U サービス B Domain-U ACT ノード 接続します Domain-0 bond0 eth0:0 eth0 eth1 eth2 eth0 eth1 eth2 eth2 eth3 eth0:0 ハートビート LAN は 物理環境と同じく 2 系統とするため 仮想ブリッジをさらに 2 系統 ( xenbr1,, xenbr2 ) 作成して 接続します xenbr1 xenbr0 pbond0 xenbr1 xenbr2 eth0 eth1 peth2 peth3 サービス LAN ハートビート LAN1 ハートビート LAN2 Linux-HA-Japan project 29
2 つの異なるクラスタグループで ハートビート LAN の物理線を共有するため ハートビート通信用 ACTノード UDP ポートを分け ブロードキャストパケットが混在しないようにする必要があります Domain-0 サービス A Domain-U サービス B Domain-U eth0:0 eth0 eth1 eth2 eth0 eth1 eth2 bond0 eth2 eth3 eth0:0 xenbr0 pbond0 xenbr1 xenbr2 eth0 eth1 peth2 peth3 サービス LAN ハートビート LAN1 ハートビート LAN2 Linux-HA-Japan project 30
ハートビート通信用ポートを変更するためには の基本設定ファイル (/etc/ha.d/ha.cf) に 異なるポート番号の設定が必要です サービス A: /etc/ha.d/ha.cf crm crmon on use_logd on on udpport 694 694 keepalive 2 warntime 20 20 deadtime 24 24 initdead 48 48 bcast eth1 eth1 bcast eth2 eth2 node srv-a01 node srv-a02 ハートビート LAN 用に異なるポート番号を設定します 同一ポート番号でも動作しますが ログに Warning が多数出力されます... サービス B: /etc/ha.d/ha.cf crm crmon on use_logd on on udpport 1694 keepalive 2 warntime 20 20 deadtime 24 24 initdead 48 48 bcast eth1 eth1 bcast eth2 eth2 node srv-b01 node srv-b02 Linux-HA-Japan project 31
仮想ネットワークの設定方法 ブリッジ作成用カスタムスクリプト (network-custom-hoge) を新規に作成します /etc/xen/scripts/network-custom-hoge の例 #!/bin/bash script=/etc/xen/scripts/network-bridge $script start vifnum=0 bridge=xenbr0 netdev=bond0 $script start vifnum=1 bridge=xenbr1 netdev=eth2 $script start vifnum=2 bridge=xenbr2 netdev=eth3 仮想ブリッジ xenbr0 に物理デバイス bond0 を関連付ける Linux-HA-Japan project 32
Xen デーモンの構成ファイル (xend-config.sxp) を修正して 作成したカスタムスクリプト (network-custom-hoge) を読み込ませるように設定します 設定後 Domain-0 を再起動させると新しい仮想ブリッジが作成されます /etc/xen/xend-config.sxp の修正箇所 #(network-script network-bridge) (network-script network-custom-hoge) 新規に作成したスクリプト名を記載する Xen 仮想ブリッジの作成方法は HA に特化した設定ではなく インターネット上では多数紹介されています! Linux-HA-Japan project 33
あとは 物理環境と同様に を設定して 起動するだけ! # service heartbeat start Starting High-Availability service: [OK] Linux-HA-Japan project 34
3 仮想化クラスタリング 応用構成編 Linux-HA-Japan project 35
仮想化クラスタリングでの STONITH 構成を 考えてみました Linux-HA-Japan project 36
STONITH とは? STONITH とは Shoot The Other Node In The Head の略であり 不具合のあるノードを強制的にそのノードをダウンさせる機能です コントロールが利かないノードを から STONITH プラグインを通じて 強制的に離脱 させることにより リソースの 2 重起動を防ぎます 確実にノードを強制離脱させるために サービスを提供する OS とは別経路の HW 制御ボード を用いた電源操作を推奨します Linux-HA-Japan project 37
HW 制御ボードの例 IBM 社 リモート管理アダプター Ⅱ SlimLine RSAⅡ System x 3650 ( 旧モデル ) 等にオプションで搭載が可能 Integrated Management Module IMM System x 3650 M2 ( 新モデル ) 等に標準搭載 HP 社 Integrated Lights-Out 2 ilo2 ProLiant DL380 G6 等に標準搭載 ilo2 Linux-HA-Japan project 38
フェイルオーバ時に STONITH 機能が発 動されるまでの流れ 1 1 フェイルオーバ時に ACT ノードのリソース停止処理が NG となる事象が発生 OS 1 停止失敗 ACT ノード リソース STONITH プラグイン 電源ユニット HW 制御ボード L2SW HW 制御ボード SBY ノード STONITH プラグイン 電源ユニット リソース OS Linux-HA-Japan project 39
フェイルオーバ時に STONITH 機能が発 動されるまでの流れ 2 2 検知した が SBY ノードの に状態を伝達 OS 1 停止失敗 ACT ノード リソース STONITH プラグイン HW 制御ボード 2 L2SW SBY ノード STONITH プラグイン HW 制御ボード リソース OS 電源ユニット 電源ユニット Linux-HA-Japan project 40
フェイルオーバ時に STONITH 機能が発 動されるまでの流れ 3 3 SBY ノードの が STONITH プラグインを通じ 故障発生サーバの HW 制御ボードを操作して強制電源断 OS 1 停止失敗 ACT ノード リソース STONITH プラグイン HW 制御ボード 2 L2SW 3 SBY ノード STONITH プラグイン HW 制御ボード リソース OS 電源ユニット 電源ユニット Linux-HA-Japan project 41
フェイルオーバ時に STONITH 機能が発 動されるまでの流れ 4 4 強制電源断成功後 リソースが起動 電源 OFF OS 1 停止失敗 ACT ノード リソース STONITH プラグイン HW 制御ボード 2 L2SW 3 SBY ノード STONITH プラグイン HW 制御ボード リソース OS 4 電源ユニット 電源ユニット Linux-HA-Japan project 42
STONITH プラグイン には 様々な HW 制御ボードに対応した STONITH プラグインが標準装備されています プラグインは シェルスクリプト Perl Python 等で作成されています HP ilo2 用プラグイン (/usr/lib64/stonith/plugins/external/riloe) IBM RSAⅡ 用プラグイン (/usr/lib64/stonith/plugins/external/ibmrsa-telnet) IPMI 用プラグイン (/usr/lib64/stonith/plugins/external/ipmi) IPMI IPMI とはとは サーバー プラットフォームの状態 (( 温度 電圧 ファン バスなど )) 監視や復旧 リモート制御を行うための標準インターフェイス仕様 Linux-HA-Japan project 43
xen0 STONITH プラグイン (/usr/lib64/stonith/plugins/external/xen0) HW 制御ボード操作の代わりに SSH 経由で xm destroyコマンドを Domain-0からDomain-Uの強制断を行うSTONITHプラグインが標準装備されています Domain-0 SSH ACT ノード Domain-U [srv-a01] 停止失敗 リソース STONITH プラグイン SSH で対向ノードの Domain-0 にログインして SBYノード xm destroy を実行 L2SW # xm destroy srv-a01 Domain-U [srv-a02] STONITH プラグイン リソース Linux-HA-Japan project 44
しかし Domain-0にSSHログイン不可な故障状態ならば STONITH 機能の発動ができないのでは? Linux-HA-Japan project 45
STONITH エスカレーション機能 SSH でログイン出来ない場合でも STONITH 機能拡張プラグインによるエスカレーション機能により HW 制御ボードを利用して強制離脱させる事が可能になります Linux-HA-Japan プロジェクトより機能拡張プラグインを 3 月公開予定!! Linux-HA-Japan project 46
1 仮想環境でのSTONITH 発動時 SSHで対向ノードへのログインが失敗 SSH でログイン失敗 ACT ノード SBY ノード Domain-0 Domain-U [srv-a01] Domain-U [srv-a02] SSH 停止失敗 STONITH 機能拡張プラグイン リソース L2SW STONITH 機能拡張プラグイン リソース HW 制御ボード HW 制御ボード 電源ユニット 電源ユニット Linux-HA-Japan project 47
2 SSHログインが失敗した場合 エスカレーション機能で物理環境と同様にHW 制御ボードを操作して強制電源断を行う HW 制御ボードを操作して強制電源断 SBYノード ACT ノード Domain-0 Domain-U [srv-a01] Domain-U [srv-a02] SSH 停止失敗 STONITH 機能拡張プラグイン リソース L2SW STONITH 機能拡張プラグイン リソース HW 制御ボード HW 制御ボード 電源ユニット 電源ユニット Linux-HA-Japan project 48
4 Linux-HA-Japan プロジェクトについて Linux-HA-Japan project 49
Linux-HA-Japan プロジェクトの経緯 ( ハートビート ) の日本における更なる普及展開を目的として 2007 年 10 月 5 日 Linux-HA () 日本語サイト を設立しました その後 日本での Linux-HA コミュニティ活動として -2.* の rpm バイナリと 機能追加パッケージを提供しています Linux-HA-Japan project 50
Linux-HA-Japan プロジェクト URL SourceForge.JP に開設中 http://sourceforge.jp/projects/linux-ha/ RHEL 用 -2.* rpm バイナリの提供や 機能追加パッケージ類を GPL ライセンスにて公開しています 共有ディスク排他制御機能 (SFEX) や ディスク監視デーモン等が提供中で これからも多数の追加パッケージ公開を予定しています Linux-HA-Japan project 51
本家 Linux-HA サイト http://www.linux-ha.org/wiki/main_page/ja Linux-HA-Japan プロジェクトのサイトとは 相互リンクを張っていきます Linux-HA-Japan project 52
の次期バージョンって どうなっているの? Linux-HA-Japan project 53
Pacemaker 2.x リソース制御部 Tengine CRM Pengine CCM RA 2.x 系のリソース制御部が Pacemaker として切り出されました Pacemaker CRM: Cluster Resource Manager Tengine: Transition Engine Pengine: Policy engine CCM: Cluster Consensus Membership RA: Resource Agent Linux-HA-Japan project 54
Corosync OpenAIS リソース制御部 クラスタ制御部 OpenAIS コミュニティによって開発されたクラスタソフトである OpenAIS のクラスタ制御部は Corosync として分離されました Corosync Linux-HA-Japan project 55
Pacemaker 単独で動作させるのではなく 複数のコンポーネントの組み合わせとして提供されます 開発コミュニティでは クラスタソフトウェア間でのコンポーネントの共通化を行い コミュニティを統合していくという流れになっています Pacemaker Pacemaker + Corosync Pacemaker 共通コンポーネント Corosync Pacemaker + 3.x Pacemaker 共通コンポーネント 3.x 現在開発中長期的には全てこちらに移行 2010/2/1 リリース済み大幅な機能改善はなし短期的な中継ぎの位置づけ Linux-HA-Japan project 56
HA クラスタ開発コミュニティの状況 ユーザが利用可能な HA クラスタ機能 SUSE 主導 RedHat 主導 2.1.4 OpenAIS コミュニティ 2.1.4 SLES11 HAE 1 Pacemaker コミュニティ Pacemaker 1.0.4 2.99.2 コミュニティ OpenAIS 0.80.5 OpenAIS 1.1.1 Corosync 1.2.0 agents, glue 2.99.2 Pacemaker + Corosync ( 開発版 ) Pacemaker 1.0.7 2010 年 2 月時点 Pacemaker + agents, glue 1.0.2 3.0.2 Pacemaker + Corosync Pacemaker 1.0.x Corosync 1.2.x RedHat 主導 LINBIT 主導 RedHat 主導 RedHat Cluster コミュニティ 1 SUSE Linux Enterprise Server 11 High Availability Extension 2 RedHat Cluster Suite Cluster 3 Cluster 3.x RHCS 6 2 RHCS 6.x 2 Linux-HA-Japan project 57
Pacemaker ロゴアンケート実施中 Linux-HA-Japan プロジェクトでは 次期クラスタソフトウェア Pacemaker のロゴを作成中です 投票サイトに5つ案を載せましたので どれが良いか皆さんの投票をお待ちしています! ロゴの案 紹介ページ http://sourceforge.jp/projects/linux-ha/wiki/pm_logo アンケートページ アンケート実施期間 2010 年 3 月 1 日まで http://www.efeel.to/survey/linux-ha-japan-logo/ Linux-HA-Japan project 58
Linux-HA-Japan メーリングリスト 日本における についての活発な意見交換の場として Linux-HA-Japan 日本語メーリングリスト も開設しています Linux-HA-Japan ML では Pacemaker 3.0 Corosync その他 DRBD など HA クラスタに関連する話題は全て歓迎します! ML 登録用 URL http://lists.sourceforge.jp/mailman/listinfo/linux-ha-japan ML アドレス linux-ha-japan@lists.sourceforge.jp Linux-HA-Japan project 59
さいごに Linux-HA-Japan project 60
Linux-HA-Japanプロジェクトでは様々な 設定例や追加パッケージなどのコンテンツを載せていき Linux-HA-Japan project 61
や次期クラスタソフトPacemaker Corosyncの普及展開を推し進めます Linux-HA-Japan project 62
ぜひメーリングリストに登録して HAクラスタの活発な意見交換を交わしましょう! Linux-HA-Japan project 63
Linux-HA-Japan 検索 http://sourceforge.jp/projects/linux-ha/ Linux-HA-Japan project 64
5 参考情報 Linux-HA-Japan project 65
のインストール方法は? CentOS5 系 (RHEL5 系 ) ならば インストールは簡単! -2.1.4-1 の rpm パッケージを Linux-HA-Japan プロジェクトからダウンロード heartbeat-2.1.4-1.rhel5.x86_64.rpms.tar.gz heartbeat-2.1.4-1.x86_64.rpm stonith-2.1.4-1.x86_64.rpm pils-2.1.4-1.x86_64.rpm 用ユーザ / グループの設定 グループ : haclient / gid:90 ユーザ名 : hacluster / uid:90 上記 Tarball には他 rpm ファイルもありますが 最低限これだけを入れれば OK! ダウンロードした rpm ファイルを rpm コマンドでインストール Linux-HA-Japan project 66
Linux-HA-Japan プロジェクト提供の rpm ダウンロードサイト http://sourceforge.jp/projects/linux-ha/releases/?package_id=10606 Linux-HA-Japan project 67
の設定方法は? /etc/ha.d/ha.cf の基本的な動作情報 クラスタ内の全ノードに同じ内容のファイルを配置 crm crmon on use_logd on on udpport 694 694 keepalive 2 warntime 20 20 deadtime 24 24 initdead 48 48 bcast eth1 eth1 bcast eth2 eth2 node srv01 node srv02 ー Ver.2 モードで動作させるー log logデーモンを使ってログを出力ーハートビート通信にポート 694 694を使用ーハートビート間隔を 2 秒に設定ー警告発信用ハートビート不通時間を 20 20 秒に設定ーノードが死んだと判断する時間を 24 24 秒に設定ー node で指定された全ノードの起動を待つ時間を 48 48 秒に設定ハートビート通信に bcast を使用し I/F I/Fに eth1,eth2 を使用クラスタを構成するノード名が srv01 srv02 Linux-HA-Japan project 68
/etc/logd.cf のログ出力先を指定 クラスタ内の全ノードに 同じ内容のファイルを配置 /etc/ha.d/authkeys クラスタを構成する認証キーを保持するファイル 認証キーが同じノード群でクラスタを構成 クラスタ内の全ノードに 同じ内容のファイルを配置 Linux-HA-Japan project 69
/var/lib/heartbeat/crm/cib.xml cib.xml = 主に リソースの定義を設定するxmlファイル どのようなリソースをどのように扱うか 起動 監視 停止時に関連する時間 リソースの配置などを指定 cib.xml の記法 (DTD) を知る必要があり難しい...... <constraints> (.. (.. 略..)..) <rsc_location id="rul_dk_dsc" rsc="grp_pgsql"> <rule <rule id="prefered_rul_dk_dsc" score="-infinity" boolean_op="and"> <expression attribute="diskcheck_status" id="dkstatus1" operation="defined"/> <expression attribute="diskcheck_status" id="dkstatus2" operation="eq" value="error"/> </rule> </rule> </rsc_location> (.. (.. 略..)..) </constraints> Linux-HA-Japan project 70
cib.xml はもう恐くない! 複雑な XML 形式の設定も hb-cibgen で解決! Ver.2 では DBMS 等のリソース構成や動作は cib.xml で記述します この cib.xml が複雑なので なかなか手が出せないという声がありました hb-cibgen を使用すれば Excel ファイルから cib.xml を簡単に生成する事が可能です Linux-HA-Japan project 71
cib.xml 編集ツールを使おう! hb-cibgen のパッケージ (zip ファイル ) を Linux-HA-Japan プロジェクトのサイトからダウンロード hb-cibgen-1.03-1_1-noarch.zip hb-cibgen-1.03-1.noarch.rpm hb_cibgen 本体 hb_cibgen_env_1.03-1_1.xls テンプレートファイル (Excel 形式 ) hb-cibgen 本体の rpm ファイルを rpm コマンドでインストール 1 テンプレート作成 2csv ファイル作成 3hb_cibgen コマンド実行により 簡単に xml ファイルが生成可能! Linux-HA-Japan project 72
詳しくは cib.xml 編集ツールの 公開 wiki を参照しましょう! http://sourceforge.jp/projects/linux-ha/wiki/hb-cibgen Linux-HA-Japan project 73
Xen リソースエージェント (/usr/lib/ocf/resource.d/heartbeat/xen) Domain-0から 標準の Xen リソースエージェントを使用して仮想マシンを監視させることができますが サービス LAN ACT 系 Domain-U Domain-0 リソースエージェント (Xen) ACT ノード Domain-U [ サービス A] リソース A Domain-U [ サービス B] リソース B 仮想マシン監視 Domain-0 リソースエージェント (Xen) SBY ノード Domain-U [ サービス A] リソース A Domain-U [ サービスB] リソースリソースB b ハートビート通信 ハートビート LAN Linux-HA-Japan project 74
このリソースエージェントによる監視では Domain-0 から xm list コマンドの結果を参照するのみなので Domain-U 内の詳細な稼動状態がわからない Xen リソースエージェント監視 (monitor) 処理の抜粋 #!/bin/sh ( 省略省略 ) # we we have have Xen Xen 3.0.3 or or lower STATUS=`xm list list --long $1 $1 2>/dev/null grep grep state 2>/dev/null` echo echo "${STATUS}" grep grep -qs -qs "[-r][-b][-p]---" if if [ $? $? -ne -ne 0 ]; ]; then then return $OCF_NOT_RUNNING xm xmlist の結果から Domain-U が が else else r r (running), b (blocked), p (paused) return $OCF_SUCCESS かどうかの状態しか判断していない fi fi ( 省略省略 ) Linux-HA-Japan project 75
ACT 系 Domain-U 仮想マシン内が異常であるかどうかは Domain-0 のレイヤからは検出できない Domain-0 リソースエージェント (Xen) ACT ノード Domain-U [ サービス A] Domain-U [ サービス B] リソースA リソースB?? ハートビート通信 Linux-HA-Japan project 76
監視対象は ACT 系 Domain-U の仮想マシンであり Domain-U 内のリソース監視を行うことができない ACT 系 Domain-U Domain-0 リソースエージェント (Xen) ACT ノード Domain-U [ サービス A] Domain-U [ サービス B] リソース? A リソース? B 仮想マシンを 仮想マシンをいちリソースとみなす構成 これでは高可用性のシステムは構築できませんね ムは構築できませんね ハートビート通信 Linux-HA-Japan project 77
デバイス一括監視機能 Domain-U のディスク I/O 処理は Xen Hyperviosr と Domain-0 経由のため Domain-U のゲスト OS からではディスク故障検出ができない場合がありました デバイス一括監視機能は ホスト OS の Domain-0 にディスクや ping 監視機能を搭載する事が可能なため 故障検出をより確実に行うことが可能になります Linux-HA-Japan プロジェクトより 3 月公開予定!! Linux-HA-Japan project 78
デバイス一括監視機能による 内蔵ディスク監視の例 Domain-0 デバイス一括監視機能 ディスク監視 ACT ノード Domain-U [ サービス A] リソース A 故障を検出した場合は 各 Domain-U の へ故障情報を通知する Domain-U [ サービス B] リソース B Xen Hyperviosr 内蔵ディスク Domain-0 からディスク監視を行う Linux-HA-Japan project 79