目次にジャンプページナビゲーションにジャンプ: 前のページ[アクセスキーp]/次のページ[アクセスキーn]
documentation.suse.com / SUSE Linux Enterprise High Availability Extensionのドキュメント / 管理ガイド / 設定および管理 / 設定および管理の基本事項
適用項目 SUSE Linux Enterprise High Availability Extension 15 SP5

5 設定および管理の基本事項

HAクラスタの主な目的はユーザサービスの管理です。ユーザサービスの典型的な例は、Apache Webサーバまたはデータベースです。サービスとは、ユーザの観点からすると、指示に基づいて特別な何かを行うことを意味していますが、クラスタにとっては開始や停止できるリソースにすぎません。サービスの性質はクラスタには無関係なのです。

この章では、クラスタを管理するときに知っておく必要があるいくつかの基本的な概念について説明します。後続の章では、High Availability Extensionが提供する各管理ツールを使用して、主要な設定および管理タスクを行う方法を説明します。

5.1 ユースケースのシナリオ

一般的に、クラスタは次の2つのカテゴリのいずれかに分類されます。

  • 2ノードクラスタ

  • 2ノードより多いクラスタ。これは通常、奇数のノード数を意味します。

異なるトポロジを追加して、異なるユースケースを生成することもできます。次のユースケースは最も一般的です。

 
1つの場所の2ノードクラスタ

設定:FC SANまたは同様の共有ストレージ、レイヤ2ネットワーク。

使用シナリオ:サービスの高可用性、およびデータレプリケーションのデータ冗長性なしに焦点を当てた埋め込みクラスタ。このようなセットアップは無線ステーションや組立てラインコントローラなどに使用されます。

2つの場所の2ノードクラスタ(最も広く使用されている)

設定:対称的なストレッチクラスタ、FC SAN、およびレイヤ2ネットワークのすべてが2つの場所に及ぶ。

使用シナリオ:サービスの高可用性、およびローカルデータの冗長性に焦点を当てた従来のストレッチクラスタ。データベースおよびエンタープライズリソース計画に適しており、ここ数年間で最も人気のあるセットアップの1つです。

3つの場所の奇数のノード数

設定:2×N+1ノード、FC SANが2つの主な場所に及ぶ。FC SANを使用しない補助的な3番目のサイト、過半数メーカーとして機能する。レイヤ2ネットワーク、少なくとも2つの主な場所に及ぶ。

使用シナリオ:サービスの高可用性、およびデータの冗長性に焦点を当てた従来のストレッチクラスタ。たとえば、データベース、エンタープライズリソースプランニング。

5.2 クォーラムの判断

1つ以上のノードとその他のクラスタ間で通信が失敗した場合は、常にクラスタパーティションが発生します。ノードは同じパーティション内の他のノードのみと通信可能で、切り離されたノードは認識しません。クラスタパーティションは、ノード(投票)の過半数を保有する場合、クォーラムを持つ(定足数に達している)と定義されます。これを実現する方法は「クォーラム計算」によって実行されます。クォーラムはフェンシングの要件です。

クォーラムはPacemakerによって計算または決定されません。Corosyncは、Pacemaker設定を変更することなく、2ノードクラスタのクォーラムを直接処理できます。

クォーラムの計算方法は、次のような要因によって影響されます。

クラスタノード数

実行中のサービスを継続させるため、2ノードを超えるクラスタはクラスタパーティションの解決においてクォーラム(過半数)に依存します。次の数式に基づき、クラスタが機能するために必要な動作ノードの最少数を計算できます。

N ≥ C/2 + 1

N = minimum number of operational nodes
C = number of cluster nodes

たとえば、5ノードクラスタでは、最低3つの動作ノード(または障害が発生する可能性のある2ノード)が必要です。

2ノードクラスタまたは奇数のクラスタノードのいずれかを使用することを強くお勧めします。2ノードクラスタは、2サイト間のストレッチセットアップで重要です。奇数のノード数を持つクラスタは、1つのシングルサイトで構築するか、または3つのサイト間で分散させることができます。

Corosyncの設定

Corosyncはメッセージングおよびメンバーシップ層です。5.2.1項 「2ノードクラスタのCorosync設定」および5.2.2項 「NノードクラスタのCorosync設定」を参照してください。

5.2.1 2ノードクラスタのCorosync設定

ブートストラップスクリプトを使用する場合、Corosyn設定には次のオプションを持つquorumセクションがあります。

例 5.1: 2ノードクラスタのCorosync設定の例
quorum {
   # Enable and configure quorum subsystem (default: off)
   # see also corosync.conf.5 and votequorum.5
   provider: corosync_votequorum
   expected_votes: 2
   two_node: 1
}

デフォルトで、two_node: 1が設定されている場合、wait_for_allオプションが自動的に有効になります。wait_for_allが有効でない場合、クラスタは両方のノードでパラレルに開始される必要があります。または、最初のノードが、見つからない2番目のノードで起動フェンシングを実行します。

5.2.2 NノードクラスタのCorosync設定

2ノードクラスタを使用しない場合、Nノードクラスタに奇数のノードを使用することを強くお勧めします。クォーラム設定の場合、次のオプションがあります。

  • crm cluster joinコマンドを使用したノードの追加、または

  • Corosync設定の手動調整。

/etc/corosync/corosync.confを手動で調整する場合、次の設定を使用します。

例 5.2: NノードクラスタのCorosync設定の例
quorum {
   provider: corosync_votequorum 1
   expected_votes: N 2
   wait_for_all: 1 3
}

1

Corosyncからのクォーラムサービスの使用

2

予想される投票数。このパラメータはquorumセクション内で提供されるか、またはnodelistセクションが利用できる場合に自動的に計算されます。

3

wait for all (WFA)機能を有効にします。WFAが有効な場合、クラスタはすべてのノードが認識可能になった後でのみ定足数に達します。一部の起動時の競合状態を回避するために、wait_for_all1に設定すると役立つ場合があります。たとえば、ノードクラスタでは、すべてのノードに1つの投票が割り当てられているため、expected_votes55に設定します。3つ以上のノードが互いに認識できる場合、クラスタパーティションが定足数に達し、動作を開始できます。

5.3 グローバルクラスタオプション

