このトピックでは、ApsaraMQ for RabbitMQ での接続障害の考えられる原因と解決策について説明します。
考えられる原因
静的ユーザー名とパスワードが正しくない:ApsaraMQ for RabbitMQ インスタンスの静的ユーザー名とパスワードは、接続を確立するために使用される認証資格情報です。クライアントを ApsaraMQ for RabbitMQ インスタンスに接続するときは、ApsaraMQ for RabbitMQ コンソールで AccessKey ペアに基づいて生成された静的ユーザー名とパスワードを指定する必要があります。指定しないと、接続は失敗します。
権限エラー:ApsaraMQ for RabbitMQ インスタンスで操作を実行するには、インスタンスの静的ユーザー名とパスワードの生成に使用される AccessKey ペアに必要な権限が必要です。そうでない場合、接続は失敗します。
無効なエンドポイント:Alibaba Cloud の内部ネットワーク経由でクライアントを ApsaraMQ for RabbitMQ インスタンスに接続する場合は、接続中に仮想プライベートクラウド(VPC)エンドポイントを指定する必要があります。オンプレミス開発環境などの外部ネットワーク経由でクライアントを ApsaraMQ for RabbitMQ インスタンスに接続する場合は、パブリックエンドポイントを指定する必要があります。
存在しない ApsaraMQ for RabbitMQ リソース:クライアントを ApsaraMQ for RabbitMQ インスタンスに接続する場合は、インスタンスが想定どおりに実行されていることを確認してください。 vhost などのリソースは、事前に ApsaraMQ for RabbitMQ コンソールで作成することをお勧めします。
解決策
ApsaraMQ for RabbitMQ インスタンスの静的ユーザー名とパスワードが正しく生成されていることを確認します。
静的ユーザー名とパスワードを生成する方法については、「静的ユーザー名とパスワードの管理」をご参照ください。クライアントを ApsaraMQ for RabbitMQ インスタンスに接続するときは、AccessKey ペアを静的ユーザー名とパスワードとして指定しないでください。
必要な権限が付与されていることを確認します。
Resource Access Management(RAM)ユーザーに ApsaraMQ for RabbitMQ で操作を実行するための権限を付与するには、「ステップ 1:(オプション)RAM ユーザーに権限を付与する」をご参照ください。
vhost 内のリソースなど、よりきめ細かいリソースに対する RAM ユーザー権限を付与するために使用されるポリシーについては、「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 エラーメッセージが返された場合は、インスタンスの仕様をアップグレードする必要があるか、インスタンスの使用methodを最適化する必要があるかを確認します。
541 エラーコードが返された場合は、リリースノートをご覧ください。ほとんどの場合、このエラーコードはブローカーのアップグレード中に返されます。ビジネスに影響がある場合は、チケットを送信して、Alibaba Cloudテクニカルサポートにお問い合わせください。