
ここで私の要件を要約します。
AWS アプリケーション ロード バランサーで Ejabberd クラスター セットアップを構成し、Ejabberd API リクエストを使用して 10,000 人のユーザーを登録します。ユーザー アカウントが作成されたら、それらのユーザーでログインし、ルームを作成し、複数のユーザー アカウントを持つ複数のルームでチャット テストを実行します。
既存の Ejabberd クラスターのセットアップの概要。
AWS インスタンスに 2 つのノードを持つ Ejabberd クラスター セットアップを構成しました。次に、2 つのターゲット グループを持つ AWS アプリケーション ロード バランサーを作成しました。1 つのターゲット グループはポート番号 5280 (管理 URL)、もう 1 つのターゲット グループは 5222 (XMPP クライアント認証) です。次に、以下の API リクエストを使用して ejabberd ユーザーを登録します (スクリプトを使用して 10,000 個のアカウントを作成する場合があります)。
http://<AWS Load balancer domain name>:5280/api/register
{
"user": "test_user1",
"host": "<AWS Load balancer domain name>",
"password": "********"
}
ここまでは、Ejabberd のセットアップは正常に動作しています (Ejabberd 構成ファイル「/opt/ejabberd/conf/ejabberd.yml」に AWS ロードバランサーのドメイン名を使用して仮想ホストを作成しました)。
Pidgin XMPP クライアントを使用して登録済みユーザーを認証しようとすると、ロード バランサー ドメイン名を使用して登録済みユーザーを認証できません。
Ejabberd サーバーが AWS ロードバランサーの内部プライベート IP アドレス (ロードバランサーの実際のドメイン名からではない) からリクエストを受信しているため、ejabberd 認証が AWS アプリケーション ロードバランサーで機能していないことに気付きました。
この要件を達成するために私を助けてください。
答え1
Pidgin XMPP クライアントを使用して登録済みユーザーを認証しようとすると、ロード バランサー ドメイン名を使用して登録済みユーザーを認証できません。
なぜダメなのでしょうか? 投稿を編集して、その認証試行に関して記録されたメッセージを表示する必要があります。
AWS の負荷分散についてはよくわかりませんが、奇妙な理由を 1 つだけ挙げておきます。
Ejabberd サーバーが AWS ロードバランサーの内部プライベート IP アドレス (ロードバランサーの実際のドメイン名からではない) からリクエストを受信しているため、ejabberd 認証が AWS アプリケーション ロードバランサーで機能していないことに気付きました。
うーん... ejabberd が認証を試行する XMPP スタンザを受信し、正しいアカウント資格情報を提供している限り、その接続がどこから来るのか、どのインターフェイスに接続するのか (5222 リスナー、5280、127.0.0.1、または ejabberd がリッスンしているその他のアドレス) は問題ではありません。
たとえば、アカウントが登録され、正しくログインしたときに記録されるメッセージは次のとおりです。
2020-12-04 12:16:08.006547+01:00 [info] The account user2@localhost
was registered from IP address 127.0.0.1
2020-12-04 12:16:13.502761+01:00 [info] (<0.675.0>)
Accepted connection 127.0.0.1:46309 -> 127.0.0.1:5222
2020-12-04 12:16:13.607712+01:00 [info] (tls|<0.675.0>)
Accepted c2s DIGEST-MD5 authentication for user2@localhost by mnesia backend from 127.0.0.1
2020-12-04 12:16:13.650407+01:00 [info] (tls|<0.675.0>)
Opened c2s session for user2@localhost/tka1
あなたのアカウントは本当に登録されていますか? どうやって確認していますか? 正しいホストに登録されていますか?
アカウントは、ejabberd WebAdmin で確認することも、データベースをテキスト ファイルにダンプして passwd テーブルを確認することも、ejabberdctl debug または live と次のコマンドを使用することもできます。
(ejabberd@localhost)3> mnesia:dirty_read(passwd,mnesia:dirty_first(passwd)).
[{passwd,{<<"user2">>,<<"localhost">>},
<<"mypass11'a},ca">>}]