痛い目にあってわかる HAクラスタのありがたさ

6,224 views

Published on

OSC 2010 島根
Flash -> http://linux-ha.sourceforge.jp/wp/archives/693

Published in: Technology
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,224
On SlideShare
0
From Embeds
0
Number of Embeds
102
Actions
Shares
0
Downloads
60
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide

痛い目にあってわかる HAクラスタのありがたさ

  1. 1. 痛い目にあってわかる HAクラスタのありがたさ ~Pacemakerで心に安らぎを~ 2010年11月27日 OSC2010 Shimane Linux-HA Japan 松尾 隆利 Linux-HA Japan Project 1
  2. 2. 本日のお話 ① ② ③ ④ ⑤ ⑥ HAクラスタって何?Pacemakerって何? システム基本構成 Pacemakerの基本動作 Pacemakerのコンポーネント構成 Pacemakerでクラスタリングに挑戦! Linux-HA Japan について Linux-HA Japan Project 2
  3. 3. ① HAクラスタって何? Pacemakerって何? Linux-HA Japan Project 3
  4. 4. コンピュータの世界で クラスタというと 複数のコンピュータを結合し、 複数のコンピュータを結合し、 果実・花などの房のように 果実・花などの房のように ひとまとまりとしたシステムのこと ひとまとまりとしたシステムのこと (Wikipediaより) (Wikipediaより) HAクラスタ HPC並列クラスタ 負荷分散クラスタ ・・・・ Linux-HA Japan Project 4
  5. 5. さらにHAクラスタ クラスタというと High Availability = 高可用性 壊れにくさ つまり 一台のコンピュータでは得られない 一台のコンピュータでは得られない 高い信頼性を狙うために、 高い信頼性を狙うために、 複数のコンピュータを結合し、 複数のコンピュータを結合し、 ひとまとまりとしたシステムのこと ひとまとまりとしたシステムのこと Linux-HA Japan Project 5
  6. 6. 今回題材の も このHAクラスタ という部類のソフトウェアで、 実績のある「Heartbeat」と 「Heartbeat」 呼ばれていたHAクラスタの 後継ソフトウェアです Linux-HA Japan Project 6
  7. 7. ここで少し質問 Pacemaker は すでにご存知ですか? Linux-HA Japan Project 7
  8. 8. 同じくHAクラスタである Heartbeatバージョンは 知っていますか? Linux-HA Japan Project 8
  9. 9. 「Pacemaker」 は 「Heartbeat」の 後継というだけあって、 密接な関係があります。 詳細は後ほどお話します。 Linux-HA Japan Project 9
  10. 10. ② システム基本構成 Linux-HA Japan Project 10
  11. 11. 基本構成 Active/Standby(1+1)構成 通常はActiveノードと呼ばれるサーバでサービスを提供 します Activeノードが故障した場合は、StandbyノードがActiveになり サービスを引き継ぎます。 これをフェイルオーバと呼びます。 ユーザ ユーザ LAN Active Active Standby 故障 故障発生 Linux-HA Japan Project フェイル オーバ 11
  12. 12. Pacemakerでは複数台構成も可能 ※ Heartbeatバージョン1では実現できませんでした 複数台のActiveノードや、 複数台のStandbyノードを設定可能です。 (N+M構成) Active2 を フェイルオーバ 2+1構成例 Active1 Active2 Active1 Standby Active2 故障 Active2に 故障発生 Linux-HA Japan Project 12
  13. 13. 今回は、 話を単純にするために、 Active / Standby (1+1構成) の構成を例に話を進めます Linux-HA Japan Project 13
  14. 14. ③ Pacemakerの基本動作 Linux-HA Japan Project 14
  15. 15. Pacemaker 基本動作は主にこの二つ 1. ノード監視 2. リソース制御 Linux-HA Japan Project 15
  16. 16. 基本動作1: ノード監視 相手ノードの生死を確認するために、一定間隔で相手ノー ドを監視します (ハートビート通信と呼ぶ) 相手ノードと通信できなくなった場合に、相手はダウンした と判断し、フェイルオーバなどのクラスタ制御の処理を行 います。 Activeノード 生きてる 生きてる? Pacemaker Standbyノード Activeノード Standbyノード 元気だよ! 元気だよ! Pacemaker ハートビートLAN とか ハートビート ハートビートLAN とか ハートビート インターコネクトLAN と呼ぶ インターコネクト インターコネクトLAN と呼ぶ インターコネクト Linux-HA Japan Project 故障 Pacemaker Pacemaker あれ?応答なし! ⇒ノード断 16
  17. 17. 基本動作2: リソース制御 リソースと呼ばれる物をリソースエージェント(RA)を介して 起動(start)、停止(stop)、監視(monitor)します リソースが故障した場合にはフェイルオーバといったリソー ス制御の処理を行います。 Activeノード Standbyノード Activeノード リソース リソース リソース リソース RA RA RA Pacemaker Pacemaker Pacemaker OKで OKで 生き RA す! てるか い? Pacemaker 故障 リソースが 壊れたな・・ Linux-HA Japan Project Standbyノード 起動! リソースをStandby側で起 リソースをStandby側で起 Standby 動してサービス継続し! 17
  18. 18. 「リソース」って何? Pacemakerではよく出てくる Pacemakerではよく出てくる 言葉なのでおぼえてください! 言葉なのでおぼえてください! ・ ノード間でサービスを引き継ぐために 制御が必要なもの ・ サービスの故障を検知するのに監視が 必要なもの Linux-HA Japan Project 18
  19. 19. リソースの例 目的 アプリケーション動作引継ぎ データの引継ぎ IPの引継ぎ ディスクやネットワーク異常監視 リソース アプリケーションそのもの ファイルシステム IPアドレス ディスク監視アプリ, ネットワーク監視アプリ ネットワークスイッチ IP : 192.168.0.10 ディスク Active ディスク mount Standby 共有ディスクやNFSサーバ データ Linux-HA Japan Project 19
  20. 20. 「リソースエージェント(RA)」とは? リソースとPacemakerを仲介するプログラム。 主にシェルスクリプトで記述。 Activeノード Pacemakerは、 リソースエージェントに対し リソースの 起動(start) 停止(stop) 監視(monitor) を指示 Linux-HA Japan Project Pacemaker PostgreSQL用 PostgreSQL用 RA 起動 監視 停止 リソース例 PostgreSQL 20
  21. 21. (例)Pacemaker と PostgreSQLリソース エージェントの関係 Pacemaker Pacemaker PostgreSQL用 PostgreSQL用 リソースエージェント リソースエージェント (pgsql) (pgsql) start OK/NG スタート制御 pgsql_start() monitor OK/NG 状態監視 pgsql_monitor() stop OK/NG ストップ制御 pgsql_stop() Linux-HA Japan Project PostgreSQL 用のコマンド 等に変換 リソース リソース PostgreSQL PostgreSQL pg_ctl start OK/NG select now(); OK/NG pg_ctl stop OK/NG 21
  22. 22. Pacemakerでは、様々なリソースエージェントが 用意されています。 Heartbeat2用に作成さ 従来の Heartbeat2用に作成さ 標準リソースエージェントの一例 目的 Heartbeat2用に作成さ 従来の Heartbeat2用に作成さ れたRA も使用が可能 RAも使用が可能 れたRAも使用が可能 れたRA RAも使用が可能 れたRA リソースエージェント名 リソース アプリケーション動作 PostgreSQL の引継ぎ Apache, Tomcat データ引継ぎ ファイルシステム IPの引継ぎ IPアドレス 異常監視 ディスク ネットワーク (/usr/lib/ocf/resource.d/ に存在) pgsql apache, tomcat, Filesystem (複数のファイルシステムに対応) IPaddr, IPaddr2 diskd (Linux-HA Japan提供) pingd シェルスクリプトなので自作することも可能 Linux-HA Japan Project 22
  23. 23. ④ Pacemakerの コンポーネント構成 Linux-HA Japan Project 23
  24. 24. Pacemaker のコンポーネント構成は 少々複雑 Linux-HA Japan Project 24
  25. 25. リソース制御部 : Pacemaker Heartbeat2 Heartbeat2 リソース制御部 Tengine CRM Pengine クラスタ制御部 CCM CRM: Tengine: Pengine: CCM: RA: RA 他のクラスタソフトウェア間とのコン ポーネントの共通化のために、 Heartbeat2のリソース制御部が Pacemakerとして切り出されました Pacemaker Cluster Resource Manager ※リソース制御機能は主にこの Transition Engine Policy engine コンポーネントに含まれる Cluster Consensus Membership Linux-HA Japan Project Resource Agent 25
  26. 26. HAクラスタとして動作させるには、 クラスタ制御部が必要になります Heartbeat2 リソース制御部 Tengine CRM Pengine クラスタ制御部 CCM RA Linux-HA Japan Project 26
  27. 27. クラスタ制御部 候補1 : Heartbeat3 Heartbeat2 リソース制御部 Tengine CRM Pengine クラスタ制御部 CCM Heartbeat2の クラスタ制御部が、 Heartbeat3 として切り 出されました RA Heartbeat3 ※ノード監視は主にこちらのコンポーネント に含まれる Linux-HA Japan Project 27
  28. 28. クラスタ制御部 候補2 : Corosync OpenAIS リソース制御部 “OpenAIS”というオープンソースの HAクラスタがあり、 このクラスタ制御部が Corosyncとして切り出されました クラスタ制御部 Corosync Linux-HA Japan Project 28
  29. 29. Pacemaker は この「Heartbeat3」と「Corosync」 2つのクラスタ制御部が 選択可能 Linux-HA Japan Project 29
  30. 30. Linux-HA Japanでは コンポーネント組み合わせ オープンソースのHAクラスタはこ のように複数のコンポーネントの 組み合わせとして提供されるよう になりました。 Heartbeat2 Heartbeat2 Pacemaker Heartbeat3 Heartbeat3 Pacemaker と呼ぶ Pacemaker + Heartbeat3 リソース 制御部 クラスタ 制御部 Pacemaker + Corosync リソース 制御部 クラスタ 制御部 OpenAIS + Corosync OpenAIS OpenAIS Corosync Linux-HA Japan Project リソース 制御部 クラスタ 制御部 30
  31. 31. Heartbeat3 と Corosync どちらのクラスタ制御部が 優れているの? Linux-HA Japan Project 31
  32. 32. Heartbeat3 のメリット・デメリット メリット 安定 Heartbeat2系のクラスタ制御部を引き継いでいるため、こ れまでの使用方法ならば実績と安定性がある デメリット 多ノード構成に向いていない リソース数にもよるが、7ノードくらいが限界 ハートビートLAN切断時(スプリットブレイン) に弱い スプリットブレイン時の復旧手順がやや複雑 クォーラム制御(3ノード以上時に使用)が不安定 オンラインによるノード追加・削除時の動作が不安定 Linux-HA Japan Project 32
  33. 33. Corosync のメリット・デメリット メリット 多ノード構成に向いている 11ノードで動いた! 次期バージョンでは16ノード以上でも動くという情報も。 ノード故障検出時間が短い スプリットブレイン回復時の動作が安定 オンラインによるノード追加・削除時の動作が安定 デメリット 開発途上で不安定 頻繁にバグフィックス版がリリース Linux-HA Japan Project 33
  34. 34. ⑤ Pacemakerでクラスタリングに挑戦! ~ CentOS 5.5 x86_64 ~ Linux-HA Japan Project 34
  35. 35. インストール方法の種類 1. yum を使ってネットワークインストール Pacemaker本家(clusterlabs) の yumのリポジトリを使用 インターネット接続必須 2. ローカルリポジトリ + yum を使ってインストール Linux-HA Japan 提供のローカルリポジトリを使用 Linux-HA Japan オリジナルパッケージ含む インターネット接続は必須ではない 3. rpm を手動でインストール rpmを個別にダウンロードする必要あり。少し手間がかかる。 4. ソースからインストール 最新の機能をいち早く試せます コンポーネントが多いので、コンパイルは結構面倒 Linux-HA Japan Project 35
  36. 36. Pacemaker rpmパッケージ 2010年11月19日現在公開されているHAクラスタを構築するのに 必要なRHEL5, CentOS5 x86_64用のrpmパッケージ 計9個 pacemaker-1.0.10-1.4.el5.x86_64.rpm pacemaker-libs-1.0.10-1.4.el5.x86_64.rpm corosync-1.2.7-1.1.el5.x86_64.rpm corosynclib-1.2.7-1.1.el5.x86_64.rpm cluster-glue-1.0.6-1.el5.x86_64.rpm cluster-glue-libs-1.0.6-1.el5.x86_64.rpm resource-agents-1.0.3-2.6.el5.x86_64.rpm heartbeat-3.0.3-2.3.el5.x86_64.rpm heartbeat-libs-3.0.3-2.3.el5.x86_64.rpm Linux-HA Japan Project 11/12 に 1.0.10 が 11/12 に 1.0.10 が リリースされました! リリースされました! Corosync、Heartbeat3ど Corosync、Heartbeat3ど Corosync、Heartbeat3ど Corosync、Heartbeat3ど ちらのクラスタ制御部を ちらのクラスタ制御部を 使用する場合でも、 使用する場合でも、 インストールするrpm パッ rpmパッ インストールするrpmパッ インストールするrpm rpmパッ インストールするrpm ケージは同じです ケージは同じです 36
  37. 37. インストール方法 その1 ~ yum を使ってネットワークインストール ~ (インターネット接続環境必須) 1 . epel yumリポジトリを設定 CentOS付属のパッケージに足らないrpmパッケージを補うために Fedoraプロジェクトで提供しているyumレポジトリを設定 # wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel# wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epelrelease-5-4.noarch.rpm release-5-4.noarch.rpm # rpm -ivh epel-release-5-4.noarch.rpm # rpm -ivh epel-release-5-4.noarch.rpm Linux-HA Japan Project 37
  38. 38. ~ yum を使ってネットワークインストール ~ 2. Pacemaker本家のyumリポジトリを設定 clusterlabs.org からyumの設定ファイルであるrepoファイルを ダウンロード、配置 # cd /etc/yum.repo.d ← yum設定用ディレクトリ # cd /etc/yum.repo.d ← yum設定用ディレクトリ # wget http://clusterlabs.org/rpm/epel-5/clusterlabs.repo # wget http://clusterlabs.org/rpm/epel-5/clusterlabs.repo Linux-HA Japan Project 38
  39. 39. ~ yum を使ってネットワークインストール ~ 3. インストール これだけでインストール これだけでインストール は完了! は完了! # yum install pacemaker.x86_64 # yum install pacemaker.x86_64 rpmの依存関係で以下のパッケージもダウンロード・自動的にインストールされます。 pacemaker-libs (clusterlabs) corosync (clusterlabs) corosynclib (clusterlabs) cluster-glue (clusterlabs) cluster-glue-libs (clusterlabs) resource-agents (clusterlabs) heartbeat (clusterlabs) heartbeat-libs (clusterlabs) libesmtp (epel) Linux-HA Japan Project 39
  40. 40. インストール方法 その2 ~ ローカルリポジトリ + yum を使ってインストール ~ (サーバにインターネット接続環境がなくてもOK) 1. Pacemaker ローカルリポジトリをダウンロード Linux-HA Japan 提供の Pacemaker ローカルリポジトリを ダウンロードします。 pacemaker-1.0.10-1.4.1.el5.x86_64.repo.tar.gz をダウンロード Pacemaker-1.0.10 版は Pacemaker-1.0.10 版は 昨日(11/26) リリース 昨日 昨日(11/26) リリース 昨日 Linux-HA Japan Project 40
  41. 41. ~ ローカルリポジトリ + yum を使ってインストール ~ 2. Pacemaker リポジトリパッケージを展開 # cd /tmp ← /tmp に展開にすることを前提にローカルリポジトリを作っています # cd /tmp ← /tmp に展開にすることを前提にローカルリポジトリを作っています # tar zxvf /・・・/・・・/pacemaker-1.0.10-1.4.1.el5.x86_64.repo.tar.gz # tar zxvf /・・・/・・・/pacemaker-1.0.10-1.4.1.el5.x86_64.repo.tar.gz 3. yumでローカルからインストール! # cd pacemaker-1.0.10-1.4.1.el5.x86_64.repo # cd pacemaker-1.0.10-1.4.1.el5.x86_64.repo # yum –c pacemaker.repo install pacemaker # yum –c pacemaker.repo install pacemaker ※Linux-HA Japan オリジナルパッケージは別途yumで指 定してインストールしてください pm_crmgen-1.0-1.el5.noarch.rpm ・・・ crm用設定ファイル編集ツール pm_diskd-1.0-1.el5.x86_64.rpm ・・・ ディスク監視アプリとRA pm_logconv-hb-1.0-1.el5.noarch.rpm ・・・ ログ変換ツール pm_extras-1.0-1.el5.x86_64.rpm Linux-HA Japan その他オリジナルRA 等 ・・・ Project 41
  42. 42. 注意 RHEL 5.5 や CentOS 5.5 に付属している libxml2 ではタイミングによってPacemakerが 正常に動作しないバグがありました。 libxml2-2.6.26-2.1.2.8.el5_5.1 修正されているので、 で修正されているので、 アップデートすることをお勧めします。 詳細 : https://rhn.redhat.com/errata/RHBA-2010-0764.html Linux-HA Japan Project 42
  43. 43. Pacemakerの設定に挑戦! ~ Pacemaker + Heartbeat3 ~ Linux-HA Japan Project 43
  44. 44. Pacemaker では 「クラスタ制御部」 「リソース制御部」 それぞれの設定が必要 リソース制御部 [ Pacemaker ] クラスタ制御部 [ Heartbeat3 ] Linux-HA Japan Project 44
  45. 45. クラスタ制御部の設定 /etc/ha.d/ha.cf クラスタ制御部の基本設定ファイル クラスタ内の全ノードに同じ内容のファイルを設置 pacemaker on pacemaker on debug 0 debug 0 udpport 694 udpport 694 keepalive 2 keepalive 2 warntime 20 warntime 20 deadtime 24 deadtime 24 initdead 48 initdead 48 logfacility local1 logfacility local1 基本的に Heartbeat2 の 基本的に Heartbeat2 の ha.cfと設定は同じ ha.cfと設定は同じ 従来の「crm on」から「pacemaker on」に 変更となります bcast eth1 bcast eth1 bcast eth3 bcast eth3 eth1 node pm01 node pm01 node pm02 node pm02 watchdog /dev/watchdog watchdog /dev/watchdog eth3 pm01 Linux-HA Japan Project pm02 45
  46. 46. クラスタ制御部の設定 /etc/ha.d/authkeys ノード間の「認証キー」を設定するファイル クラスタ内の全ノードに、同じ内容のファイルを配置 所有ユーザ/グループ・パーミッションは root/root ・ rw---- に設定 これも基本的に これも基本的に Heartbeat2 と Heartbeat2 と 設定は同じです 設定は同じです auth 1 auth 1 1 sha1 oscshimane 1 sha1 oscshimane 認証キー:任意の文字列 認証キーの計算方法:sha1, md5, crcを指定可 Linux-HA Japan Project 46
  47. 47. クラスタ制御部の設定 /etc/syslog.conf 必須の設定ではないが、多くのログが /var/log/messagesに出力されるため 出力先を個別のファイルに変更するのがお勧め 以下は /var/log/ha-log への出力例 *.info;mail.none;authpriv.none;cron.none;local1.none *.info;mail.none;authpriv.none;cron.none;local1.none /var/log/messages /var/log/messages :: (省略) (省略) :: local1.* /var/log/ha-log local1.* /var/log/ha-log ha.cf で設定したlogfacility 名 Linux-HA Japan Project 47
  48. 48. これでとりあえず Pacemakerのクラスタ制御部が 起動します! # /etc/init.d/heartbeat start # /etc/init.d/heartbeat start Starting High-Availability services: Starting High-Availability services: Linux-HA Japan Project ← 2ノードで実行 ← 2ノードで実行 [[ OK ]] OK 48
  49. 49. 起動確認 Pacemakerの状態表示コマンド crm_monコマンドを利用 # crm_mon # crm_mon ============ ============ Last updated: Wed Nov 10 14:28:55 2010 Last updated: Wed Nov 10 14:28:55 2010 Stack: Heartbeat Stack: Heartbeat Current DC: pm02 (a59a9306-d6e7-4357-bb0c-a5aea0615e61) --partition Current DC: pm02 (a59a9306-d6e7-4357-bb0c-a5aea0615e61) partition with quorum with quorum Version: 1.0.10-89bd754939df5150de7cd76835f98fe90851b677 Version: 1.0.10-89bd754939df5150de7cd76835f98fe90851b677 2 Nodes configured, unknown expected votes 2 Nodes configured, unknown expected votes 0 Resources configured. 0 Resources configured. ============ ============ Online: [ [pm02 pm01 ] ] Online: pm02 pm01 クラスタに組み込まれている クラスタに組み込まれている ノード名(ホスト名)が表示されます ノード名(ホスト名)が表示されます Linux-HA Japan Project Linux-HA Japan Project 49 49
  50. 50. しかしこれだけでは、 リソース制御部の設定が無いので リソースは なにも起動していません… Linux-HA Japan Project 50
  51. 51. リソース制御部の設定 計画 リソース制御するには事前に計画が必要 リソースの選択 Apache、PostgreSQL、NW監視など、何を使用するか? リソースエージェント(RA)がなければ、予め自作が必要。 リソースの動作の定義 リソースの監視(monitor)間隔は何秒にするか?タイムアウトは? 故障時はどのように動作させるか? リソースエージェント(RA)に与えるパラメータは? リソース配置・連携の定義 リソースをどのノードで起動させるか? リソースの起動順番は? Linux-HA Japan Project 51
  52. 52. リソース制御部の設定 設定方法 主に2通り crmコマンドで設定 Pacemakerからの新機能 cib.xml ファイルにXML形式で設定を記述 従来のHeartbeat 2での方法 xml を手で書く必要があり、結構面倒 Linux-HA Japan Project 52
  53. 53. リソース制御部の設定 crm コマンド 階層構造をもったコマンドラインインターフェイス 設定だけでなく、Pacemakerの状態把握や管理も可能 TABキーで入力内容の補完可能 crm サブコマンド resource node options configure status help exit show : クラスタのリソース管理を行います cleanup status : クラスタのノード管理を行います standby show : crmコマンドの設定を行います edit load リソースの管理を行います : commit クラスタの状態を表示します crmコマンドのサブコマンドを表示します crmコマンドを終了します 53 Linux-HA Japan Project
  54. 54. crmコマンドで、 仮想IPアドレス + Apache のリソース設定に挑戦! ※apacheはインストール済み前提 仮想IP 仮想 : 172.20.24.110 Apache ネットワークスイッチ eth0 eth0 仮想IP 仮想 : 172.20.24.110 Apache eth1 eth3 ホスト名 : pm01 スト名 ホスト名 : pm02 スト名 Linux-HA Japan Project 54
  55. 55. リソース制御部の設定 crmコマンド : 実行 crmコマンドを起動し、リソース設定モードに入り ます # crm # crm crm(live)# configure crm(live)# configure crm(live)configure# crm(live)configure# ← ここから設定を入力していく ← ここから設定を入力していく サブコマンドを同時に指定することで、 一気にリソース設定モードに入ることも可能 # crm configure # crm configure crm(live)configure# crm(live)configure# Linux-HA Japan Project 55
  56. 56. リソース制御部の設定 crm コマンド : 基本動作設定 クォーラムの設定 2ノードでは基本的にignoreを設定 STONITH設定 今回は設定例を簡単にするために無効(false)に設定 商用環境では有効にし、STONITHを設定することを 推奨 crm(live)configure# property no-quorum-policy="ignore" ¥ crm(live)configure# property no-quorum-policy="ignore" ¥ stonith-enabled="false" ¥ stonith-enabled="false" ¥ startup-fencing="false" startup-fencing="false" Linux-HA Japan Project 56
  57. 57. リソース制御部の設定 crm コマンド : 仮想IPアドレス設定 仮想IPアドレスを制御するリソースエージェント 「IPaddr2」のリソース設定を行います 仮想IPのリソースIDを 「MyIp」とします (任意の文字列) crm(live)configure# primitive MyIp ocf:heartbeat:IPaddr2 ¥ crm(live)configure# primitive MyIp ocf:heartbeat:IPaddr2 ¥ params ¥ params ¥ ip="172.20.24.110""¥ ip="172.20.24.110 ¥ IPaddr2に渡す nic="eth0" ¥ nic="eth0" ¥ パラメータ cidr_netmask="24” ¥ cidr_netmask="24” ¥ op start interval="0s" timeout="60s" on-fail="restart" ¥ 監視間隔や op start interval="0s" timeout="60s" on-fail="restart" ¥ op monitor interval="10s" timeout="60s" on-fail="restart" ¥ タイムアウト op monitor interval="10s" timeout="60s" on-fail="restart" ¥ 故障時の動作 op stop interval="0s" timeout="60s" on-fail="block" op stop interval="0s" timeout="60s" on-fail="block" Linux-HA Japan Project 57
  58. 58. リソース制御部の設定 リソースの種類 Primitive Primitive Primitive Primitive 全てのリソース定義の基礎。 全てのリソース定義の基礎。 どこか一つのノードで動作させ、 どこか一つのノードで動作させ、 故障時にフェイルオーバさせたい 故障時にフェイルオーバさせたい リソースに使用。 リソースに使用。 (例) PostgreSQL, IPアドレス (例) PostgreSQL, IPアドレス Clone Clone フェイルオーバ Clone Clone Master / Slave Master Slave Slave Linux-HA Japan Project 複数のノードで動作させたいリソース 複数のノードで動作させたいリソース に使用。Primitive を に使用。Primitive を 定義した後に Clone化する。 定義した後に Clone化する。 (例) NW監視, ディスク監視 (例) NW監視, ディスク監視 複数のノードで動作させ、親子関係 複数のノードで動作させ、親子関係 のあるリソースに使用。Primitive を のあるリソースに使用。Primitive を 定義した後にMaseter/Slave化する。 定義した後にMaseter/Slave化する。 RAには、Masterに昇格、Slaveに降 RAには、Masterに昇格、Slaveに降 格させる関数の実装が必要 格させる関数の実装が必要 (例) DRBD 58 (例) DRBD
  59. 59. リソース制御部の設定 crm コマンド : Apache設定 「apache」リソースエージェントを使用し、Apache のリソース設定を行います Apache設定のリソースIDを 「MyApache」とします(任意の文字列) crm(live)configure# primitive MyApache ocf:heartbeat:apache ¥ crm(live)configure# primitive MyApache ocf:heartbeat:apache ¥ params ¥ params ¥ statusurl="http://localhost/test.html" ¥ apacheに渡す testregex="hogehoge" ¥ パラメータ httpd="/usr/sbin/httpd" ¥ httpd="/usr/sbin/httpd" ¥ configfile="/etc/httpd/conf/httpd.conf" ¥ configfile="/etc/httpd/conf/httpd.conf" ¥ op start interval="0s" timeout="60s" on-fail="restart" ¥ 監視間隔や op start interval="0s" timeout="60s" on-fail="restart" ¥ タイムアウト op monitor interval="10s" timeout="60s" on-fail="restart" ¥ op monitor interval="10s" timeout="60s" on-fail="restart" ¥ 故障時の動作 op stop interval="0s" timeout="60s" on-fail="block"" op stop interval="0s" timeout="60s" on-fail="block ※Apacheの監視URLに指定したファイルを作成する必要あり # echo "hogehoge" > /var/www/html/test.html Linux-HA Japan Project # echo "hogehoge" > /var/www/html/test.html 59
  60. 60. リソース制御部の設定 crm コマンド : リソースのグループ化 設定した「IPaddr2」「apache」リソースの グループ化を行います グループIDを「MyGrp」とし ます(任意の文字列) crm(live)configure# group MyGrp MyIp MyApache crm(live)configure# group MyGrp MyIp MyApache グループ化?? グループ内のどれか1つでも壊れたら グループ全体がフェイルオーバ グループ化の順番でリソースを起動 Linux-HA Japan Project 60
  61. 61. リソース制御部の設定 crm コマンド : 設定の確認 crm(live)configure# show crm(live)configure# show node $id="a0dacbcf-346f-4003-ab5b-15422e0e4697" pm01 node $id="a0dacbcf-346f-4003-ab5b-15422e0e4697" pm01 node $id="fe705a39-541a-4b10-af22-de27d4c72d23" pm02 node $id="fe705a39-541a-4b10-af22-de27d4c72d23" pm02 apache設定 primitive MyApache ocf:heartbeat:apache ¥¥ primitive MyApache ocf:heartbeat:apache params statusurl="http://localhost/test.html" testregex="hogehoge" params statusurl="http://localhost/test.html" testregex="hogehoge" httpd="/usr/sbin/httpd" configfile="/etc/httpd/conf/httpd.conf" ¥¥ httpd="/usr/sbin/httpd" configfile="/etc/httpd/conf/httpd.conf" op start interval="0s" timeout="60s" on-fail="restart" ¥¥ op start interval="0s" timeout="60s" on-fail="restart" op monitor interval="10s" timeout="60s" on-fail="restart" ¥¥ op monitor interval="10s" timeout="60s" on-fail="restart" op stop interval="0s" timeout="60s" on-fail="block" op stop interval="0s" timeout="60s" on-fail="block" 仮想IP設定 primitive MyIp ocf:heartbeat:IPaddr2 ¥¥ primitive MyIp ocf:heartbeat:IPaddr2 params ip="172.20.24.110" nic="eth0" cidr_netmask="24" ¥¥ params ip="172.20.24.110" nic="eth0" cidr_netmask="24" op start interval="0s" timeout="60s" on-fail="restart" ¥¥ op start interval="0s" timeout="60s" on-fail="restart" op monitor interval="10s" timeout="60s" on-fail="restart" ¥¥ op monitor interval="10s" timeout="60s" on-fail="restart" op stop interval="0s" timeout="60s" on-fail="block" op stop interval="0s" timeout="60s" on-fail="block" グループ設定 共通設定 group MyGrp MyIp MyApache group MyGrp MyIp MyApache property $id="cib-bootstrap-options" ¥¥ property $id="cib-bootstrap-options" dc-version="1.0.9-89bd754939df5150de7cd76835f98fe90851b677" ¥¥ dc-version="1.0.9-89bd754939df5150de7cd76835f98fe90851b677" cluster-infrastructure="Heartbeat" ¥¥ cluster-infrastructure="Heartbeat" no-quorum-policy="ignore" ¥¥ no-quorum-policy="ignore" stonith-enabled="false" ¥¥ stonith-enabled="false" startup-fencing="false" Linux-HA Japan Project startup-fencing="false" 61
  62. 62. リソース制御部の設定 crm コマンド : 設定の反映 commitを実行すると設定が反映され、リソースが 起動されます crm(live)configure# commit crm(live)configure# commit 設定は外部ファイルに保存もできます crm(live)configure# save /root/config.crm crm(live)configure# save /root/config.crm 保存した設定は読み込めます 設定を全て破棄したい場合は、 Pacemakerを停止後、 /var/lib/heartbeat/crm/ 内の ファイルを全て削除します crm(live)configure# load update /root/config.crm crm(live)configure# load update /root/config.crm Linux-HA Japan Project 62
  63. 63. リソース制御部の設定 リソース起動の確認 crm_mon コマンドでリソース起動を確認 # crm_mon # crm_mon ============ ============ ~省略~ ~省略~ ============ ============ 仮想IPとApacheが pm02で起動 Online: [ [pm02 pm01 ] ] Online: pm02 pm01 Resource Group: MyGrp Resource Group: MyGrp MyIp (ocf::heartbeat:IPaddr2): MyIp (ocf::heartbeat:IPaddr2): MyApache (ocf::heartbeat:apache): MyApache (ocf::heartbeat:apache): Linux-HA Japan Project Started pm02 Started pm02 Started pm02 Started pm02 63
  64. 64. もしノード故障が発生すると・・・ pm02# poweroff -nf ネットワークスイッチ eth0 仮想IP 仮想 : 172.20.24.110 故障 Apache eth1 eth3 pm01 pm02 Linux-HA Japan Project 64
  65. 65. リソース制御部の設定 ノード故障時の状態表示 ============ ============ ~ 省略 ~ ~ 省略 ~ ============ ============ Online: [ [pm01 ] ] Online: pm01 OFFLINE: [ [pm02 ] ] OFFLINE: pm02 ノードpm01からはノードpm02が ノードpm01からはノードpm02が 見えなくなったので「OFFLINE」と表示 見えなくなったので「OFFLINE」と表示 Resource Group: MyGrp Resource Group: MyGrp MyIp (ocf::heartbeat:IPaddr2): MyIp (ocf::heartbeat:IPaddr2): MyApache MyApache (ocf::heartbeat:apache): (ocf::heartbeat:apache): Started pm01 Started pm01 Started pm01 Started pm01 pm01にフェイルオーバ pm01にフェイルオーバ Linux-HA Japan Project 65
  66. 66. もしApacheの故障が発生すると・・・ pm02# rm /var/www/html/test.html ネットワークスイッチ 仮想IP 仮想 : 172.20.24.110 故障 eth0 Apache eth1 eth3 pm01 pm02 Linux-HA Japan Project 66
  67. 67. リソース制御部の設定 リソース故障時の状態表示 ============ ============ ~ 省略 ~ ~ 省略 ~ ============ ============ pm0 1にフェイルオーバ pm01にフェイルオーバ pm0 pm0 Online: [ [pm02 pm01 ] ] Online: pm02 pm01 Resource Group: MyGrp Resource Group: MyGrp MyIp (ocf::heartbeat:IPaddr2): MyIp (ocf::heartbeat:IPaddr2): MyApache (ocf::heartbeat:apache): MyApache (ocf::heartbeat:apache): Started pm01 Started pm01 Started pm01 Started pm01 リソース故障状況が表示 リソース故障状況が表示 されます されます ノードpm02 pm02で ※ノードpm02で ノードpm02 pm02で ※ノードpm02で Apacheが Apacheが Apacheが Apacheが monitor, start 故障 monitor, start 故障 Failed actions: Failed actions: MyApache_monitor_10000 (node=pm02, call=13, rc=1, status=complete): unknown error MyApache_monitor_10000 (node=pm02, call=13, rc=1, status=complete): unknown error MyApache_start_0 (node=pm02, call=15, rc=1, status=complete): unknown error MyApache_start_0 (node=pm02, call=15, rc=1, status=complete): unknown error Linux-HA Japan Project 67
  68. 68. 今回の例では ・どのノードが優先的にActive? ・NW監視は? ・NWが壊れた時の挙動は? など細かい挙動はまったく 考慮されていません Linux-HA Japan Project 68
  69. 69. さらに細かい制御をしたければ、 イバラの道が続きます・・・ Linux-HA Japan Project 69
  70. 70. が、しかし、 crmコマンドがわからなくても まとめて設定できる 簡単ツールを紹介します! Linux-HA Japan Project 70
  71. 71. 設定ファイル編集ツール pm_crmgen Linux-HA Japanで Linux-HA Japanで crmファイル編集ツールを開発! crmファイル編集ツールを開発! Excelのテンプレートファイルから簡単に crm用設定ファイルを生成してくれるツール ローカルリポジトリに含まれていますし、 個別にダウンロードも可能です。 http://sourceforge.jp/projects/linux-ha/ Linux-HA Japan Project 71
  72. 72. 設定ファイル編集ツール インストール ① pm_crmgenをインストール rpmコマンドでインストールする場合 # rpm –ivh pm_crmgen-1.0-1.el5.noarch.rpm # rpm –ivh pm_crmgen-1.0-1.el5.noarch.rpm ローカルリポジトリの場合 # yum –c pacemaker.repo pm_crmgen # yum –c pacemaker.repo pm_crmgen Linux-HA Japan Project 72
  73. 73. 設定ファイル編集ツール 設定イメージ ② Excelのテンプレートファイルにリソース定義を記載 /usr/share/pacemaker/pm_crmgen/pm_crmgen_env.xls ファイルを Excel が使用できるPCにコピーします。 テンプレートは青枠の中に値を記入していきます 「IPaddr2」のリソース 「IPaddr2」のリソース エージェントを使用 エージェントを使用 付与する仮想IPアドレス等 付与する仮想IPアドレス等 や使用インタフェース等を や使用インタフェース等を 入力 入力 Linux-HA Japan Project 監視間隔やタイムアウト値、故 監視間隔やタイムアウト値、故 障時の動作などを入力 73 障時の動作などを入力
  74. 74. 設定ファイル編集ツール 設定イメージ どのノードをActiveにするかといった リソース配置制約の設定も、ノード名を記述 するだけで可能です。 ActiveとStandbyノード ActiveとStandbyノード ActiveとStandbyノード ActiveとStandbyノード を指定 を指定 リソースID リソースID Linux-HA Japan Project 74
  75. 75. 設定ファイル編集ツール crm用設定ファイルに変換 ③ CSV形式でファイルを保存 仮想IPをActiveノードに付与する場合の例です。 「crm_sample.csv」とし 「crm_sample.csv」とし てCSV形式で保存 てCSV形式で保存 ④ CSVファイルをノードへ転送 CSVファイル保存後、SCPやFTP等でpm_crmgenがインストール されたサーバへ転送 Linux-HA Japan Project 75
  76. 76. 設定ファイル編集ツール crm用設定ファイルに変換 ⑤ pm_crmgenコマンドでcrmファイルを生成 # pm_crmgen –o crm_sample.crm crm_sample.csv # pm_crmgen –o crm_sample.crm crm_sample.csv ③で転送した CSVファイル 生成する設定ファイル名 ⑥ crmコマンドを実行してリソース設定を反映 # crm configure load update crm_sample.crm # crm configure load update crm_sample.crm Linux-HA Japan Project 76
  77. 77. ⑥ Linux-HA Japan について Linux-HA Japan Project 77
  78. 78. Linux-HA Japanの経緯 『Heartbeat(ハートビート)』の日本における更なる 普及展開を目的として、2007年10月5日「Linux-HA (Heartbeat) 日本語サイト」を設立しました。 その後、日本でのLinux-HAコミュニティ活動として、 Heartbeat2のrpmバイナリと、オリジナルのHeartbeat 機能追加用パッケージを提供してきました。 Linux-HA Japan Project 78
  79. 79. Linux-HA Japan URL http://linux-ha.sourceforge.jp/ (一般向け) http://sourceforge.jp/projects/linux-ha/ (開発者向け) 情報の公開用として 新しい一般向けウェブサイトが 6/25にオープン 随時情報を更新しています! Linux-HA Japan Project 79
  80. 80. Linux-HA Japanメーリングリスト 日本におけるHAクラスタについての活発な意見交換の場として 「Linux-HA Japan日本語メーリングリスト」 も開設しています。 Linux-HA-Japan MLでは、Pacemaker、Heartbeat3、Corosync DRBDなど、HAクラスタに関連する話題は歓迎! • ML登録用URL http://linux-ha.sourceforge.jp/ http://linux-ha.sourceforge.jp/ の「メーリングリスト」をクリック • MLアドレス linux-ha- apan@lists.sourceforge.jp linux-ha-japan@lists.sourceforge.jp .j ※スパム防止のために、登録者以外の投稿は許可制です Linux-HA Japan Project 80
  81. 81. 本家Pacemakerサイト clusterlabs.org http://clusterlabs.org/ Fedora, openSUSE, Fedora, openSUSE, EPEL(CentOS/RHEL) EPEL(CentOS/RHEL) のrpmがダウンロード のrpmがダウンロード 可能です。 可能です。 Linux-HA Japan Project 81
  82. 82. 実は本家の Pacemakerのロゴはこれ Linux-HA Japan Project 82
  83. 83. しかし これ では、 いかにも医療機器なので… Linux-HA Japan Project 83
  84. 84. Pacemakerロゴ Linux-HA Japan では、 Pacemakerのロゴ・バナーを独自に作成 Linux-HA Japan Project 84
  85. 85. Pacemakerロゴ さらに本家ロゴに勝負を挑みました 投票中 : http://theclusterguy.clusterlabs.org/post/1551578523/new-logo Cluster Guy New logo 検索 VS 11/24現在74:26でリード 11/24現在74:26でリード 投票よろしくお願いします。 投票よろしくお願いします。 Linux-HA Japan Project 85
  86. 86. ご清聴ありがとうございました。 Linux-HA Japan 検索 http://linux-ha.sourceforge.jp/ Linux-HA Japan Project 86

×