グローバルクラスタオプションは、一定の状況下でのクラスタの動作を制御します。それらは、セットにグループ化され、Hawk2やcrmシェルなどのクラスタ管理ツールで表示したり、変更することができます。

事前に定義されている値は、通常は、そのまま保持できます。ただし、クラスタの主要機能を想定どおりに機能させるには、クラスタの基本的なセットアップ後に、次のパラメータを調整する必要がある場合があります。

5.3.1 グローバルオプションno-quorum-policy

このグローバルオプションは、クラスタパーティションにクォーラムがない(ノードの過半数がパーティションに含まれない)場合どうするかを定義します。

次の値を使用できます。

ignore

no-quorum-policyignoreに設定すると、クラスタパーティションは、クォーラムがない場合でも、クォーラムがあるように動作します。クラスタパーティションは、フェンシングを発行してリソース管理を継続できます。

SLES 11では、この値が2ノードのクラスタ用の推奨設定でした。SLES 12以降、値ignoreは廃止されており、使用しないでください。設定と条件に基づいて、Corosyncはクラスタノードまたは単一ノードにクォーラムを与えます。または与えません。

2ノードのクラスタの場合、ノードが失われた場合の唯一の意味のある動作は、常に反応することです。最初のステップとして、クォーラムを失ったノードのフェンシングを試行してください。

freeze

クォーラムが失われた場合は、クラスタパーティションがフリーズします。リソース管理は続行されます。実行中のリソースは停止されません(ただし、イベントの監視に対応して再起動される可能性があります)。ただし、影響を受けたパーティション内では、以後のリソースが開始されません。

一定のリソースが他のノードとの通信に依存しているクラスタの場合(たとえば、OCFS2マウントなど)は、この設定が推奨されます。この場合、デフォルト設定no-quorum-policy=stopは、次のようなシナリオになるので有効でありません。つまり、ピアノードが到達不能な間はそれらのリソースを停止できなくなります。その代わり、停止の試行は最終的にタイムアウトし、stop failureになり、エスカレートされた復元とフェンシングを引き起こします。

stop (デフォルト値)

クォーラムが失われると、影響を受けるクラスタパーティション内のすべてのリソースが整然と停止します。

suicide

クォーラムが失われると、影響を受けるクラスタパーティション内のすべてのノードがフェンシングされます。このオプションは、SBDと組み合わせる場合にのみ機能します。第13章 「ストレージ保護とSBDを参照してください。

5.3.2 グローバルオプションstonith-enabled

このグローバルオプションは、フェンシングを適用して、STONITHデバイスによる、障害ノードや停止できないリソースを持つノードのダウンを許可するかどうか定義します。通常のクラスタ操作には、STONITHデバイスの使用が必要なので、このグローバルオプションは、デフォルトでtrueに設定されています。デフォルト値では、クラスタは、STONITHリソースが定義されていない場合にはリソースの開始を拒否します。

何らかの理由でフェンシングを無効にする必要がある場合は、stonith-enabledfalseに設定しますが、これはご使用の製品のサポートステータスに影響を及ぼすことに注意してください。また、stonith-enabled="false"を指定すると、Distributed Lock Manager (DLM)のようなリソースやDLMによるすべてのサービス(lvmlockd、GFS2、OCFS2など)は開始できません。

重要
重要: STONITHがない場合はサポートなし

STONITHがないクラスタはサポートされません。

5.4 Hawk2の概要

クラスタリソースを設定および管理する場合、Hawk2、またはcrmシェル(crmsh)コマンドラインユーティリティのいずれかを使用します。

Hawk2のユーザフレンドリなWebインタフェースを使用すると、High AvailabilityクラスタをLinuxまたは非Linuxマシンから同様に監視および管理することができます。Hawk2には、(グラフィカルな)Webブラウザを使用して、クラスタの内部または外部の任意のマシンからアクセスできます。

5.4.1 Hawk2の要件

Hawk2にログインするには、次の要件を満たす必要があります。

hawk2 [Package]

Hawk2で接続するすべてのクラスタノードにhawk2パッケージをインストールする必要があります。

Webブラウザ

Hawk2を使用してクラスタノードにアクセスするマシンに必要なものは、JavaScriptとクッキーを有効にして接続を確立できるグラフィカルなWebブラウザです。

Hawk2サービス

Hawk2を使用するには、このWebインタフェースで接続するノード上で、それぞれのWebサービスが開始されている必要があります。手順5.1「Hawk2サービスの開始」を参照してください。

crmシェルで提供されているブートストラップスクリプトを使用してクラスタを設定した場合、Hawk2サービスはすでに有効になっています。

各クラスタノードのユーザ名、グループおよびパスワード

Hawk2ユーザはhaclientグループのメンバーである必要があります。インストール時にhaclusterという名前のLinuxユーザが作成されますが、このユーザがhaclientグループに追加されます。

セットアップ用にcrm cluster initスクリプトを使用している場合は、haclusterユーザに対してデフォルトパスワードが設定されます。Hawk2を起動する前に、安全なパスワードに変更してください。crm cluster initスクリプトを使用しなかった場合は、最初にhaclusterのパスワードを設定するか、またはhaclientグループのメンバーである新しいユーザを作成します。Hawk2を使用して接続する各ノードでこれを実行します。

ワイルドカード証明書の処理

ワイルドカード証明書は、複数のサブドメインに対して有効な公開鍵証明書です。たとえば、*.example.comのワイルドカード証明書は、ドメインlogin.example.comwww.example.comなどのセキュリティを保護します。

Hawk2はワイルドカード証明書と従来の証明書をサポートします。自己署名のデフォルトの公開鍵および証明書は/srv/www/hawk/bin/generate-ssl-certで生成されます。

独自の証明書(従来型またはワイルドカード)を使用するには、/etc/ssl/certs/hawk.pemで生成された証明書を独自の証明書に置き換えます。

手順 5.1: Hawk2サービスの開始
  1. 接続先にするノードで、シェルを開き、rootとしてログインします。

  2. 次のように入力して、サービスのステータスをチェックします。

    # systemctl status hawk
  3. サービスが実行されていない場合は、次のコマンドでサービスを開始します。

    # systemctl start hawk

    ブート時にHawk2を自動的に起動したい場合は、次のコマンドを実行します。

    # systemctl enable hawk

5.4.2 ログイン

Hawk2 Webインタフェースは、HTTPSプロトコルとポート7630を使用します。

