次の方法で共有


SUSE での Azure Fence Agent の起動に関する問題のトラブルシューティング

適用対象: ✔️ Linux VM

この記事では、Microsoft Azure Fence Agent のスタートアップの問題の一般的な原因の一覧を示し、ログ レビューを通じて原因を特定するためのガイダンスを提供し、問題の解決策を示します。

Azure Fence Agent のしくみ

Azure Fence Agent は、VM の電源オフまたは開始アクションを実行するために、 /usr/sbin/fence_azure_arm にある Azure API ベースの Python プログラムを使用します。 障害が発生したクラスター ノードが検出されると、クラスター リソース エージェント (RA) はこのプログラムを適切なパラメーターと共に呼び出して、ノード フェンス (STONITH とも呼ばれます) を実装します。

SUSE - Azure Fence エージェント STONITH デバイスの作成に記載されているように、カスタム ロールは、次のアクションを実行するためのアクセス許可をフェンス エージェントに提供する必要があります。

  • powerOff
  • start

仮想マシン (VM) が異常として検出された場合、フェンス エージェントはこれらのアクションを使用して VM の電源をオフにしてから再起動します。

現象

Azure Fencing Agent リソースが起動しません。 sudo crm statusコマンドを実行してクラスター リソースの状態を確認すると、コマンド出力で "不明なエラー" が報告されます。

crm 状態のサンプル出力を次に示します。

Stack: corosync
Current DC: VM2 (version 2.0.1+20190417.13d370ca9-3.6.1-2.0.1+20190417.13d370ca9) - partition with quorum
Last updated: Mon Apr  6 13:58:59 2020
Last change: Mon Apr  6 13:58:53 2020 by root via crm_attribute on VM1
 
2 nodes configured
7 resources configured
 
Online: [ VM1 VM2 ]
 
Full list of resources:
 
Clone Set: cln_SAPHanaTopology_SS2_HDB00 [rsc_SAPHanaTopology_SS2_HDB00]
	 Started: [ VM1 VM2 ]
Clone Set: msl_SAPHana_SS2_HDB00 [rsc_SAPHana_SS2_HDB00] (promotable)
	 Main: [ VM1 ]
	 Sub: [ VM2 ]
Resource Group: g_ip_SS2_HDB00
	 rsc_ip_SS2_HDB00   (ocf::heartbeat:IPaddr2):       Started VM1
	 rsc_nc_SS2_HDB00   (ocf::heartbeat:azure-lb):      Started VM1
rsc_st_azure   (stonith:fence_azure_arm):      Stopped
 
Failed Resource Actions:
* rsc_st_azure_start_0 on VM2 'unknown error' (1): call=102, status=complete, exitreason='',
	last-rc-change='Mon Apr  6 13:50:57 2020', queued=0ms, exec=1790ms
* rsc_st_azure_start_0 on VM1 'unknown error' (1): call=121, status=complete, exitreason='',
	last-rc-change='Mon Apr  6 13:50:59 2020', queued=0ms, exec=1760ms

原因 1: エンドポイントの接続または資格情報の問題

この問題を解決するには、 /var/log/messagesログインを確認します。 "Azure エラー: AuthenticationFailed" を含むエントリがログに表示される場合 (次のスクリーンショットに示すように)、問題はエンドポイントの接続または資格情報の問題に関連している可能性があります。

/var/log/messages
2021-03-15T20:23:15.441083+00:00 NodeName pacemaker-fenced[2550]:  warning: fence_azure_arm[21839] stderr: [ 2021-03-15 20:23:15,398 ERROR: Failed: Azure Error: AuthenticationFailed ]
2021-03-15T20:23:15.441260+00:00 NodeName pacemaker-fenced[2550]:  warning: fence_azure_arm[21839] stderr: [ Message: Authentication failed. ]

