Azure 冗長化 vSocket トラブルシューティング

Prev Next

概要

この記事では、Azure vSocket 冗長化 展開の一般的な問題点に関するインサイトを提供し、それらを解決するためのトラブルシューティング手順を案内します。このガイドは、冗長化スクリプトやマーケットプレイスを通じての冗長化ソリューションの展開時および展開後に潜在的な障害を特定し対応するのを助けることを目的としています。

症状

Azure vSocket 冗長化を展開する際に、次の症状に遭遇するかもしれません:

  • 冗長化スクリプトの失敗

    • 手動展開で create_ha_settings スクリプトの実行に失敗しました。

    • マーケットプレイスを通じたセカンダリ vSocket 展開に問題があります。

  • 冗長化のフェイルオーバー失敗

    • Socket WebUI からの冗長化 API テストに失敗しました。

    • 冗長化のフェイルオーバーに失敗し、トラフィックがセカンダリ vSocket に転送されませんでした。

  • 冗長化ステータスが準備完了ではありません

    • CMA はサイトの冗長化ステータスが準備完了でないことを示しています

可能な原因

冗長化展開失敗の最も一般的な原因は以下を含みます:

  • Azure における非公開 DNS の使用。

  • インターネットアクセスがない管理インターフェース。

  • 不十分な Azure アカウント権限。

  • Azure における制限的なセキュリティグループおよびルーティング設定。

  • LAN インターフェースへのフローティングIPアドレスの割り当て失敗。

  • LAN の接続性の問題。

問題のトラブルシューティング

重要:

トラブルシューティングを始める前に、Azure 冗長化 vSocket 展開の全ての前提条件を確認してください。 Azure vSocketsの冗長化を設定する と マーケットプレイスから Azure vSockets を展開する をご覧ください

冗長化スクリプトの失敗をトラブルシューティング

Azure 冗長化スクリプト (create_ha_settings) とマーケットプレイス経由のセカンダリvSocket展開は、Azureサブスクリプションに有効なvSocketが2つあることを確認し、冗長化およびフェイルオーバーメカニズムを作成するアイデンティティロールを割り当てます。スクリプトの実行が失敗した場合は、次のトラブルシューティング手順に従ってください:

アクティビティログを確認

  • Azure では、アクティビティログが各Azureリソース内で発生した全てのイベントを記録します。デプロイが成功しない場合、またはロールが割り当てられていない場合、これらのログを確認します。 VM あるいは NIC に移動し、アクティビティログを選択します

Azure ネーミング制限の確認

  • スクリプトに vSocket 名を入力する際、「ネーミング ルールと制限」に記載されているように、名前に空白や制限された文字が含まれていないことを確認してください。

  • 展開中にネーミングの問題が発生した場合、エラーログに次のエラーが表示されます

    パラメータ disk.name の値が無効です。(コード: InvalidParameter, ターゲット: disk.name)

Azure DNS 設定の確認

  • 公開 DNS(またはデフォルトの Azure DNS)が VNET と関連する NIC の両方に設定されていることを確認してください。公開 DNS が Azure の VNET と NIC の両方に設定されていない場合、ロール作成は失敗します。

  • Azure DNS 設定が何であるかを確認するには、次の資料を参照してください:DNS 設定問題の修正 

Azure 権限の確認

  • HAスクリプトを正常に実行するために、Azureユーザーが所有者権限を持っていることを確認してください。リソース グループ > アクセス制御 IAM > マイアクセスの表示 に進んで、ユーザーアカウントが 所有者 以上の役割に設定されていることを確認します。 Azure 組み込みの役割 をご覧ください。

Azure ロールの割り当てを確認

  • Azure ロールの割り当ての確認で提供される手順を実行して、リソース グループにリストされたアイデンティティ ロールが LAN NIC、LANサブネット、および両方のvSocket VMに割り当てられていることを確認します。

冗長化スクリプトの再実行

  • 最後の手段として、冗長化スクリプト (create_ha_settings) は以前の手順が確認された後に再実行することができます。

  • 以前のスクリプト実行時に作成された場合は、Azure トークンを更新し、Azure 管理されたアイデンティティを削除することを確認してください。

冗長化フェイルオーバー失敗のトラブルシューティング

冗長化スクリプトが正常に実行されても、vSocket 冗長化 フェイルオーバーが予想通りに起こらない場合(例: トラフィックがセカンダリvSocketにルーティングされない)、以下の手順に従います:

冗長化APIテストの実行

  • vSocket webUIから、両方のvSocketでAPIテストツールを実行し、AzureへのAPI呼び出しを成功裏に行えることを検証します。ここで権限やフローティングIP割り当てに関するエラーが表示されることがあります。

アクティビティログの確認

  • Azure では、アクティビティログが各Azureリソース内で発生した全てのイベントを記録します。これらのログを確認して、フローティングIPが LAN NIC にプッシュされなかったか、APIテストが成功しなかったかを特定します。 NIC に移動し、アクティビティログを選択します

(オプション) フローティングIPのPing

  • LANネットワーク内のホストからPingツールを利用してフローティングIPアドレスにPingを送信します。このテストが成功しない場合は、フローティングIP割り当ての確認 を続けてください

フローティングIP割り当ての確認

  • トラフィックをマスターvSocketにルーティングするために、Azureは現在のマスターvSocketのLAN NICにフローティングIPを割り当てます。プライマリvSocket VMの LAN NIC > IP設定 に移動し、フローティングIPが「セカンダリ」として存在することを確認します。存在しない場合は、次のステップに進んでください。  

Azureロール割り当ての確認

冗長化管理アイデンティティは、フェイルオーバーに参加するすべてのAzureリソースと正しく関連付けられている必要があります。

  • Azure vSocket展開中に、冗長化 アイデンティティロールが作成され、Azure 管理されたアイデンティティに保存されます。

  • 各リソースには ユーザー割り当て のロールが1つだけ割り当てられるべきです。 Azureでポリシーが システム割り当て済み のアイデンティティを追加する場合、vSocketsはそれから除外する必要があります。

  • このロールは、vSocketに接続されている様々な仮想リソースに割り当てられています。ロールを使用するAzureインフラストラクチャのコンポーネントは次のとおりです:

    • 各vSocket用のLANネットワークインターフェース(NIC)

    • LAN NICに関連付けられたLANサブネット

    • 両方のvSocket VM

  • NIC のロール割り当ては アクセス制御 > ロールの割り当て で確認でき、プライマリとセカンダリの両方の LAN NIC に割り当てられている必要があります。

  • LANサブネット のロール割り当ては VNET > サブネット で確認でき、それから LANサブネットを選択し、ユーザーの管理 > ロールの割り当て をクリックします。

  • 各vSocket VM のアイデンティティロールは セキュリティ > アイデンティティ > ユーザー割り当て の下で確認できると、以下のスクリーンショットに示されています。

  • VMに システム割り当て のロールを割り当ててはいけません。これを確認するには、セキュリティ > アイデンティティ > システム割り当て済み に移動し、各vSocket VMに対してステータス オプションがオフ になっていることを確認してください。

  • 上記のリソースのいずれにも冗長化アイデンティティロールがインストールされていない場合、デプロイメントプロセスが失敗した可能性があります。ロールが関与するリソースのいずれかから不足している場合は、Cato HA スクリプト を再度実行することができます別の方法として、セカンダリAzure vSocketを 再展開 することができ、その過程で不足している冗長化アイデンティティロールがインストールされます

管理インターフェースに DNS およびインターネットアクセスがあることの確認

  • 管理インターフェースがインターネットにアクセスできることと、設定されたDNSサーバーに接続できることを確認してください。

  • Azureポータルから management.azure.com へのDNS解決を確認してください。このFQDNを冗長化API呼び出しは使います。

    • 仮想マシン > vSocket > コマンドの実行 > RunShellScript に移動

    • dig management.azure.com をテキストボックスに入力します

    • 実行をクリック

  • digの出力はポータルでDNS応答とともに表示されます。

  • DNS解決がない場合は、DNS 設定問題の修正 を参照してください。

  • 同じページから、インターネットアクセスを確認するために任意のインターネットリソースにアクセスを試みます。例えば、ping -c 4 8.8.8.8 試みたものの、pingが成功しない場合は次のステップに進んでください。

ネットワークセキュリティグループがアウトバウンドトラフィックをブロックしているかを確認します。

注:

2-NICソリューション がvSocketで実装されている場合。このトラブルシューティングのステップをWANインターフェースで実行します。

  • AzureのMGMTネットワークインタフェースに行き、画面の左下にある「有効なセキュリティルール」をクリックすることによって簡単に確認できます。

  • 以下のスクリーンショットはNSGが割り当てられていないため、アウトバウンドトラフィックがブロックされていないことを示しています。

インターネットトラフィックに関するMGMTインタフェースのルートを確認してください。

注:

2-NICソリューション がvSocketで実装されている場合。このトラブルシューティングのステップをWANインターフェースで実行します。

  • MGMTインタフェーストラフィックがAzure内のサードパーティのファイアウォールを通じてルーティングされる場合、UDP/53とTCP/443のアウトバウンド接続が許可されているかチェックしてください。

  • Azureの管理インターフェースページに移動し、「有効なルート」オプションをクリックすることによってルートテーブルを確認できます。

  • 以下のスクリーンショットはインターネットを「次のホップタイプ」として使用したインターネットトラフィックのルートを示しており、ファイアウォールがトラフィックをブロックしていないことを示しています。

ルーティング テーブルの次のホップの確認

  • LANルーティングテーブルがフローティングIPを指していることを確認してください。必要に応じて次のホップIPアドレスを変更します。  

冗長化ステータスが準備完了でない場合のトラブルシューティング

CMAが冗長化ステータスが準備完了ではなく、両方のvSocketsが稼働していることを示している場合、両方のvSocketsがマスターロールを取ります(スプリットブレインシナリオ)。関連する問題が2つ考えられます:

  • 両方のvSocketsが異なるファームウェアバージョンを実行しています

  • 冗長化キープアライブメッセージがセカンダリvSocketに到達しません

両方のvSockets WebUI ページを確認して、それぞれの冗長化ステータスを確認することをお勧めします。プライマリおよびセカンダリの両方のvSocketsがマスターロールにある場合、スプリットブレインシナリオが発生します。 WebUIは、メインのモニタリングページのトップに現在のロールを表示します。

ファームウェアバージョンの確認

互換性のあるバージョン基準を満たすためには、両方のvSocketが同じメジャーバージョン(例:v17.xx.yyやv18.xx.yy)を実行中でなければなりません。vSocketは最初に展開された後に初期アップグレードを行います。 vSocketのいずれかがアップグレードに失敗した場合、問題のトラブルシューティングが必要です。サポートチケットを投稿し、この問題を報告してください。

HAキープアライブの確認

キープアライブパケットはAzure vSocket用にポートUDP/20480を使用し、マスターvSocketからスタンバイvSocketにのみ送信されます。スプリットブレイン状態は、両方のvSocketがマスターロールを持つ場合に発生し、これはvSocket間のLAN接続問題によりHAキープアライブメッセージがセカンダリvSocketに届かない状況を引き起こすことがあります

LAN接続を確認するために以下のチェックを実行します:

  • ネットワーク セキュリティ グループがポートUDP/20480をブロックしているかどうかを確認します。各LANネットワークインターフェースに移動し、画面の左下にある「効果的なセキュリティルール」をクリックしてNSGルールを確認するのは迅速な方法です。

  • 両方のLANインターフェースが同じLANサブネットに関連付けられていることを確認します。

  • WebUIから両方のvSocketのパケットキャプチャを実行し、プライマリから送信されたキープアライブがセカンダリvSocketによって受信されているか識別します。

発見された問題を解決します

Azureトークンの更新

  • HAスクリプトのデプロイにAzure Cloud Shellを使用する場合、新しいセッションを開いて再認証します。これはAPIのクエリに使用されるトークンを更新します。

DNS設定問題の修正

  • Azure DNS構成を修正してデフォルト値に設定するには、仮想ネットワーク > DNSサーバー、およびネットワークインターフェース > DNSサーバーに移動し、デフォルトオプションまたはパブリックDNSサーバーを使用していることを確認してください。 DNS関連の変更を行うためにVMをシャットダウンし、その後再起動します。

Azure vSocketの登録解除と再展開

  • 上記のトラブルシューティング手順をすべて実行してもHAスクリプトやHAフェイルオーバーが引き続き失敗する場合、1つまたは両方のvSocketの登録を解除し、再展開することができます。高可用性vSocketサイトの再展開

  • ガイドラインに従って、再展開前に仮想マシン、ネットワークインターフェース、関連するパブリックIP、管理対象IDを削除することが重要です。

  • プライマリvSocketインスタンスのみが再デプロイされた場合、専用のHAスクリプト(create_ha_settings)を実行し、両方のvSocketインスタンスをHAにバインドする必要があります。

Catoサポートへのケースの提出

上記のトラブルシューティング手順の結果を含めたサポートチケットを投稿してください。チケットに以下の情報を含めてください:

  • 問題の明確な説明、エラーメッセージを含む。

  • management.azure.comのDNSテスト結果

  • APIテストの結果。

  • 割り当てられたフローティングIP、設定されたIDロール、効果的なルート、および効果的なセキュリティルールのスクリーンショット。

  • Azureアクティビティログのスクリーンショット、検出されたエラーを含む。