Hawkを使用して個々のクラスタノードにログインする代わりに、浮動、仮想IPアドレス(IPaddrまたはIPaddr22)をクラスタリソースとして設定できます。そのための特別な設定は不要です。サービスがどの物理ノードで実行されていても、クライアントはHawkサービスに接続できます。

クラスタをcrmシェルで提供されているブートストラップスクリプトを使用して設定する際には、クラスタ管理用に仮想IPを設定するかどうかを尋ねられます。

手順 5.2: Hawk2 Webインタフェースへのログイン
  1. いずれかのマシンでWebブラウザを起動し、次のURLを入力します。

    https://HAWKSERVER:7630/

    HAWKSERVERの部分は、Hawk Webサービスを実行するクラスタノードのIPアドレスまたはホスト名で置き換えます。Hawk2でクラスタ管理用に仮想IPアドレスを設定した場合、その仮想IPアドレスでHAWKSERVERを置き換えます。

    注記
    注記: 証明書の警告

    初めてURLにアクセスしようとするときに証明書の警告が表示される場合は、自己署名証明書が使用されています。自己署名証明書は、デフォルトでは信頼されません。

    証明書を検証するには、クラスタオペレータに証明書の詳細を求めます。

    続行するには、ブラウザに例外を追加して警告をバイパスします。

    自己署名証明書を公式認証局によって署名された証明書で置き換える方法の詳細については、自己署名証明書の置き換えを参照してください。

  2. Hawk2ログイン画面で、haclusterユーザ(または、haclientグループのメンバーである他の任意のユーザ)のユーザ名パスワードを入力します。

  3. ログインをクリックします。

5.4.3 Hawk2の概要: 主な構成要素

Hawk2にログインすると、左側にはナビゲーションバー、右側には複数のリンクが含まれる最上位の行が表示されます。

注記
注記: Hawk2で利用できる機能

デフォルトでは、rootまたはhaclusterとしてログインしたユーザは、すべてのクラスタ設定作業への、完全な読み込み/書き込みのアクセス権を持ちます。ただし、アクセス制御リスト(ACL)を使用すれば、より詳細なアクセス権限を定義することができます。

CRMでACLが有効になっている場合、Hawk2で利用できる機能は、ユーザ役割と割り当てられたアクセスパーミッションごとに異なります。Hawk2の履歴エクスプローラは、ユーザhaclusterのみが実行できます。

5.4.3.1 左のナビゲーションバー

監視
  • 状態: クラスタの現在の状態の概要が表示されます(crmshのcrm statusと同様です)。詳細については、11.1.1項 「単一クラスタの監視」を参照してください。クラスタにguest nodes (pacemaker_remoteデーモンが実行されているノード)が含まれる場合、それらのノードも表示されます。この画面はほぼリアルタイムで更新され、ノードまたはリソースの状態に変化があった場合、ほとんど瞬時に表示されます。

  • ダッシュボード: 複数のクラスタを監視できます(Geoクラスタがセットアップされている場合は、別のサイトにあるクラスタも監視できます)。詳細については、11.1.2項 「複数のクラスタの監視」を参照してください。クラスタにguest nodes (pacemaker_remoteデーモンが実行されているノード)が含まれる場合、それらのノードも表示されます。この画面はほぼリアルタイムで更新され、ノードまたはリソースの状態に変化があった場合、ほとんど瞬時に表示されます。

トラブルシューティング
  • 履歴: 履歴エクスプローラーを開いてクラスタレポートを生成できます。詳細については、11.3項 「クラスタ履歴の表示」を参照してください。

  • Command Log (コマンドログ): Hawk2によって最近実行されたcrmshコマンドのリストを表示します。

設定

5.4.3.2 最上位の行

Hawk2の最上位の行には、次のエントリが表示されます。

  • バッチ: クリックすると、バッチモードに切り替わります。これにより、変更をシミュレートしてステージングし、それらの変更を単一のトランザクションとして適用できます。詳細については、5.4.7項 「バッチモードの使用」を参照してください。

  • USERNAME: Hawk2用の設定ができます(たとえば、Webインタフェースの言語の設定やSTONITHを無効にした場合に警告を表示するかなどの設定)。

  • Help (ヘルプ): SUSE Linux Enterprise High Availability Extensionドキュメントにアクセスしたり、リリースノートを参照したり、バグを報告したりします。

  • ログアウト: クリックするとログアウトします。

5.4.4 グローバルクラスタオプションの設定

グローバルクラスタオプションは、一定の状況下でのクラスタの動作を制御します。これらは、セットにグループ化され、Hawk2、crmshなどのクラスタ管理ツールで表示し、変更することができます。事前に定義されている値は、通常は、そのまま保持できます。ただし、クラスタの主要機能を正しく機能させるには、クラスタの基本的なセットアップ後に、次のパラメータを調整する必要があります。

手順 5.3: グローバルクラスタオプションの変更
  1. Hawk2にログインします。

    https://HAWKSERVER:7630/
  2. 左のナビゲーションバーから、環境設定 › クラスタ設定を選択します。

    クラスタ設定画面が開きます。グローバルクラスタオプションとその現在の値が表示されます。

    画面の右側にパラメータの簡単な説明を表示するには、マウスポインタをパラメータに合わせます。

    Hawk2 - クラスタの設定
    図 5.1: Hawk2 - クラスタの設定
  3. no-quorum-policyおよびstonith-enabledの値を確認し、必要に応じて調整します。

    1. no-quorum-policyを適切な値に設定します。詳しくは「5.3.1項 「グローバルオプションno-quorum-policy」を参照してください。

    2. 何らかの理由でフェンシングを無効にする必要がある場合は、stonith-enablednoに設定します。通常のクラスタ操作にはSTONITHデバイスの使用が必要なため、デフォルトでは、trueに設定されています。デフォルト値では、クラスタは、STONITHリソースが設定されていない場合にはリソースの開始を拒否します。

      重要
      重要: STONITHがない場合はサポートなし
      • クラスタにはノードフェンシングメカニズムが必要です。

      • グローバルクラスタオプションstonith-enabledおよびstartup-fencingtrueに設定する必要があります。これらを変更するとサポートされなくなります。

    3. クラスタ設定からパラメータを削除するには、パラメータの横のマイナスアイコンをクリックします。パラメータを削除すると、クラスタはそのパラメータがデフォルト値に設定されている場合と同様に動作します。

    4. クラスタ設定に新たなパラメータを追加するには、ドロップダウンボックスから選択します。

  4. リソースのデフォルトまたは操作のデフォルトを変更する必要がある場合は、次のような処理を実行します。

    1. 値を調整するには、ドロップダウンボックスから別の値を選択するか、値を直接編集します。

    2. 新しいリソースのデフォルトまたは操作のデフォルトを追加するには、空のドロップダウンボックスから1つ選択し、値を入力します。デフォルト値が存在する場合は、Hawk2から自動的に提示されます。

    3. パラメータを削除するには、その横のマイナスアイコンをクリックします。リソースのデフォルト操作のデフォルトに値が指定されていない場合、クラスタは6.12項 「リソースオプション(メタ属性)」および6.14項 「リソース操作」にドキュメントされているデフォルト値を使用します。

  5. 変更内容を確認します。