解決方法

  1. ポート 443 で次の Azure Management API エンドポイントへの送信接続があることを確認します。

    • management.azure.com
    • login.microsoftonline.com

    接続をテストするには、 nc1, telnet, or curl' を使用します (必要に応じてエンドポイントの値を置き換えます)。

    nc -z -v <endpoint> 443
    
    telnet <endpoint> 443
    
    curl -v telnet://<endpoint>:443
    
  2. STONITH リソースに対して有効なユーザー名とパスワードが設定されていることを確認します。 STONITH リソースエラーの主な原因の 1 つは、サービス プリンシパルを使用するときにユーザー名またはパスワードに無効な値を使用することです。 次の例に示すように、 fence_azure_arm コマンドを使用して値をテストできます。 STONITH リソースのユーザー名とパスワードを設定するには、「 Azure Fence エージェント STONITH デバイスの作成を参照してください。

    sudo /usr/sbin/fence_azure_arm --action=list --username='<user name>' --password='<password>' --tenantId=<tenant ID> --resourceGroup=<resource group> 
    

    このコマンドは、クラスター内の VM のノード名を返す必要があります。 コマンドが成功しない場合は、次の例に示すように、詳細出力を有効にする -v フラグと、デバッグ出力を有効にする -D フラグと共に再実行します。

    sudo /usr/sbin/fence_azure_arm --action=list --username='<user name>' --password='<password>' --tenantId=<tenant ID> --resourceGroup=<resource group> -v -D /var/tmp/debug-fence.out 
    

    STONITH リソースでマネージド ID が使用されている場合は、次のコマンドを実行します。

    sudo /usr/sbin/fence_azure_arm --action=list --msi --resourceGroup=<resource group> -v -D /var/tmp/debug-fence.out
    

    Note

    コマンドで、必要に応じて、 <user name><password><tenant ID>、および <resource group> の値を置き換えます。

原因 2: 認証エラー

/var/log/messagesログインを確認します。 次の例に示すように、"unauthorized_client" を含むエントリがログに表示される場合、問題は認証エラーに関連している可能性があります。

/var/log/messages
2020-04-06T10:06:47.779470+00:00 VM1 pacemaker-controld[29309]: notice: Result of probe operation for rsc_st_azure on VM1: 7 (not running)
2020-04-06T10:06:51.045519+00:00 VM1 pacemaker-execd[29306]: notice: executing - rsc:rsc_st_azure action:start call_id:52
2020-04-06T10:06:52.826702+00:00 VM1 /fence_azure_arm: Failed: AdalError: Get Token request returned http error: 400 and server response: {"error":"unauthorized_client","error_description":"AADSTS700016: Application with identifier '<app-id>'
was not found in the directory '<directory-id>. This can happen if the application has not been installed by the administrator of the tenant or consented to by any user in the tenant.
You may have sent your authentication request to the wrong tenant.\r\nTrace ID: <directory-id>\r\nCorrelation ID: 7ID\r\nTimestamp:2020-04-06 10:06:52Z","error_codes":[700016],"timestamp":"2020-04-06 10:06:52Z","trace_id":"<directory-id>",
"correlation_id":"ID","error_uri":"https://login.microsoftonline.com/error?code=700016 "}

解決方法

Azure portal から Microsoft Entra ID アプリのテナント ID、アプリケーション ID、ログイン、パスワードの詳細を確認します。 次のステップを実行します。

  1. ID が検証または更新されたら、クラスター内のフェンス エージェントを再構成します。

    sudo crm configure property maintenance-mode=true
    sudo crm configure edit <fencing agent resource>
    
  2. 必要に応じてパラメーターを変更し、変更を保存します。

     sudo crm configure property maintenance-mode=false
    
  3. クラスターの状態を確認して、フェンス エージェントの問題が修正されていることを確認します。

    crm status
    

原因 3: アクセス許可が不十分である

/var/log/messagesログインを確認します。 次の例に示すように、"The client does not have authorization to perform action" (クライアントはアクションを実行するための承認を持っていません) を含むエントリがログに表示される場合、この問題はアクセス許可の不足に関連している可能性があります。

/var/log/messages
Apr 2 00:49:56 VM1 fence_azure_arm: Please use '-h' for usage
Apr 2 00:49:57 VM1 stonith-ng[105424]: warning: fence_azure_arm[109393] stderr: [ 2020-04-02 00:49:56,978 ERROR: Failed: Azure Error: AuthorizationFailed ]
Apr 2 00:49:57 VM1 stonith-ng[105424]: warning: fence_azure_arm[109393] stderr: [ Message: The client 'client-id' with object id '<client-id>' does not have authorization to perform action 'Microsoft.Compute/virtualMachines/read' over scope '/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.Compute' or the scope is invalid.If access was recently granted, please refresh your credentials. ]

解決方法

  1. フェンス エージェントのカスタム ロールを作成し カスタム ロール定義がフェンス エージェント用に構成されていることを確認します。
  2. フェンス エージェントに、影響を受ける VM で必要なカスタム ロールが割り当てられていることを確認します。 エージェントにロールが割り当てられていない場合は、アクセス制御を使用して VM にロールを割り当てます。
  3. crm status実行してクラスターの状態を確認し、フェンス エージェントの問題が解決されていることを確認します。

