このトピックでは、ApsaraMQ for RabbitMQ における接続失敗の原因と、そのトラブルシューティング方法および解決策について説明します。
考えられる原因
不正なユーザー名またはパスワード: ApsaraMQ for RabbitMQ では、ユーザー名とパスワードは接続を確立する際の認証用の認証情報です。インスタンスの認証および権限モデルに基づいて、ユーザー名とパスワードを作成する必要があります。
オープンソースの認証と権限管理: カスタムのユーザー名とパスワードを使用します。
Resource Access Management (RAM): Alibaba Cloud AccessKey ペアから生成されたユーザー名とパスワードを使用します。
権限エラー: インスタンスに対する必要な操作権限がない場合、接続は失敗します。必要な権限は、インスタンスの認証および権限モデルに基づきます。
オープンソースの認証と権限管理: カスタムユーザーが必要な権限を持っているかどうかを確認します。
RAM: ユーザー名とパスワードの生成に使用された AccessKey ペアを所有するユーザーが必要な権限を持っているかどうかを確認します。
無効なエンドポイント: Alibaba Cloud 内部ネットワークから ApsaraMQ for RabbitMQ インスタンスに接続する場合は、VPC エンドポイントを指定します。ローカル開発環境などの外部ネットワークから接続する場合は、パブリックエンドポイントを指定します。
存在しない ApsaraMQ for RabbitMQ リソース: 接続を確立する前に、ApsaraMQ for RabbitMQ インスタンスが実行中であり、vhost などの必要なリソースがコンソールで作成されていることを確認してください。
解決策
ユーザー名とパスワードが正しく生成されていることを確認します:
オープンソースの認証と権限管理: カスタムのユーザー名とパスワードを作成する方法の詳細については、「ユーザー名とパスワードの作成」をご参照ください。
RAM: ユーザー名とパスワードを生成する方法の詳細については、「静的なユーザー名とパスワードの作成」をご参照ください。ApsaraMQ for RabbitMQ への接続を確立するために、AccessKey ペアをユーザー名とパスワードとして使用しないでください。
必要な権限が付与されていることを確認します:
オープンソースの認証と権限管理: カスタムユーザーに権限を付与する方法の詳細については、「権限管理」をご参照ください。
RAM: ほとんどの場合、「手順 1: (オプション) RAM ユーザーに権限を付与する」の手順に従って、操作権限や読み取り専用権限など、AMQP サービスの全体的な権限を設定できます。特定の vhost のリソースに対する操作の実行など、より複雑な制御ポリシーが必要な場合は、「ApsaraMQ for RabbitMQ のカスタムポリシー」をご参照ください。権限が複雑な場合は、さまざまなポリシーを組み合わせて、目的の制御ポリシーを実現できます。
正しいエンドポイントが指定されていることを確認します:
クライアント環境では、ping や telnet などのツールを使用して、エンドポイントへのネットワーク接続を確認できます。これにより、ネットワークの問題によって引き起こされる接続の失敗を防ぐことができます。
接続リクエストがサーバーに到達したことを確認します:
ApsaraMQ for RabbitMQ の Simple Log Service をアクティブ化します。詳細については、「ログ管理」をご参照ください。
Simple Log Service をアクティブ化すると、サーバーがインスタンスの操作リクエストを受信したかどうかを確認できます。
たとえば、テスト環境で ApsaraMQ for RabbitMQ インスタンスに頻繁に接続しても、対応するログが記録されない場合、接続リクエストはサーバーに到達していません。この場合、クライアントのロジックとネットワークリンクを確認する必要があります。
エラーコードに基づいて問題をトラブルシューティングします:
リクエストがサーバーに到達した場合、ログのリターンコードに基づいて問題をトラブルシューティングできます。詳細については、「エラーコード」をご参照ください。
例:
リターンコードが 403 で、エラーメッセージが AccessDeniedByRamPolicy の場合は、RAM 権限付与を確認します。
リターンコードが 311 で、エラーメッセージが MessageBodyLengthExceeded の場合は、メッセージ本文のサイズが制限を超えていないか確認します。
リターンコードが 404 で、エラーメッセージが ExchangeNotExist または QueueNotExist の場合は、リソースを確認します。ログで存在しないリソースの名前を表示し、リソースが存在するかどうかを確認するか、リソースを作成できます。
リターンコードが 530 で、エラーメッセージが denied for too many requests、ExchangeNumExceeded、QueueNumExceeded、または VhostNumExceeded の場合は、スロットリング制限を確認します。インスタンスの仕様をスペックアップする必要があるか、インスタンスの使用方法を最適化する必要があるかを判断します。
リターンコードが 541 の場合は、アナウンスを確認します。このリターンコードは通常、サーバーがスペックアップされている場合にのみ返されます。ビジネスに影響がある場合は、チケットを送信して Alibaba Cloud テクニカルサポートにお問い合わせください。