5.4.5 現在のクラスタ設定の表示(CIB)

クラスタ管理者はクラスタ設定を知る必要がある場合があります。Hawk2は、現在の設定をcrmシェル構文で、XMLとして、およびグラフとして表示できます。クラスタ設定をcrmシェル構文で表示するには、左ナビゲーションバーから、環境設定 › Edit Configuration (設定の編集)を選択し、表示をクリックします。代わりに設定をraw XMLで表示するには、XMLをクリックします。CIBで設定されたノードとリソースのグラフィカルな表現を示すには、グラフをクリックします。リソース間の関係も表示されます。

5.4.6 ウィザードを使用したリソースの追加

Hawk2ウィザードは、仮想IPアドレスやSDB STONITHリソースなどの単純なリソースを設定する場合に便利です。また、DRBDブロックデバイスやApache Webサーバのリソース設定などの、複数リソースを含む複雑な設定においても役立ちます。設定手順をウィザードに従って進めることができ、入力が必要なパラメータについては情報が提供されます。

手順 5.4: リソースウィザードの使用
  1. Hawk2にログインします。

    https://HAWKSERVER:7630/
  2. 左のナビゲーションバーから、環境設定 › ウィザードの順に選択します。

  3. ウィザードの横にある下矢印アイコンをクリックして個々のカテゴリを展開し、目的のウィザードを選択します。

  4. 画面の指示に従います。最後の設定手順が完了したら、Verify (検証)を選択して、入力した値を検証します。

    Hawk2が実行するアクションと、設定の内容が表示されます。設定によっては、適用を選択して設定を適用する前に、rootパスワードの入力を求めるプロンプトが表示されることがあります。

Hawk2 - Apache Webサーバ用のウィザード
図 5.2: Hawk2 - Apache Webサーバ用のウィザード

詳細については、第6章 「クラスタリソースの設定を参照してください。

5.4.7 バッチモードの使用

Hawk2は、「クラスタシミュレータ」を含むバッチモードを提供します。これは次の操作に使用できます。

  • 各変更を直ちに反映させるのではなく、クラスタに変更をステージングして、それらの変更を単一トランザクションとして適用する。

  • たとえば、潜在的な障害シナリオを調べるため、変更やクラスタイベントをシミュレートする。

たとえば、互いに依存するリソースのグループを作成する場合にバッチモードを使用できます。バッチモードを使用すると、クラスタに中間的なまたは不完全な設定を適用することを回避できます。

バッチモードが有効な間は、リソースや制約を追加したり編集したり、クラスタ設定を変更できます。ノードのオンラインまたはオフライン化、リソース操作およびチケットの許可または取り消しなど、クラスタのイベントをシミュレートすることもできます。詳細については手順5.6「ノード、リソース、またはチケットイベントの挿入」を参照してください。

「クラスタシミュレータ」は、すべての変更後に自動的に実行され、ユーザインタフェースに予想される結果を表示します。たとえば、次のような場合もあります。バッチモードの最中にリソースを止めると、実際リソースはまだ実行中であるにも関わらず、ユーザインタフェースにはリソースが停止したと表示されます。

重要
重要: ウィザード、およびライブシステムへの変更

一部のウィザードには単なるクラスタ設定を超えるアクションが含まれます。これらのウィザードをバッチモードで使用する場合、クラスタ設定を超えるすべての変更がライブシステムに直ちに適用されます。

したがって、root許可が必要なウィザードはバッチモードでは実行できません。

手順 5.5: バッチモードの使用
  1. Hawk2にログインします。

    https://HAWKSERVER:7630/
  2. バッチモードを有効にするには、最上位の行からバッチを選択します。

    最上位の行の下に追加のバーが表示されます。これは、バッチモードがアクティブであることを示し、バッチモードで実行可能なアクションへのリンクが含まれます。

    Hawk2バッチモードが有効
    図 5.3: Hawk2バッチモードが有効
  3. バッチモードがアクティブなときに、リソースや制約の追加または編集、あるいはクラスタ設定の編集など、クラスタに対する変更を実行します。

    変更はシミュレートされ、すべての画面に表示されます。

  4. 行った変更の詳細を表示するには、バッチモードバーから表示を選択します。バッチモードウィンドウが開きます。

    設定の変更について、ライブ状態とシミュレートされた変更間の相違がcrmsh構文で表示されます。-文字で開始される行は、現在の状態を表し、+で開始される行は、提案される状態を示します。

  5. イベントを注入したり、さらに詳細を表示する場合は、手順 5.6を参照してください。または、Close (閉じる)をクリックしてウィンドウを閉じます。

  6. シミュレートした変更を破棄または適用するかのいずれかを選択し、選択内容を確認します。これによりバッチモードが無効になり、通常のモードに戻ります。

バッチモードで実行中に、Hawk2ではNode Events (ノードイベント)Resource Events (リソースイベント)を注入することもできます。

ノードイベント

ノードの状態を変更できます。使用可能な状態は、online (オンライン)offline (オフライン)、およびunclean (アンクリーン)です。

リソースイベント

リソースの一部のプロパティを変更できます。たとえば、操作(startstopmonitorなど)、その操作を適用するノード、およびシミュレートされる予想される結果を設定できます。

チケットイベント

(Geoクラスタにおける)チケットの許可と取り消しの影響をテストできます。