原因 4: SSL ハンドシェイクエラー

次の例に示すように、"SSLError: HTTPSConnectionPool(host='management.azure.com', port=443): max retrys exceeded with url" がログに表示される場合、問題は SSL ハンドシェイクの失敗に関連している可能性があります。

/var/log/messages
warning: fence_azure_arm[28114] stderr: [ 2021-06-24 07:59:29,832 ERROR: Failed: Error occurred in request., SSLError: HTTPSConnectionPool(host='management.azure.com ', port=443): Max retries exceeded with url: /subscriptions/<sub-id>/resourceGroups/<RG-name>/providers/Microsoft.Compute/virtualMachines?api-version=2019-03-01 (Caused by SSLError(SSLError('bad handshake: SysCallError(-1, 'Unexpected EOF')',),)) ]

解決方法

  1. opensslを使用して、影響を受けるノードからの接続をテストします。

    openssl s_client -connect management.azure.com:443
    
  2. 次の例に示すように、出力に完全な証明書ハンドシェイクがないかどうかを確認します。

    CONNECTED(00000003)
    write:errno=0
    ---
    no peer certificate available
    ---
    No client certificate CA names sent
    ---
    SSL handshake has read 0 bytes and written 176 bytes
    Verification: OK
    ---
    New, (NONE), Cipher is (NONE)
    Secure Renegotiation IS NOT supported
    Compression: NONE
    Expansion: NONE
    No ALPN negotiated
    SSL-Session:
        Protocol  : TLSv1.2
        Cipher    : 0000
        Session-ID:
        Session-ID-ctx:
        Master-Key:
        PSK identity: None
        PSK identity hint: None
        SRP username: None
        Start Time: 1625235527
        Timeout   : 7200 (sec)
        Verify return code: 0 (ok)
        Extended master secret: no
    

    これらのエラーは、ネットワーク アプライアンスまたはファイアウォールがパケット検査を実行しているか、証明書の検証を中断する方法で Transparent Layer Socket (TLS) 接続を変更していることが原因である可能性が最も高いです。 さらに、これらの問題は、最大伝送ユニット (MTU) がサイズ制限に達した場合に発生する可能性があります。

  3. Azure Firewall がノードの前にある場合は、次のタグがアプリケーションまたはネットワークルールに追加されていることを確認します。

    • アプリケーション ルール: ApiManagement、AppServiceManagement、AzureCloud
    • ネットワーク ルール: AppServiceEnvironment

原因 5: パッケージ fence-agents-azure-arm 見つかりません

/var/log/messagesログインを確認します。 次のログ エントリは、fence-agent がシステム内の fence-agents-azure-arm パッケージを読み取ったり見つけたりできないことを示しています。

