トラブルシューティングワークフロー:MHost RDBアプリのクォーラム不足
環境
- ONTAP 9
問題
RDBアプリケーションがクォーラムのメンバーでない(「ローカルユニットがオフライン」)場合、コマンドとサービスが機能しなくなったり、限られた容量で機能したりすることがあります。
これは通常、ネットワークパーティション、リモートノードの健常性、またはローカルノードの健常性が原因の一時的な状態です。
RDBクラスタ構成は、定義されたレプリケーションサイト(ノード)のセットで構成され、これらはすべて相互に認識されます。クラスタメンバーシップと設定は、レプリケートされたファイル/var/rdb/_sitelist
内に格納されます。すべてのRDBアプリケーションまたはリング(mgwd、vldb、vifmgr、bcomdなど)は、サイトリスト設定を共有します。
_sitelist
(クラスタ構成データ)はシステム内で自動的にレプリケートされます。内容は次のとおりです。
- バージョン
- クラスタUUID
- サイトのリスト。
各サイトには、ID、ホスト名、クラスタIPアドレスのペア、および状態(適格/不適格)があります。このサイトがクォーラム形成に参加するかどうかは、資格の設定によって決まります。これは管理上の選択です。さらに、1つのサイトが「イプシロン」を保持するように指定することもできます。これは、半分のサイトだけでクォーラムを形成できる追加の部分投票です。「イプシロン」は「マスター」と同じではありません。2ノードHAモードでは_sitelist
にHA_CONFIG
属性が表示されます。これは、クォーラムの処理にまったく異なるルールが適用されることを意味します。
クォーラムは、1つのインスタンスがマスターとして選択された、同様のRDBアプリの多数派に接続されたものです。マスターは通常、_sitelist
の最初の複数のインスタンスの1つです。各レプリケーションリングは、他のリングから完全に独立して動作します。異なるリングが異なるマスターを持つのは正常ですが、通常は同じノードに配置されます。
クォーラムのメンバーでないノード(OOQ)は、クォーラムのメンバーではありません。つまり、まだクォーラム形成に参加していない(起動したばかり)か、マスターがOOQをプッシュしたためにマスターとの接触が失われています。
オフライン状態では、クォーラムのマスターがデータベースの書き込みや更新を行うことはできません。ただし、データベースのローカルのポイントインタイム読み取り専用コピーを使用できます。読み取り専用コピーの有用性は、特定のRDBアプリケーションによって異なります。たとえば、VLDBはオフラインのときにNブレードからの回答クエリを続行できます。さまざまなアプリの所有者に相談する必要があります。
RDBアプリケーションは、CPUサイクルとI/OサイクルでD-bladeおよびN-bladeと競合します。このシステムはリアルタイムシステムではなく、今後のリリースで予定されているサービスレベルアグリーメント(SLA)もありません。したがって、RDBアプリは、負荷の高いシステムでOOQになることがあります。この状態はバグではありません。
ローカルノードまたはリモートノードがOOQの場合、CLIコマンドの呼び出しが失敗し、エラーメッセージに「Local unit offline」が表示されます(一部のコマンドは、オフラインが発生したときに管理者に知られずに自動的に再試行されます)。この場合、状況は通常一時的なものであるため、詳細を掘り下げる前にコマンドを再試行する必要があります。
マスターで次のいずれかの問題が発生した場合、新しいマスターが選択されるまで、すべてのアプリが一時的にオフラインになります。
アドバンス コマンド:
すべてのリングのクォーラムの状態を調査するには、アドバンス レベルのコマンドcluster ring show
使用します。
::>set advanced
::*> cluster ring show
Node UnitName Epoch DB Epoch DB Trnxs Master Online
--------- -------- -------- -------- -------- --------- ---------
csiptc-2240-09 mgmt 88 88 917522 csiptc-2240-09 master
csiptc-2240-09 vldb 90 90 3889 csiptc-2240-09 master
csiptc-2240-09 vifmgr 87 87 308046 csiptc-2240-09 master
csiptc-2240-09 bcomd 86 86 10 csiptc-2240-09 master
csiptc-2240-09 crs 87 87 107 csiptc-2240-09 master
csiptc-2240-10 mgmt 88 88 917522 csiptc-2240-09 secondary
csiptc-2240-10 vldb 90 90 3889 csiptc-2240-09 secondary
csiptc-2240-10 vifmgr 87 87 308046 csiptc-2240-09 secondary
csiptc-2240-10 bcomd 86 86 10 csiptc-2240-09 secondary
csiptc-2240-10 crs 87 87 107 csiptc-2240-09 secondary
10 entries were displayed.
cluster show
コマンドは、mgwdのクォーラム状態のみを表示します(すべてのリングにcluster ring show
とrdb_dump
使用)。
::*> cluster show
Node Health Eligibility Epsilon
-------------------- ------- ------------ ------------
csiptc-2240-09 true true false
csiptc-2240-10 true true false
2 entries were displayed.
システムシェル コマンド:
- 診断モードに切り替えます。
set diag
- 該当するノードでシステムシェルを開始します(diagユーザアカウントのロック解除が必要になる場合があります)。
systemshell -node <node-name>
mgwdが実行されていないときのクォーラムの状態を調べるには、FreeBSDシェルでrdb_dump
を実行します。任意のクラスタノードから、このツールを使用して、RDBアプリケーションの一部またはすべての現在の状態情報を抽出します。典型的な手法は、 /var/rdb/_sitelist
をcatし、rdb_dump
ツールを使用して対象のIPアドレス(またはlocalhost)に送信して調査することです。rdb_dump
では、次の情報を表示できます。
- 全体的な健全性
- トランザクションフロー
- データベースのバージョン
- さまざまなコンポーネントと内部。
オプションのリストを表示するには、rdb_dump -h
と入力します。すべてのrdb_dump
出力は、照会されているプロセスの観点からの出力であることに注意してください。
% rdb_dump -h
rdb_dump [<host>] [options] <unit>*
-h - help
-c [n] - continuous with n sec delay (default 3)
-v - verbose; all options other than 'c'
-e - environment vars
-f - configuration info
-x - internal developer info on selected components
-u - Local Unit
-d - individual database summary
-q - Quorum Mgr
-r - Recovery Mgr
-t - Transaction Mgr
-z - Call exportHealth API to query health at a node.
[<host>] - Name or IP, default localhost.
<unit>* - select from: vldb, management, vifmgr, bcomd, t1, smfpilot (test units).
if omitted, dumps all product units on the host.
Options may be combined, e.g., '-qrtx'.
rdb_dump
個 々 のユニットから見たクラスタの構成と健全性の情報が表示されます。
注:
- 「master」は動的なロールで、「Epsilon」は構成設定です。マスターサイトとイプシロンサイトが異なることがよくあります。
- レプリケーショングループ(vldb、vifmgr、bcomd、mgwd)は独立して動作します。それぞれに異なるマスターと健康情報があるかもしれません。ただし、設定情報は共有する必要があります。
ボックス間の問題を分析するための構成
:
- 環境と構成(-eおよび-f)が想定どおりに一致していることを確認します。
- 各ユニットインスタンスの設定が一致していることを確認します。
正常性(デフォルト)
正しい構成であれば、正常性情報にレプリケーショングループのステータスが要約されます。
注:マスターから得られた健康は常に最も正確です。セカンダリ情報を他のセカンダリに伝播するのにわずかな遅れがありますが、それらは合意になります。
監視-c
を使用して、 通常の動作中にボックスを継続的に監視します。また、Boxを再起動するときに、-c
を使用してアプリが起動してオンラインになるときに表示します。