手順 5.6: ノード、リソース、またはチケットイベントの挿入
  1. Hawk2にログインします。

    https://HAWKSERVER:7630/
  2. バッチモードがまだアクティブでない場合、最上位の行でバッチをクリックして、バッチモードに切り替えます。

  3. バッチモードバーで、表示をクリックして、バッチモードウィンドウを開きます。

  4. ノードのステータスの変更をシミュレートするには

    1. 注入 › ノードイベントを順にクリックします。

    2. 操作するノードを選択し、そのターゲット状態を選択します。

    3. 変更内容を確認します。イベントはバッチモードダイアログに一覧表示されるイベントのキューに追加されます。

  5. リソースの操作をシミュレートするには

    1. 注入 › リソースイベントを順にクリックします。

    2. 操作するリソースを選択し、シミュレートする操作を選択します。

    3. 必要に応じて、間隔を定義します。

    4. 操作を実行するノードを選択し、ターゲットとする結果を選択します。イベントはバッチモードダイアログに一覧表示されるイベントのキューに追加されます。

    5. 変更内容を確認します。

  6. チケットアクションをシミュレートするには

    1. 挿入 › チケットイベントを順にクリックします。

    2. 操作するチケットを選択し、シミュレートするアクションを選択します。

    3. 変更内容を確認します。イベントはバッチモードダイアログに一覧表示されるイベントのキューに追加されます。

  7. バッチモードダイアログ(図 5.4)で、注入されたイベントごとに新しい行が表示されます。ここに一覧表示されるイベントは、直ちにシミュレートされ、状態画面に反映されます。

    設定の変更も行った場合は、ライブ状態とシミュレートされた変更の間の相違が注入されたイベントの下に表示されます。

    Hawk2のバッチモード - 注入されたイベントと設定の変更
    図 5.4: Hawk2のバッチモード - 注入されたイベントと設定の変更
  8. 注入されたイベントを削除するには、その隣の削除アイコンをクリックします。Hawk2では、それに従って状態画面が更新されます。

  9. 実行されたシミュレーションに関する詳細を表示するには、シミュレータをクリックして、次のいずれかを選択します。

    まとめ

    詳細な概要を表示します。

    CIB (in)/CIB (out)

    CIB (in)では、初期のCIB状態を示します。CIB (out)では、遷移後のCIBの状態を示します。

    遷移グラフ

    遷移のグラフィカルな表現を示します。

    遷移

    遷移のXML表示を示します。

  10. シミュレートされた変更を確認したら、バッチモードウィンドウを閉じます。

  11. バッチモードを終了するには、シミュレートされた変更を適用するか、破棄するかのいずれかを選択します。

5.5 crmshの概要

クラスタリソースを設定および管理するには、コマンドラインユーティリティであるcrmシェル(crmsh)またはWebベースのユーザインタフェースであるHawk2のいずれかを使用します。

このセクションでは、コマンドラインツールcrmを紹介します。crmコマンドには、リソース、CIB、ノード、リソースエージェントなどを管理するサブコマンドがあります。このコマンドには、例を組み込んだ詳細なヘルプシステムが用意されています。すべての例は、付録Bで説明される命名規則に従います。

イベントは/var/log/crmsh/crmsh.logにログを記録します。

注記
注記: ユーザの権限

クラスタを管理するには十分な権限が必要です。crmコマンドおよびそのサブコマンドは、rootユーザとして、またはCRM所有者ユーザとして実行される必要があります(通常はhaclusterユーザ)。

ただし、userオプションを使用することで、crmとそのサブコマンドを一般(権限のない)ユーザとして実行し、必要な場合はいつでもsudoを使用してIDを変更できます。たとえば、次のcrmコマンドは、権限のあるユーザIDとしてhaclusterを使用します。

# crm options user hacluster

sudoがパスワードを要求しないように/etc/sudoersを設定する必要があります。

ヒント
ヒント: 対話型crmプロンプト

crmを引数なしで(または1つのサブレベルのみを引数として)使用することにより、crmシェルは対話モードになります。このモードは、次のプロンプトで示されます。

crm(live/HOSTNAME)

読みやすくするために、このマニュアルでは対話型crmのプロンプトでホスト名を省略します。次の例のように、aliceなどの特定のノードで対話型シェルを実行する必要がある場合にのみホスト名を含めます。

crm(live/alice)

5.5.1 ヘルプの表示

ヘルプには複数の方法でアクセスできます。

  • crmとそのコマンドラインオプションの使用方法を出力するには:

    # crm --help
  • 使用可能なすべてのコマンドの一覧を表示するには:

    # crm help
  • コマンドの参照情報だけでなく、他のヘルプセクションにアクセスするには:

    # crm help topics
  • configureサブコマンドの詳細なヘルプテキストを表示するには:

    # crm configure help
  • groupconfigureサブコマンドの構文、使用方法、例を印刷するには:

    # crm configure help group

    これも同様です:

    # crm help configure group

helpサブコマンド(--helpオプションと混同しないこと)のほとんどすべての出力によって、テキストビューアが開きます。このテキストビューアは上下にスクロール可能で、ヘルプテキストが読みやすくなっています。テキストビューアを閉じるには、Qキーを押します。

ヒント
ヒント: バッシュおよび対話型シェルでタブ補完機能を使用

crmshは、対話型シェルに対してだけではなく、バッシュでの直接的で完全なタブ補完機能をサポートしています。たとえば、crm help config<Tab>を入力すると、対話型シェルのように単語が補完されます。

5.5.2 crmshのサブコマンドの実行