/var/log/messages
2024-09-03T02:30:36.264033+00:00 node1 lrmd[5772]:    error: Unknown fence agent: fence_azure_arm
2024-09-03T02:30:36.271111+00:00 node1 stonith-ng[5771]:   error: Unknown fence agent: fence_azure_arm
2024-09-03T02:30:36.271426+00:00 node1 stonith-ng[5771]:   error: Agent fence_azure_arm not found or does not support meta-data: Invalid argument (22)
2024-09-03T02:30:36.271620+00:00 node1 stonith-ng[5771]:   error: Could not retrieve metadata for fencing agent fence_azure_arm
2024-09-03T02:30:36.271800+00:00 node1 stonith-ng[5771]: warning: Cannot execute '/usr/sbin/fence_azure_arm': No such file or directory (2)
2024-09-03T02:30:37.271549+00:00 node1 stonith-ng[5771]: warning: Cannot execute '/usr/sbin/fence_azure_arm': No such file or directory (2)
2024-09-03T02:30:39.271843+00:00 node1 stonith-ng[5771]: message repeated 2 times: [  warning: Cannot execute '/usr/sbin/fence_azure_arm': No such file or directory (2)]
2024-09-03T02:30:39.272240+00:00 node1 stonith-ng[5771]:  notice: Operation 'monitor' [0] for device 'rsc_st_azure' returned: -61 (No data available)
2024-09-03T02:30:39.272486+00:00 node1 lrmd[5772]:   notice: finished - rsc:rsc_st_azure action:start call_id:67  exit-code:1 exec-time:3008ms queue-time:0ms
2024-09-03T02:30:39.272722+00:00 node1 crmd[5776]:    error: Unknown fence agent: fence_azure_arm
2024-09-03T02:30:39.272970+00:00 node1 crmd[5776]:    error: Agent fence_azure_arm not found or does not support meta-data: Invalid argument (22)
2024-09-03T02:30:39.273207+00:00 node1 crmd[5776]:  warning: Failed to get metadata for rsc_st_azure (stonith:(null):fence_azure_arm)
2024-09-03T02:30:39.273439+00:00 node1 crmd[5776]:    error: Result of start operation for rsc_st_azure on node1: Error
2024-09-03T02:30:39.274704+00:00 node1 crmd[5776]:  warning: Action 9 (rsc_st_azure_start_0) on node1 failed (target: 0 vs. rc: 1): Error
2024-09-03T02:30:39.274984+00:00 node1 crmd[5776]:   notice: Transition 91369 (Complete=3, Pending=0, Fired=0, Skipped=0, Incomplete=1, Source=/var/lib/pacemaker/pengine/pe-input-2563.bz2): Complete
2024-09-03T02:30:39.307439+00:00 node1 pengine[5775]:  warning: Processing failed start of rsc_st_azure on node1: unknown error
2024-09-03T02:30:39.307786+00:00 node1 pengine[5775]:  warning: Processing failed start of rsc_st_azure on node1: unknown error
/var/log/messages
2024-08-20T13:28:24.043272+00:00 node1 crmd[6692]:    error: Unknown fence agent: fence_azure_arm
2024-08-20T13:28:24.043453+00:00 node1 crmd[6692]:    error: Agent fence_azure_arm not found or does not support meta-data: Invalid argument (22)
2024-08-20T13:28:24.043554+00:00 node1 crmd[6692]:  warning: Failed to get metadata for rsc_st_azure (stonith:(null):fence_azure_arm)
2024-08-20T13:28:24.044608+00:00 node1 crmd[6692]:    error: Unknown fence agent: fence_azure_arm
2024-08-20T13:28:24.044711+00:00 node1 crmd[6692]:    error: Agent fence_azure_arm not found or does not support meta-data: Invalid argument (22)
2024-08-20T13:28:24.044833+00:00 node1 crmd[6692]:  warning: Failed to get metadata for rsc_st_azure (stonith:(null):fence_azure_arm)
2024-08-20T13:28:26.160617+00:00 node1 crmd[6692]:    error: Unknown fence agent: fence_azure_arm
2024-08-20T13:28:26.160895+00:00 node1 crmd[6692]:    error: Agent fence_azure_arm not found or does not support meta-data: Invalid argument (22)
2024-08-20T13:28:26.161008+00:00 node1 crmd[6692]:  warning: Failed to get metadata for rsc_st_azure (stonith:(null):fence_azure_arm)
2024-08-20T13:28:26.162073+00:00 node1 crmd[6692]:    error: Unknown fence agent: fence_azure_arm
2024-08-20T13:28:26.162193+00:00 node1 crmd[6692]:    error: Agent fence_azure_arm not found or does not support meta-data: Invalid argument (22)
2024-08-20T13:28:26.162294+00:00 node1 crmd[6692]:  warning: Failed to get metadata for rsc_st_azure (stonith:(null):fence_azure_arm)

解決方法

SUSE は、Python 3.11 の fence-agents-azure-arm として Azure Fence Agent パッケージを再構築しました。 詳細については、「 Azure Fence Agent failed to start after Python 3.11 interpreter was installedを参照してください。 この問題を解決するには、次の手順に従ってパッケージをインストールします。

  1. クラスターをメンテナンス モードにします。
      sudo crm configure property maintenance-mode=true
    
  2. クラスターのすべてのノード (VM) に次のパッケージをインストールします。
     sudo zypper in fence-agents-azure-arm
    
  3. メンテナンス モードからクラスターを削除します。
     sudo crm configure property maintenance-mode=false
    
  4. フェンス エージェントの問題が解決されていることを確認します。 これを行うには、 crm status を実行してクラスターの状態を確認します。

次のステップ

追加のヘルプが必要な場合は、次の手順に従ってサポート リクエストを開きます。

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。

要求を送信するときに、トラブルシューティングのために debug-fence.out のコピーを添付します。

サードパーティの情報に関する免責事項

この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。 明示的か黙示的かにかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。