6 クラスタリソースの設定 #
クラスタの管理者は、クラスタ内のサーバ上の各リソースや、サーバ上で実行する各アプリケーションに対してクラスタリソースを作成する必要があります。クラスタリソースには、Webサイト、メールサーバ、データベース、ファイルシステム、仮想マシン、およびユーザが常時使用できるその他のサーバベースのアプリケーションまたはサービスなどが含まれます。
6.1 リソースのタイプ #
次のリソースタイプを作成できます。
- プリミティブ
プリミティブリソースは、リソースの中で最も基本的なタイプです。
- グループ
グループには、一緒の場所で見つけ、連続して開始し、逆の順序で停止する必要のあるリソースセットが含まれます。
- クローン
クローンは、複数のホスト上でアクティブにできるリソースです。対応するリソースエージェントがサポートしていれば、どのようなリソースもクローン化できます。
プロモータブルクローン(マルチステートリソースとも呼ばれていました)は、昇格できる特別なタイプのクローンリソースです。
6.2 サポートされるリソースエージェントクラス #
追加するクラスタリソースごとに、リソースエージェントが準拠する基準を定義する必要があります。リソースエージェントは、提供するサービスを抽象化して正確なステータスをクラスタに渡すので、クラスタは管理するリソースについてコミットする必要がありません。クラスタは、リソースエージェントに依存して、start、stop、またはmonitorのコマンドの発行に適宜対応します。
通常、リソースエージェントはシェルスクリプトの形式で配布されます。SUSE Linux Enterprise High Availabilityは次のリソースエージェントクラスをサポートします。
- Open Cluster Framework (OCF)リソースエージェント
OCF RAエージェントは、High Availabilityでの使用に最適であり、特に、プロモータブルクローンリソースまたは特殊なモニタリング機能を必要とする場合に適しています。それらのエージェントは、通常、
/usr/lib/ocf/resource.d/provider/
にあります。この機能はLSBスクリプトの機能と同様です。ただし、環境設定では、常に、パラメータの受け入れと処理を容易にする環境変数が使用されます。OCF仕様ではアクションによってどの出口コードが返されるか、厳密な定義があります。10.3項 「OCF戻りコードと障害回復」を参照してください。クラスタは、それらの仕様に正確に準拠します。すべてのOCFリソースエージェントは少なくとも
start
、stop
、status
、monitor
およびmeta-data
の各アクションが必要です。meta-data
アクションは、エージェントの設定方法についての情報を取得します。たとえば、プロバイダIPaddr
でheartbeat
エージェントの詳細を知るには、次のコマンドを使用します。OCF_ROOT=/usr/lib/ocf /usr/lib/ocf/resource.d/heartbeat/IPaddr meta-data
出力は、XML形式の情報であり、いくつかのセクションを含みます(一般説明、利用可能なパラメータ、エージェント用の利用可能なアクション)。
または、crmshを使用して、OCFリソースエージェントに関する情報を表示します。詳細については、5.5.4項 「OCFリソースエージェントに関する情報の表示」を参照してください。
- Linux Standards Base (LSB)スクリプト
LSBリソースエージェントは一般にオペレーティングシステム/配布パッケージによって提供され、
/etc/init.d
にあります。リソースエージェントをクラスタで使用するには、それらのエージェントがLSB iniスクリプトの仕様に準拠している必要があります。たとえば、エージェントには複数のアクションが実装されている必要があります。少なくともstart
、stop
、restart
、reload
、force-reload
およびstatus
が実装されている必要があります。詳細については、https://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.htmlを参照してください。これらのサービスの構成は標準化されていません。High AvailabilityでLSBスクリプトを使用する場合は、該当のスクリプトの設定方法を理解する必要があります。これに関する情報は、多くの場合、
/usr/share/doc/packages/PACKAGENAME
内の該当パッケージのマニュアルに記載されています。- systemd
Pacemakerは、systemdサービスが存在する場合は、それを管理できます。initスクリプトの代わりに、systemdはユニットファイルを持ちます。一般的に、サービス(またはユニットファイル)は、オペレーティングシステムによって提供されます。既存のinitスクリプトを変換する場合は、https://0pointer.de/blog/projects/systemd-for-admins-3.htmlで詳細情報を検索してください。
- サービス
現在、並列に存在するタイプのシステムサービスが多数あります:
LSB
(System V initに属する)、systemd
、および(一部のディストリビューションでは)upstart
。そのため、Pacemakerは、どれが指定のクラスタノードに適用されるのかを理解する特殊なエイリアスをサポートします。これは、クラスタにsystemd、upstart、およびLSBサービスが混在する場合には特に役立ちます。Pacemakerは、次の順番で指定されたサービスを検索しようとします: LSB (SYS-V) initスクリプト、systemdユニットファイル、またはUpstartジョブ。- Nagios
モニタリングプラグイン(かつてはNagiosプラグインと呼ばれていた)により、リモートホスト上のサービスを監視できます。Pacemakerは、モニタリングプラグインが存在する場合は、これを使用してリモートモニタリングを実行できます。詳細については、9.1項 「監視プラグインを使用したリモートホストでのサービスの監視」を参照してください。
- STONITH(フェンシング)リソースエージェント
このクラスは、フェンシング関係のリソース専用に使用されます。詳細については、第12章 「フェンシングとSTONITH」を参照してください。
SUSE Linux Enterprise High Availabilityによって提供されるエージェントは、OCFの仕様に基づいて開発されています。
6.3 タイムアウト値 #
リソースのタイムアウト値は次の3つのパラメータの影響を受けることがあります。
op_defaults
(操作用のグローバルタイムアウト)リソーステンプレートに対して定義された特定のタイムアウト値
リソースに対して定義された特定のタイムアウト値
リソースに対して「特定の」値が定義される場合、グローバルデフォルトより優先されます。また、リソースに対して定義された特定の値は、リソーステンプレートで定義された値より優先されます。
タイムアウト値を適切に設定することは非常に重要です。これらの値を短くしすぎると、次のような理由で、多数の(不必要な)フェンシング処理が発生します。
リソースでタイムアウトが発生すると、リソースは失敗し、クラスタはリソースを停止しようとします。
リソースの停止も失敗した場合(たとえば、停止用タイムアウトの設定が低すぎるため)、クラスタはノードをフェンシングします。これが制御不能になるノードを考慮します。
操作に対するグローバルデフォルトを調整し、crmshおよびHawk2の両方で特定のタイムアウト値を設定できます。タイムアウト値の決定および設定のベストプラクティスは次のとおりです。
負荷の下でリソースが開始および停止するためにかかる時間を確認します。
必要な場合、パラメータ
op_defaults
を追加し、それに応じて(デフォルトの)タイムアウト値を設定します。たとえば、
op_defaults
を60
秒に設定します。crm(live)configure#
op_defaults timeout=60
さらに長い時間を必要とするリソースについては、個別の値を定義します。
あるリソースに対して操作を設定する場合には、個別の
start
操作およびstop
操作を追加します。Hawk2を使用して設定する場合、これらの操作に適したタイムアウト値候補が表示されます。
6.4 プリミティブリソースの作成 #
リソースは、クラスタで使用する前にセットアップする必要があります。たとえば、Apacheサーバをクラスタリソースとして使用するには、まず、Apacheサーバをセットアップし、Apacheの環境設定を完了してから、クラスタで個々のリソースを起動します。
リソースに特定の環境要件がある場合は、それらの要件がすべてのクラスタノードに存在し、同一であることを確認してください。SUSE Linux Enterprise High Availabilityはこの種の設定は管理しません。これは、管理者自身が行う必要があります。
Hawk2またはcrmshのいずれかを使用してプリミティブリソースを作成できます。
SUSE Linux Enterprise High Availabilityでリソースを管理しているときに、同じリソースを他の方法(クラスタ外で、たとえば、手動、ブート、再起動など)で開始したり、停止してはいけません。High Availabilityソフトウェアが、すべてのサービスの開始または停止アクションを実行します。
サービスがクラスタ制御下ですでに実行された後にテストまたは保守タスクを実行する必要がある場合は、リソース、ノード、またはクラスタ全体を保守モードに設定してから、これらのいずれかに手動でタッチしてください。詳細については、28.2項 「保守タスクのためのさまざまなオプション」を参照してください。
クラスタリソースとクラスタノードは異なる名前にする必要があります。同じ名前にするとHawk2で障害が発生します。
6.4.1 Hawk2を使用したプリミティブリソースの作成 #
最も基本的なタイプのリソースを作成するには、次の手順に従います。
Hawk2にログインします。
https://HAWKSERVER:7630/
左のナビゲーションバーから、
› › の順に選択します。固有の
を入力します。リソース設定の基にするリソーステンプレートが存在する場合は、
で目的のテンプレートを選択します。lsb
、ocf
、service
、stonith
、またはsystemd
から選択できます。詳細については、6.2項 「サポートされるリソースエージェントクラス」を参照してください。ocf
をクラスとして選択した場合、OCFリソースエージェントの を指定します。OCFの指定によって、複数のベンダが同じリソースエージェントを提供できるようになります。- 注記図 6.1: Hawk2 - プリミティブリソース #
リソースの基本を指定すると、Hawk2には次のカテゴリが表示されます。Hawk2の提案に従ってこれらのカテゴリを保持するか、必要に応じて編集します。
- パラメータ(インスタンス属性)
リソースが制御するサービスのインスタンスを決定します。リソースを作成する際、Hawk2は必要なパラメータを自動的に表示します。これらを編集して、有効なリソースの設定を取得します。
詳細については、6.13項 「インスタンス属性(パラメータ)」を参照してください。
- 操作
リソース監視に必要です。リソースを作成する際、Hawk2は、最も重要なリソース操作(
monitor
、start
およびstop
)を表示します。詳細については、6.14項 「リソース操作」を参照してください。
- メタ属性
特定のリソースの処理方法をCRMに指示します。リソースを作成する際、Hawk2はそのリソースの重要なメタ属性を自動的にリストにします(たとえばリソースの初期状態を定義する
target-role
属性です。デフォルトではStopped
に設定されているため、リソースはすぐには始動しません)。詳細については、6.12項 「リソースオプション(メタ属性)」を参照してください。
- 使用率
特定のリソースがノードから要求する容量をCRMに指示します。
詳細については、7.10.1項 「Hawk2を使用した負荷インパクトに基づくリソースの配置」を参照してください。
6.4.2 crmshを使用したプリミティブリソースの作成 #
root
としてログインし、crm
ツールを開始します。#
crm configure
プリミティブIPアドレスを設定します。
crm(live)configure#
primitive myIP IPaddr \ params ip=127.0.0.99 op monitor interval=60s
前のコマンドは「プリミティブ」に名前
myIP
を設定します。クラス(ここではocf
)、プロバイダ(heartbeat
)、およびタイプ(IPaddr
)を選択する必要がありますさらに、このプリミティブでは、IPアドレスなどのパラメータが必要です。自分の設定に合わせてアドレスを変更してください。行った変更を表示して確認します。
crm(live)configure#
show
変更をコミットして反映させます。
crm(live)configure#
commit
6.5 リソースグループの作成 #
クラスタリソースの中には、他のコンポーネントやリソースに依存しているものもあります。それぞれのコンポーネントやリソースが決められた順序で開始され、依存しているリソースと同じサーバ上で同時に実行していなければならない場合があります。この設定を簡素化するには、クラスタリソースグループを使用できます。
Hawk2またはcrmshのいずれかを使用してリソースグループを作成できます。
リソースグループの一例として、IPアドレスとファイルシステムを必要とするWebサーバがあります。この場合、各コンポーネントは、個々のリソースであり、それらが組み合わされてクラスタリソースグループを構成します。リソースグループは、1つ以上のサーバで実行されます。ソフトウェアまたはハードウェアが機能しない場合には、個々のクラスタリソースと同様に、グループはクラスタ内の別のサーバにフェールオーバーします。
グループには次のプロパティがあります。
- 開始と停止
リソースは認識される順序で開始し、逆の順番で停止します。
- 依存関係
グループ内のリソースがどこかで開始できない場合は、グループ内のその後の全リソースは実行することができません。
- 目次
グループにはプリミティブクラスタリソースしか含むことができません。グループには1つ以上のリソースを含む必要があります。空の場合は設定は無効になります。グループリソースの子を参照するには、グループのIDではなく子のIDを使用します。
- 制約
制約でグループの子を参照することはできますが、通常はグループ名を使用することをお勧めします。
- 固着性
固着性はグループ内で統合可能なプロパティです。グループ内の「アクティブな」各メンバーは、グループの合計値に対して固着性を追加します。したがって、デフォルトの
resource-stickiness
が100
で、グループに7つのメンバーがあり、そのうち5つがアクティブな場合は、グループが全体として、スコア500
で、現在の場所を優先します。- リソース監視
グループのリソース監視を有効にするには、グループ内で監視の必要な各リソースに対して監視を設定する必要があります。
6.5.1 Hawk2を使用したリソースグループの作成 #
グループには1つ以上のリソースを含む必要があります。空の場合は設定は無効になります。グループの作成中に、Hawk2ではさらにプリミティブを作成し、それらをグループに追加できます。
Hawk2にログインします。
https://HAWKSERVER:7630/
左のナビゲーションバーから、
› › の順に選択します。固有の
を入力します。グループメンバーを定義するには、「ハンドル」アイコンを使用して、メンバーを目的の順序にドラッグアンドドロップします。
リストで1つまたは複数のエントリを選択します。グループメンバーを再ソートするには、右側の必要に応じて、
を変更または追加します。
6.5.2 crmshを使用したリソースグループの作成 #
次の例では、2つのプリミティブ(IPアドレスと電子メールリソース)を作成します。
crm
コマンドをシステム管理者として実行します。プロンプトがcrm(live)
に変化します。プリミティブを設定します。
crm(live)#
configure
crm(live)configure#
primitive Public-IP ocf:heartbeat:IPaddr2 \ params ip=1.2.3.4 \ op monitor interval=10s
crm(live)configure#
primitive Email systemd:postfix \ op monitor interval=10s
該当するIDを使用して、正しい順序で、プリミティブをグループ化します。
crm(live)configure#
group g-mailsvc Public-IP Email
6.6 クローンリソースの作成 #
クラスタ内の複数のノードで特定のリソースを同時に実行することができます。このためには、リソースをクローンとして設定する必要があります。クローンとして設定するリソースの一例として、OCFS2などのクラスタファイルシステムが挙げられます。提供されているどのリソースも、クローンとして設定できます。これは、リソースのリソースエージェントによってサポートされます。クローンリソースは、ホスティングされているノードによって異なる設定をすることもできます。
リソースクローンには次の3つのタイプがあります。
- 匿名クローン
最も簡単なクローンタイプです。実行場所にかかわらず、同じ動作をします。このため、マシンごとにアクティブな匿名クローンのインスタンスは1つだけ存在できます。
- グローバルに固有なクローン
このリソースは独自のエントリです。1つのノードで実行しているクローンのインスタンスは、別なノードの別なインスタンスとは異なり、同じノードの2つのインスタンスが同一になることもありません。
- プロモータブルクローン(マルチステートリソース)
このリソースのアクティブインスタンスは、アクティブとパッシブという2つの状態に分けられます。これらはプライマリとセカンダリと呼ばれる場合もあります。プロモータブルクローンが、匿名またはグローバルに固有の場合もあります。詳細については、6.7項 「プロモータブルクローン(マルチステートリソース)の作成」を参照してください。
クローンは、グループまたは通常リソースを1つだけ含む必要があります。
リソースのモニタリングまたは制約を設定する場合、クローンには、単純なリソースとは異なる要件があります。詳細については、『Pacemaker Explained』(https://www.clusterlabs.org/pacemaker/doc/から入手可)を参照してください。
Hawk2またはcrmshのいずれかを使用してクローンリソースを作成できます。
6.6.1 Hawk2を使用したクローンリソースの作成 #
クローンには、プリミティブまたはグループのいずれかを子リソースとして含めることができます。Hawk2では、クローンの作成中に子リソースを作成したり変更したりすることはできません。クローンを追加する前に、子リソースを作成し、必要に応じて設定しておいてください。
Hawk2にログインします。
https://HAWKSERVER:7630/
左のナビゲーションバーから、
› › の順に選択します。固有の
を入力します。必要に応じて、
を変更または追加します。
6.6.2 crmshを使用したクローンリソースの作成 #
匿名クローンリソースを作成するには、まずプリミティブリソースを作成して、それをclone
コマンドで指定します。
root
としてログインし、crm
対話型シェルを開始します。#
crm configure
次のように、プリミティブを設定します。
crm(live)configure#
primitive Apache apache
プリミティブをクローンします。
crm(live)configure#
clone cl-apache Apache
6.7 プロモータブルクローン(マルチステートリソース)の作成 #
プロモータブルクローン(以前はマルチステートリソースと呼ばれていました)は、クローンが得意とするところです。これにより、インスタンスを2つの動作モード(プライマリまたはセカンダリ)のいずれかに設定できます。プロモータブルクローンは、グループまたは通常リソースを1つだけ含む必要があります。
リソースのモニタリングまたは制約を設定する場合、プロモータブルクローンには、単純なリソースとは異なる要件があります。詳細については、『Pacemaker Explained』(https://www.clusterlabs.org/pacemaker/doc/から入手可)を参照してください。
Hawk2またはcrmshのいずれかを使用してプロモータブルクローンを作成できます。
6.7.1 Hawk2を使用したプロモータブルクローンの作成 #
プロモータブルクローンには、プリミティブまたはグループのいずれかを子リソースとして含めることができます。Hawk2では、プロモータブルクローンの作成中に子リソースを作成したり変更したりすることはできません。プロモータブルクローンを追加する前に、子リソースを作成し、必要に応じて設定します。6.4.1項 「Hawk2を使用したプリミティブリソースの作成」または6.5.1項 「Hawk2を使用したリソースグループの作成」を参照してください。
Hawk2にログインします。
https://HAWKSERVER:7630/
左のナビゲーションバーから、
› › の順に選択します。必要に応じて、
を変更または追加します。
6.7.2 crmshを使用したプロモータブルクローンの作成 #
プロモータブルクローンリソースを作成するには、まずプリミティブリソースを作成してから、プロモータブルクローンリソースを作成します。プロモータブルクローンリソースは少なくとも、昇格および降格操作をサポートしている必要があります。
root
としてログインし、crm
対話型シェルを開始します。#
crm configure
プリミティブを作成します。必要に応じて間隔を変更します。
crm(live)configure#
primitive my-rsc ocf:myCorp:myAppl \ op monitor interval=60 \ op monitor interval=61 role=Promoted
プロモータブルクローンリソースを作成します。
crm(live)configure#
clone clone-rsc my-rsc meta promotable=true
6.8 リソーステンプレートの作成 #
類似した設定のリソースを多く作成する最も簡単な方法は、リソーステンプレートを定義することです。定義されたテンプレートは、プリミティブ内で参照したり、7.3項 「リソーステンプレートと制約」で説明するように、特定のタイプの制約内で参照することができます。
プリミティブ内でテンプレートを参照すると、そのテンプレートで定義されている操作、インスタンス属性(パラメータ)、メタ属性、使用属性がすべてプリミティブに継承されます。さらに、プリミティブに対して特定の操作または属性を定義することもできます。これらのいずれかがテンプレートとプリミティブの両方で定義されていた場合、プリミティブで定義した値の方が、テンプレートで定義された値よりも優先されます。
Hawk2またはcrmshのいずれかを使用してリソーステンプレートを作成できます。
6.8.1 Hawk2を使用したリソーステンプレートの作成 #
リソーステンプレートは、プリミティブリソースと同様の方法で設定します。
Hawk2にログインします。
https://HAWKSERVER:7630/
左のナビゲーションバーから、
› › の順に選択します。固有の
を入力します。手順6.2「Hawk2を使用したプリミティブリソースの追加」のステップ 5以降の手順に従います。
6.8.2 crmshを使用したリソーステンプレートの作成 #
次の構文を知るには、rsc_template
コマンドを使用してください。
#
crm configure rsc_template
usage: rsc_template <name> [<class>:[<provider>:]]<type> [params <param>=<value> [<param>=<value>...]] [meta <attribute>=<value> [<attribute>=<value>...]] [utilization <attribute>=<value> [<attribute>=<value>...]] [operations id_spec [op op_type [<attribute>=<value>...] ...]]
たとえば、次のコマンドは、ocf:heartbeat:Xen
リソースと、デフォルト値および操作に由来するBigVM
の名前を持つ新しいリソーステンプレートを作成します。
crm(live)configure#
rsc_template BigVM ocf:heartbeat:Xen \ params allow_mem_management="true" \ op monitor timeout=60s interval=15s \ op stop timeout=10m \ op start timeout=10m
新しいリソーステンプレートを定義したら、それをプリミティブとして使用すること、または順序、コロケーション、またはrsc_ticketの制約で参照することができます。リソーステンプレートを参照するには、@
記号を使用します。
crm(live)configure#
primitive MyVM1 @BigVM \ params xmfile="/etc/xen/shared-vm/MyVM1" name="MyVM1"
新しいプリミティブMy-VM1は、BigVMリソーステンプレートからすべてを継承します。たとえば、上の2つに等しいものは次のようになります。
crm(live)configure#
primitive MyVM1 Xen \ params xmfile="/etc/xen/shared-vm/MyVM1" name="MyVM1" \ params allow_mem_management="true" \ op monitor timeout=60s interval=15s \ op stop timeout=10m \ op start timeout=10m
オプションや操作を上書きしたい場合は、自分の(プリミティブの)定義を追加します。たとえば、次の新しいプリミティブMyVM2は監視操作のタイムアウトを2倍にしますが、その他はそのままに残します。
crm(live)configure#
primitive MyVM2 @BigVM \ params xmfile="/etc/xen/shared-vm/MyVM2" name="MyVM2" \ op monitor timeout=120s interval=30s
リソーステンプレートは、そのテンプレートから派生するすべてのプリミティブを表すものとして、制約で参照することができます。これにより、クラスタ設定をいっそう簡潔かつクリアに行うことができます。リソーステンプレートは、場所の制約を除くすべての制約から参照することができます。コロケーション制約には、複数のテンプレート参照を含めることはできません。
6.9 STONITHリソースの作成 #
クラスタにはノードフェンシングメカニズムが必要です。
グローバルクラスタオプション
stonith-enabled
およびstartup-fencing
はtrue
に設定する必要があります。これらを変更するとサポートされなくなります。
デフォルトでは、グローバルクラスタオプションのstonith-enabled
はtrue
に設定されています。STONITHリソースが定義されていない場合、クラスタはどのリソースも開始することを拒否します。STONITHリソースが定義されていない場合、クラスタはどのリソースを開始することも拒否します。1つ以上のSTONITHリソースを設定して、STONITHのセットアップを完了します。STONITHリソースは他のリソースと同様に設定しますが、その動作はいくつかの点で異なっています。詳細については、12.3項 「STONITHのリソースと環境設定」を参照してください。
Hawk2またはcrmshのいずれかを使用してSTONITHリソースを作成できます。
6.9.1 Hawk2を使用したSTONITHリソースの作成 #
SBD、libvirt (KVM/Xen)、またはvCenter/ESX ServerのSTONITHリソースを追加する場合、Hawk2ウィザードを使用するのが最も簡単な方法です。
Hawk2にログインします。
https://HAWKSERVER:7630/
左のナビゲーションバーから、
› › の順に選択します。固有の
を入力します。Hawk2は、自動的にそのリソースに必要な
を表示します。それぞれのパラメータの値を入力します。Hawk2は、重要なリソース
を表示し、デフォルト値を提案します。設定を変更しない場合、確定するとすぐに、Hawk2は提案した操作およびデフォルト値を追加します。変更理由がない場合は、デフォルトの
設定を保持します。図 6.5: Hawk2 - STONITHリソース #変更を確認して、STONITHリソースを作成します。
画面上部に、アクションが成功したかどうかを示すメッセージが表示されます。
フェンシングを設定するには、制約を追加します。詳細については、第12章 「フェンシングとSTONITH」を参照してください。
6.9.2 crmshを使用したSTONITHリソースの作成 #
root
としてログインし、crm
対話型シェルを開始します。#
crm
次のコマンドで、すべてのSTONITHタイプのリストを取得します。
crm(live)#
ra list stonith
apcmaster apcmastersnmp apcsmart baytech bladehpi cyclades drac3 external/drac5 external/dracmc-telnet external/hetzner external/hmchttp external/ibmrsa external/ibmrsa-telnet external/ipmi external/ippower9258 external/kdumpcheck external/libvirt external/nut external/rackpdu external/riloe external/sbd external/vcenter external/vmware external/xen0 external/xen0-ha fence_legacy ibmhmc ipmilan meatware nw_rpc100s rcd_serial rps10 suicide wti_mpc wti_nps上記のリストからSTONITHタイプを選択し、利用できるオプションのリストを表示します。次のコマンドを実行します。
crm(live)#
ra info stonith:external/ipmi
IPMI STONITH external device (stonith:external/ipmi) ipmitool based power management. Apparently, the power off method of ipmitool is intercepted by ACPI which then makes a regular shutdown. In case of a split brain on a two-node, it may happen that no node survives. For two-node clusters, use only the reset method. Parameters (* denotes required, [] the default): hostname (string): Hostname The name of the host to be managed by this STONITH device. ...stonith
クラス、ステップ 3で選択したタイプ、および必要に応じて該当するパラメータを使用して、STONITHリソースを作成します。たとえば、次のようにします。crm(live)#
configure
crm(live)configure#
primitive my-stonith stonith:external/ipmi \ params hostname="alice" \ ipaddr="192.168.1.221" \ userid="admin" passwd="secret" \ op monitor interval=60m timeout=120s
6.10 リソース監視の設定 #
リソースが実行中であるかどうか確認するには、そのリソースにリソースの監視を設定しておく必要があります。Hawk2またはcrmshのいずれかを使用してリソース監視を設定できます。
リソースモニタが障害を検出すると、次の処理が行われます。
/etc/corosync/corosync.conf
のlogging
セクションで指定された設定に従って、ログファイルメッセージが生成されます。障害がクラスタ管理ツール(Hawk2、
crm status
)と、CIBステータスセクションに反映されます。クラスタが明瞭な復旧アクションを開始します。これらのアクションには、リソースを停止して障害状態を修復する、ローカルまたは別のノードでリソースを再起動するなどが含まれる場合があります。設定やクラスタの状態によっては、リソースが再起動されないこともあります。
リソースの監視を設定しなかった場合、開始成功後のリソース障害は通知されず、クラスタは常にリソース状態を良好として表示してしまいます。
通常、リソースは動作中にのみ、クラスタによって監視されます。しかし、同時実行違反を検出するために、停止されるリソースの監視も設定する必要があります。リソースを監視するには、タイムアウト、開始遅延のいずれか、または両方と、間隔を指定します。間隔の指定によって、CRMにリソースステータスの確認頻度を指示します。timeout
またはstart
操作に対するstop
など、特定のパラメータも設定できます。
監視操作パラメータの詳細については、6.14項 「リソース操作」を参照してください。
6.10.1 Hawk2を使用したリソース監視の設定 #
Hawk2にログインします。
https://HAWKSERVER:7630/
手順6.2「Hawk2を使用したプリミティブリソースの追加」の説明に従ってリソースを追加するか、既存のプリミティブを選択して編集します。
Hawk2は、最も重要な
(start
、stop
、monitor
)を自動的に表示し、デフォルト値を提案します。提案された各値に属する属性を参照するには、マウスポインタをそれぞれの値に合わせます。
図 6.6: 操作値 #timeout
またはstart
操作に対して提案されたstop
の値を変更するには、次の手順に従います。操作の隣のペンアイコンをクリックします。
表示されるダイアログで、
timeout
パラメータに別の値(例:10
)を入力し、変更内容を確認します。
monitor
の値を変更するには、次の手順に従います。操作の隣のペンアイコンをクリックします。
表示されるダイアログで、
interval
に対して監視間隔の別の値を入力します。リソースが停止されている場合にリソース監視を設定するには、次の手順に従います。
下にある空のドロップダウンボックスから
role
エントリを選択します。role
ドロップダウンボックスから、Stopped
を選択します。
リソース設定画面で変更内容を確認します。画面上部に、アクションが成功したかどうかを示すメッセージが表示されます。
リソースの障害を表示するには、Hawk2で
画面に切り替えて、関係するリソースを選択します。 列で、下矢印アイコンをクリックして を選択します。表示されるダイアログに、リソースに対して実行された最近のアクションが一覧表示されます。障害は赤で表示されます。リソースの詳細を表示するには、 列で虫眼鏡アイコンをクリックします。6.10.2 crmshを使用したリソース監視の設定 #
リソースを監視するには、2つの方法(op
キーワードで監視処理を定義するか、monitor
コマンドを使用するか)があります。次の例では、Apacheリソースを設定し、op
キーワードを使用して60秒ごとに監視します。
crm(live)configure#
primitive apache apache \ params ... \ op monitor interval=60s timeout=30s
次のコマンドを使用して同じ操作を実行できます。
crm(live)configure#
primitive apache apache \ params ...
crm(live)configure#
monitor apache 60s:30s
- 停止されたリソースの監視
通常、リソースは動作中にのみ、クラスタによって監視されます。しかし、同時実行違反を検出するために、停止されるリソースの監視も設定する必要があります。例:
crm(live)configure#
primitive dummy1 Dummy \ op monitor interval="300s" role="Stopped" timeout="10s" \ op monitor interval="30s" timeout="10s"
この設定は、
300
秒ごとに、リソースdummy1
に対する監視操作をトリガします。これは、リソースがrole="Stopped"
に入ると有効になります。実行中には、リソースは30
秒ごとに監視されます。- プローブ
CRMはすべてのノードの各リソースに対して、
probe
と呼ばれる初期監視を実行します。probeはリソースのクリーンアップ後にも実行されます。1つのリソースに対して複数の監視操作が定義されている場合、CRMは最も時間間隔の短い監視操作を1つ選択し、そのタイムアウト値をプローブのデフォルトタイムアウトとして使用します。監視操作が何も設定されていない場合は、クラスタ規模のデフォルトが適用されます。デフォルトは、20
秒です(別途op_defaults
パラメータを設定して指定されていない場合)。自動計算やop_defaults
の値に依存したくない場合は、このリソースの「プローブ」に対して特定の監視操作を定義します。interval
を0
に設定した監視操作を追加することで、この操作を行います。たとえば次のようになります。crm(live)configure#
primitive rsc1 ocf:pacemaker:Dummy \ op monitor interval="0" timeout="60"
rsc1
のプローブは60s
でタイムアウトになります。この値は、op_defaults
で定義されているグローバルなタイムアウト値や、その他の操作で設定されたタイムアウト値とは無関係です。それぞれのリソースのプローブを指定するためにinterval="0"
を設定していない場合、CRMは、そのリソースに定義されている監視操作が他にないかどうかを自動的に確認し、上で説明されているようにプローブのタイムアウト値を計算します。
6.11 ファイルからのリソースのロード #
設定の一部またはすべてをローカルファイルまたはネットワークURLからロードできます。次の3つの異なる方法を定義できます。
replace
このオプションは、現在の設定を新たなソース設定に置き換えます。
update
このオプションは、ソース設定のインポートを試みます。現在の設定に新たな項目を追加したり、既存の項目を更新したりします。
push
このオプションは、ソースからのコンテンツを現在の設定にインポートします(
update
と同じ)。ただし、新しい設定で使用できないオブジェクトを削除します。
ファイルmycluster-config.txt
から新しい設定をロードするには、次の構文を使用します。
#
crm configure load push mycluster-config.txt
6.12 リソースオプション(メタ属性) #
追加した各リソースについて、オプションを定義できます。クラスタはオプションを使用して、リソースの動作方法を決定します。CRMに特定のリソースの処理方法を通知します。リソースオプションは、crm_resource --meta
コマンドまたはHawk2を使用して設定できます。
以下のリストは、一般的なオプションを示しています。
priority
すべてのリソースをアクティブにできるわけではない場合、クラスタは優先度の低いリソースを停止して、優先度の高いリソースをアクティブに保ちます。
デフォルトの設定は
0
です。target-role
クラスタが維持しようとするこのリソースの状態。使用できる値:
Stopped
,Started
,Unpromoted
,Promoted
.デフォルトの設定は
Started
です。is-managed
クラスタがリソースを開始して停止できるかどうか。使用できる値:
true
,false
.値がfalse
に設定されていても、リソースの状態は引き続き監視され、障害が発生した場合は報告されます。これは、リソースをmaintenance="true"
"に設定するのとは異なります。デフォルトの設定は
true
です。maintenance
リソースは手動でタッチできるかどうか。使用できる値:
true
,false
.true
に設定されている場合、すべてのリソースは非管理になります。つまり、クラスタはリソースの監視を停止し、その状態を認識しなくなります。クラスタによってクラスタリソースの再起動が試行される代わりに、ユーザがクラスタリソースを停止または再起動できます。デフォルトの設定は
false
です。resource-stickiness
リソースが現在の状態をどの程度維持したいか。
デフォルト値は、個別のクローンインスタンスに対しては
1
、その他すべてのリソースに対しては0
です。migration-threshold
ノードがこのリソースをホストできなくなるまで、このリソースについてノード上で発生する失敗の回数。
デフォルトの設定は
INFINITY
です。multiple-active
複数のノードでアクティブなリソースを検出した場合のクラスタの動作。使用できる値:
block
(リソースを管理されていないとマークする)、stop_only
、stop_start
。デフォルトの設定は
stop_start
です。failure-timeout
失敗が発生していないかように動作する(場合によっては、リソースを失敗したノードに戻す)前に、待機する秒数。
デフォルト値は
0
(無効)です。allow-migrate
migrate_to
アクションおよびmigrate_from
アクションをサポートするリソースのライブマイグレーションを許可するかどうか。値がtrue
に設定されている場合、リソースは状態を失うことなく移行できます。値がfalse
に設定されている場合、リソースは最初のノードでシャットダウンされ、2つ目のノードで再起動されます。デフォルト値は、
ocf:pacemaker:remote
リソースに対してはtrue
、その他すべてのリソースに対してはfalse
です。allow-unhealthy-nodes
通常であればノードのヘルススコアが低くリソースを実行できない場合でも、この設定によりリソースがノード上で実行されることを許可します。
デフォルトの設定は
false
です。remote-node
このリソースが定義するリモートノードの名前。これにより、リモートノードのリソースが有効化されるだけでなく、リモートノードの識別に使用される固有の名前が定義されます。また、他のパラメータが設定されていない場合、この値は
remote-port
ポートで接続するホスト名と想定されます。デフォルトでは、このオプションは無効になっています。
警告: 固有のIDの使用この値は、既存のリソースやノードIDとは重複させないでください。
remote-port
pacemaker_remoteへのゲスト接続用のカスタムポート。
デフォルトの設定は
3121
です。remote-addr
リモートノードの名前がゲストのホスト名ではない場合に接続するIPアドレスまたはホスト名。
デフォルト値は
remote-node
によって設定された値です。remote-connect-timeout
中断したゲスト接続がタイムアウトするまでの時間。
デフォルトの設定は
60s
です。
6.13 インスタンス属性(パラメータ) #
すべてのリソースクラスのスクリプトでは、動作方法および管理するサービスのインスタンスを指定するパラメータを指定できます。リソースエージェントがパラメータをサポートする場合、それらのパラメータをcrm_resource
コマンドまたはHawk2を使用して追加できます。インスタンス属性は、crm
コマンドラインユーティリティではparams
、Hawk2ではParameter
と呼ばれます。OCFスクリプトでサポートされているインスタンス属性のリストは、次のコマンドをroot
として実行すると参照できます。
#
crm ra info [class:[provider:]]resource_agent
または(オプション部分なし):
#
crm ra info resource_agent
出力には、サポートされているすべての属性、それらの目的、およびデフォルト値が一覧されます。
グループ、クローン、およびプロモータブルクローンリソースには、インスタンス属性がないので注意してください。ただし、インスタンス属性のセットは、グループ、クローン、またはプロモータブルクローンの子によって継承されます。
6.14 リソース操作 #
デフォルトで、クラスタはリソースが良好な状態であることを保証しません。クラスタにこれを行わせるには、リソースの定義に監視操作を追加する必要があります。監視操作は、すべてのクラスまたはリソースエージェントに追加できます。
監視操作には、次のプロパティがあります。
id
アクションに指定する名前。一意にする必要があります。(IDは表示されません)
name
実行するアクション。一般的な値:
monitor
、start
、stop
。interval
操作を実行する頻度(秒単位)。
timeout
アクションが失敗したと宣言する前に待機する長さ。
requires
このアクションが発生する前に満たす必要のある条件。使用できる値:
nothing
,quorum
,fencing
.デフォルトは、フェンシングが有効でリソースのクラスがstonith
かどうかによります。STONITHリソースの場合、デフォルトはnothing
です。on-fail
このアクションが失敗した場合に実行するアクション。使用できる値:
ignore
: リソースが失敗しなかったのように動作します。block
: リソースにこれ以上の操作を実行しません。stop
: リソースを停止して、他の場所でも開始しません。restart
: リソースを停止して再起動します(別のノード上の場合あり)。fence
: リソースが失敗したノードを停止します(STONITH)。standby
: リソースが失敗したノードからすべてのリソースを移動させます。
enabled
false
の場合、操作は存在していない場合と同様に処理されます。使用できる値:true
,false
.role
リソースにこの役割がある場合のみ操作を実行します。
record-pending
グローバルに設定したり、個々のリソースに対して設定できます。リソース上の「in-flight」操作の状態をCIBに反映させます。
description
操作について説明します。