crmコマンドそのものは、次のように使用できます。

  • 直接: すべてのサブコマンドをcrmに続け、Enterを押すと、ただちにその出力が表示されます。たとえば、crm help raを入力すると、raサブコマンド(リソースエージェント)に関する情報を取得できます。

    サブコマンドは、その短縮形が固有である限り短縮できます。たとえば、crmshが意味を認識しているため、statusstと短縮することができます。

    パラメータを短縮する機能もあります。通常、パラメータはparamsキーワードを使用して追加します。paramsセクションが最初のセクションでほかにセクションがない場合、このセクションを省略できます。たとえば、次のような行があるとします。

    # crm primitive ipaddr IPaddr2 params ip=192.168.0.55

    これは次の行と同等です。

    # crm primitive ipaddr IPaddr2 ip=192.168.0.55
  • crmシェルスクリプトとして使用: シェルスクリプトにはcrmcrmのサブコマンドが含まれます。詳細については、5.5.4項 「crmshのシェルスクリプトの使用」を参照してください。

  • crmshクラスタスクリプトとして使用:これらは、メタデータ、RPMパッケージへの参照、設定ファイル、およびcrmshサブコマンドを1つのわかりやすい名前でバンドルしてまとめたものです。crm scriptコマンドを使用して管理します。

    これらをcrmshシェルスクリプトと混同しないでください。両方に共通する目的はいくつかありますが、crmシェルスクリプトにはサブコマンドのみが含まれるのに対し、クラスタスクリプトにはコマンドの単純なエミュレーション以上の処理が組み込まれています。詳細については、5.5.5項 「crmshのクラスタスクリプトの使用」を参照してください。

  • 内部シェルとして対話式に使用:crm」とタイプして、内部シェルに入ります。プロンプトがcrm(live))に変化します。helpを使用すると、利用可能なサブコマンドの概要を取得できます。内部シェルにはさまざまなサブコマンドレベルがあり、1つのサブコマンドをタイプしてEnterを押すことで、そのサブコマンドのレベルに入ることができます。

    たとえば、「resource」とタイプすると、リソース管理レベルに入ります。プロンプトはcrm(live)resource##に変わります。内部シェルを終了するには、コマンドquitを使用します。1レベル戻る場合は、backupend、またはcdを使用します。

    crm、そしてオプションを付けずに各サブコマンドを入力してEnterを押すと、そのレベルに直接入ることができます。

    内部シェルは、サブコマンドとリソースのタブによる完了もサポートします。コマンドの冒頭をタイプして<Tab>を押すと、crmがそのオブジェクトを完了します。

crmshは、同期のコマンドの実行もサポートしています。これを有効にするには、-wオプションを使用します。crm-wなしで起動した場合でも、後ほどユーザ初期設定のwaityes (options wait yes)に設定すれば、有効にすることができます。このオプションが有効化される場合、crmは遷移が終了するまで待機します。処理が開始すると毎回、進行状況を示すための点が印刷されます。同期コマンドの実行はresource startなどのコマンドにのみ適用できます。

注記
注記: 管理サブコマンドと設定サブコマンド間の相違

crmツールには管理機能(サブコマンドresourceおよびnode)があり、設定に使用できます(configurecib)。

以降のサブセクションでは、crmツールの重要な側面について、その概要を示します。

5.5.3 OCFリソースエージェントに関する情報の表示

リソースエージェントはクラスタ設定で常に操作する必要があるため、crmツールには、raコマンドが含まれています。このコマンドを使用して、リソースエージェントの情報を表示し、リソースエージェントを管理します(詳細は6.2項 「サポートされるリソースエージェントクラス」も参照)。

# crm ra
crm(live)ra# 

コマンドclassesは、すべてのクラスとプロバイダを一覧表示します。

crm(live)ra# classes
 lsb
 ocf / heartbeat linbit lvm2 ocfs2 pacemaker
 service
 stonith
 systemd

クラス(およびプロバイダ)に使用できるすべてのリソースエージェントの概要を取得するには、listコマンドを使用します。

crm(live)ra# list ocf
AoEtarget           AudibleAlarm        CTDB                ClusterMon
Delay               Dummy               EvmsSCC             Evmsd
Filesystem          HealthCPU           HealthSMART         ICP
IPaddr              IPaddr2             IPsrcaddr           IPv6addr
LVM                 LinuxSCSI           MailTo              ManageRAID
ManageVE            Pure-FTPd           Raid1               Route
SAPDatabase         SAPInstance         SendArp             ServeRAID
...

リソースエージェントの概要は、infoで表示できます。

crm(live)ra# info ocf:linbit:drbd
This resource agent manages a DRBD* resource
as a master/slave resource. DRBD is a shared-nothing replicated storage
device. (ocf:linbit:drbd)

Master/Slave OCF Resource Agent for DRBD

Parameters (* denotes required, [] the default):

drbd_resource* (string): drbd resource name
    The name of the drbd resource from the drbd.conf file.

drbdconf (string, [/etc/drbd.conf]): Path to drbd.conf
    Full path to the drbd.conf file.

Operations' defaults (advisory minimum):

    start         timeout=240
    promote       timeout=90
    demote        timeout=90
    notify        timeout=90
    stop          timeout=100
    monitor_Slave_0 interval=20 timeout=20 start-delay=1m
    monitor_Master_0 interval=10 timeout=20 start-delay=1m

ビューアは、「Q」を押すと終了できます。

ヒント
ヒント: crmを直接使用する

前の例では、crmコマンドの内部シェルを使用しました。ただし、必ずしも、それを使用する必要はありません。該当するサブコマンドをcrmに追加すれば、同じ結果が得られます。たとえば、すべてのOCFリソースエージェントを一覧するには、シェルに「crm ra list ocf 」」を入力すれば済みます。

5.5.4 crmshのシェルスクリプトの使用

crmshシェルスクリプトは、crmshサブコマンドをファイル内に列挙する便利な方法を提供します。これにより、特定の行をコメントしたり、これらのコメントを後で再生したりするのが簡単になります。crmshシェルスクリプトには「crmshサブコマンドのみ」を含めることができることに注意してください。他のコマンドは許可されていません。

crmshシェルスクリプトを使用するには、その前に特定のコマンドを使用してファイルを作成してください。たとえば、次のファイルにはクラスタのステータスが出力され、すべてのノードのリストが提供されます。

例 5.3: 単純なcrmshシェルスクリプト
# A small example file with some crm subcommands
status
node list

ハッシュ記号(#)で始まる行はコメントなので、無視されます。行が長すぎる場合は、行末にバックスラッシュ(\)を挿入して、次の行に続けます。読みやすさを向上させるために、特定のサブコマンドに属する行をインデントすることをお勧めします。

このスクリプトを使用するには、次の方法のいずれかを使用します。

# crm -f example.cli
# crm < example.cli

5.5.5 crmshのクラスタスクリプトの使用

すべてのクラスタノードから情報を収集して変更をすべて展開することは、鍵となるクラスタ管理タスクです。複数のノードで同じ手順を手動で実行するのはミスを起こしがちであるため、代わりにcrmshクラスタスクリプトを使用できます。

これらを「crmshシェルスクリプト」と混同しないでください(5.5.4項 「crmshのシェルスクリプトの使用」で説明)。

crmshシェルスクリプトとは対照的に、クラスタスクリプトでは次のような追加のタスクを実行します。

  • 特定のタスクに必要なソフトウェアをインストールする。

  • 設定ファイルを作成または変更する。

  • 情報を収集し、クラスタの潜在的な問題をレポートする。

  • 変更をすべてのノードに展開する。

crmshクラスタスクリプトは、他のクラスタ管理ツールを置き換えるものではなく、クラスタ全体に対して統合化された方法でこれらのタスクを実行できるようにします。詳細については、http://crmsh.github.io/scripts/を参照してください。

5.5.5.1 使用方法

利用可能なすべてのクラスタのリストを取得するには、次のコマンドを実行します。

# crm script list

スクリプトのコンポーネントを表示するには、showコマンドと、クラスタスクリプトの名前を使用します。次に例を示します。

# crm script show mailto
mailto (Basic)
MailTo

 This is a resource agent for MailTo. It sends email to a sysadmin
whenever  a takeover occurs.

1. Notifies recipients by email in the event of resource takeover

  id (required)  (unique)
      Identifier for the cluster resource
  email (required)
      Email address
  subject
      Subject

showの出力には、タイトル、短い説明、および手順が含まれます。各手順は一連のステップに分かれており、これらのステップを指定された順序で実行します。

各ステップには、必須パラメータとオプションパラメータのリスト、および短い説明とそのデフォルト値が含まれます。

各クラスタスクリプトは、一連の共通パラメータを認識します。これらのパラメータは任意のスクリプトに渡すことができます。

表 5.1: 共通パラメータ
パラメータ引数説明
actionINDEX設定した場合、1つのアクションのみを実行します(verifyによって返されたインデックス)。
dry_runBOOL設定した場合、実行のシミュレートのみを行います(デフォルト: no)。
nodesLISTスクリプト実行対象のノードのリスト。
portNUMBER接続先のポート。
statefileFILEシングルステップ実行の場合に、指定したファイルに状態を保存します。
sudoBOOL設定した場合、sudoパスワードを入力するようcrmによってプロンプトが表示され、必要に応じてsudoが使用されます(デフォルト: no)。
timeoutNUMBER秒単位での実行タイムアウト(デフォルト: 600)。
userUSER指定したユーザとしてスクリプトを実行します。

5.5.5.2 クラスタスクリプトの検証と実行

問題を避けるため、クラスタスクリプトを実行する前に、実行するアクションを確認してパラメータを検証します。クラスタスクリプトは一連のアクションを実行でき、さまざまな理由で失敗する可能性があります。そのため、実行前にパラメータを検証すると、問題の回避に役立ちます。

たとえば、mailtoリソースエージェントでは、固有の識別子と電子メールアドレスが必要です。これらのパラメータを検証するには、以下を実行します。

# crm script verify mailto id=sysadmin email=tux@example.org
1. Ensure mail package is installed

        mailx

2. Configure cluster resources

        primitive sysadmin MailTo
                email="tux@example.org"
                op start timeout="10"
                op stop timeout="10"
                op monitor interval="10" timeout="10"

        clone c-sysadmin sysadmin

verifyコマンドは各ステップを出力し、指定したパラメータでプレースホルダを置き換えます。verifyで問題が見つかった場合は報告します。問題がなければ、verifyコマンドをrunに置き換えます。

# crm script run mailto id=sysadmin email=tux@example.org
INFO: MailTo
INFO: Nodes: alice, bob
OK: Ensure mail package is installed
OK: Configure cluster resources

crm statusを使用して、リソースがクラスタに統合されているかどうかを確認します。

# crm status
[...]
 Clone Set: c-sysadmin [sysadmin]
     Started: [ alice bob ]

5.5.6 設定テンプレートの使用

注記
注記: 非推奨に関する注意

設定テンプレートの使用は非推奨で、今後削除される予定です。設定テンプレートはクラスタスクリプトに置き換えられます。5.5.5項 「crmshのクラスタスクリプトの使用」を参照してください。

設定テンプレートは、crmsh用の既成のクラスタ設定です。リソーステンプレート(6.8.2項 「crmshを使用したリソーステンプレートの作成」の説明を参照)と混同しないでください。これらはクラスタ用のテンプレートで、crmシェル用ではありません。

設定テンプレートは、最小限の操作で、特定ユーザのニーズに合わせて調整できます。テンプレートで設定を作成する際には、警告メッセージでヒントが与えられます。これは、後から編集することができ、さらにカスタマイズできます。

次の手順は、簡単ですが機能的なApache設定を作成する方法を示しています。

  1. rootとしてログインし、crm対話型シェルを開始します。

    # crm configure
  2. 設定テンプレートから新しい設定を作成します。

    1. templateサブコマンドに切り替えます。

      crm(live)configure# template
    2. 使用可能な設定テンプレートを一覧します。

      crm(live)configure template# list templates
      gfs2-base   filesystem  virtual-ip  apache   clvm     ocfs2    gfs2
    3. 必要な設定テンプレートを決めます。設定が必要なので、apacheapacheテンプレートを選択し、g-intranetと名付けます。

      crm(live)configure template# new g-intranet apache
      INFO: pulling in template apache
      INFO: pulling in template virtual-ip
  3. パラメータを定義します。

    1. 作成した設定を一覧表示します。

      crm(live)configure template# list
      g-intranet
    2. 入力を必要とする最小限の変更項目を表示します。

      crm(live)configure template# show
      ERROR: 23: required parameter ip not set
      ERROR: 61: required parameter id not set
      ERROR: 65: required parameter configfile not set
    3. 好みのテキストエディタを起動し、ステップ 3.bでエラーとして表示されたすべての行に入力します。

      crm(live)configure template# edit
  4. 設定を表示し、設定が有効かどうか確認します(太字のテキストは、ステップ 3.cで入力した設定によって異なります)。

    crm(live)configure template# show
    primitive virtual-ip ocf:heartbeat:IPaddr \
        params ip="192.168.1.101"
    primitive apache apache \
        params configfile="/etc/apache2/httpd.conf"
        monitor apache 120s:60s
    group g-intranet \
        apache virtual-ip
  5. 設定を適用します。

    crm(live)configure template# apply
    crm(live)configure# cd ..
    crm(live)configure# show
  6. 変更内容をCIBに送信します。

    crm(live)configure# commit

詳細がわかっていれば、コマンドをさらに簡素化できます。次のコマンドをシェルで使用して、上記の手順を要約できます。

# crm configure template \
   new g-intranet apache params \
   configfile="/etc/apache2/httpd.conf" ip="192.168.1.101"

内部crmシェルに入っている場合は、次のコマンドを使用します。

crm(live)configure template# new intranet apache params \
   configfile="/etc/apache2/httpd.conf" ip="192.168.1.101"

ただし、このコマンドは、設定テンプレートから設定を作成するだけです。設定をCIBに適用したり、コミットすることはありません。

5.5.7 シャドーイング設定のテスト

シャドー構成は、異なる構成シナリオのテストに使用されます。複数のシャドウ設定を作成した場合は、1つ1つテストして変更を加えた影響を確認できます。

通常の処理は次のようになります。

  1. rootとしてログインし、crm対話型シェルを開始します。

    # crm configure
  2. 新しいシャドウ設定を作成します。

    crm(live)configure# cib new myNewConfig
    INFO: myNewConfig shadow CIB created

    シャドウCIBの名前を省略する場合は、一時名の@tmp@が作成されます。

  3. 現在のライブ設定をシャドウ設定にコピーするには、次のコマンドを使用します。コピーしない場合は、このステップをスキップします。

    crm(myNewConfig)# cib reset myNewConfig

    このコマンドを使用すると、既存のリソースを後から編集する場合に、簡単に編集できます。

  4. 通常どおり変更を行います。シャドウ設定の作成後は、すべての変更がシャドウ設定に適用されます。すべての変更を保存するには、次のコマンドを使用します。

    crm(myNewConfig)# commit
  5. ライブクラスタ設定が再び必要な場合は、次のコマンドでライブ設定に戻ります。

    crm(myNewConfig)configure# cib use live
    crm(live)# 

5.5.8 設定の変更のデバッグ

設定の変更をクラスタにロードする前に、変更内容をptestでレビューすることを推奨します。ptestコマンドを指定すると、変更のコミットによって生じるアクションのダイアグラムを表示できます。ダイアグラムを表示するには、graphvizパッケージが必要です。次の例は監視操作を追加するスクリプトです。

# crm configure
crm(live)configure# show fence-bob
primitive fence-bob stonith:apcsmart \
        params hostlist="bob"
crm(live)configure# monitor fence-bob 120m:60s
crm(live)configure# show changed
primitive fence-bob stonith:apcsmart \
        params hostlist="bob" \
        op monitor interval="120m" timeout="60s"
crm(live)configure# ptest
crm(live)configure# commit

5.5.9 クラスタダイアグラム

クラスタダイアグラムを出力するには、コマンドcrm configure graphを使用します。これにより現在の設定が現在のウィンドウに表示されるので、X11が必要になります。

SVG (Scalable Vector Graphics)を使用する場合は、次のコマンドを使用します。

# crm configure graph dot config.svg svg

5.5.10 Corosync設定の管理

Corosyncは、ほとんどのHAクラスタの下層にあるメッセージング層です。corosyncサブコマンドは、Corosync設定を編集および管理するためのコマンドを提供します。

たとえば、クラスタのステータスを一覧表示するには、statusを使用します。

# crm corosync status
Printing ring status.
Local node ID 175704363
RING ID 0
        id      = 10.121.9.43
        status  = ring 0 active with no faults
Quorum information
------------------
Date:             Thu May  8 16:41:56 2014
Quorum provider:  corosync_votequorum
Nodes:            2
Node ID:          175704363
Ring ID:          4032
Quorate:          Yes

Votequorum information
----------------------
Expected votes:   2
Highest expected: 2
Total votes:      2
Quorum:           2
Flags:            Quorate

Membership information
----------------------
    Nodeid      Votes Name
 175704363          1 alice.example.com (local)
 175704619          1 bob.example.com

diffコマンドは、すべてのノード上のCorosync設定を比較し(別途記載のない場合)、それらの差異を出力します。

# crm corosync diff
--- bob
+++ alice
@@ -46,2 +46,2 @@
-       expected_votes: 2
-       two_node: 1
+       expected_votes: 1
+       two_node: 0

詳細については、http://crmsh.nongnu.org/crm.8.html#cmdhelp_corosyncを参照してください。

5.5.11 cib.xmlから独立したパスワードの設定

クラスタ設定にパスワードなどの機密の情報が含まれている場合、それらをローカルファイルに保存する必要があります。こうしておけば、これらのパラメータがログに記録されたり、サポートレポートに漏洩することはありません。

secretを使用する前に、すべてのリソースの概要を確認するため、showコマンドを実行します。

# crm configure show
primitive mydb mysql \
   params replication_user=admin ...

上記のmydbリソースに対してパスワードを設定するには、次のコマンドを使用します。

# crm resource secret mydb set passwd linux
INFO: syncing /var/lib/heartbeat/lrm/secrets/mydb/passwd to [your node list]

次のように、保存されたパスワードが返されます。

# crm resource secret mydb show passwd
linux

パラメータはノード間で同期する必要があります。crm resource secretコマンドがそれを処理します。秘密のパラメータを管理する場合には、このコマンドのみを使用することを強く推奨します。

5.6 詳細の参照先

http://crmsh.github.io/

crmシェル(crmsh)、High Availabilityクラスタ管理用の高度なコマンドラインインタフェースのホームページ。

http://crmsh.github.io/documentation

crmshを使用した基本的なクラスタセットアップの『Getting Started』チュートリアルとcrmシェルの包括的なManualを含む、crmシェルに関するいくつかのドキュメント。マニュアルはhttp://crmsh.github.io/man-2.0/で入手できます。チュートリアルはhttp://crmsh.github.io/start-guide/に用意されています。

http://clusterlabs.org/

High Availability Extensionに含まれているクラスタリソースマネージャであるPacemakerのホームページ。

http://www.clusterlabs.org/pacemaker/doc/

いくつかの包括的なマニュアルと一般的な概念を説明するより簡潔なドキュメント。例:

  • Pacemaker Explained』: 参考として包括的で詳細な情報が記載されています。

  • Colocation Explained

  • Ordering Explained