
Resumindo minha exigência aqui.
Configure a configuração do cluster Ejabberd no balanceador de carga do aplicativo AWS e, em seguida, registre 10 mil usuários com a solicitação da API Ejabberd. Depois que as contas de usuário forem criadas, faça login com esses usuários, crie salas e realize o teste de chat com várias salas com várias contas de usuário.
Resumindo a configuração existente do cluster Ejabberd.
Eu configurei a configuração do cluster Ejabberd com dois nós na instância AWS. Em seguida, criei um balanceador de carga de aplicativo AWS com dois grupos de destino, um grupo de destino com número de porta 5280 (URL de administrador) e outro grupo de destino 5222 (autenticação de cliente XMPP). Então estou registrando o usuário ejabberd com a solicitação de API abaixo (posso criar 10 mil contas com script).
http://<AWS Load balancer domain name>:5280/api/register
{
"user": "test_user1",
"host": "<AWS Load balancer domain name>",
"password": "********"
}
Até aqui, a configuração do Ejabberd funcionou bem (criei um host virtual com nome de domínio do balanceador de carga AWS no arquivo de configuração do Ejabberd: “/opt/ejabberd/conf/ejabberd.yml”).
Quando tento autenticar o usuário registrado com o cliente Pidgin XMPP, não consigo autenticar o usuário registrado com o nome de domínio do balanceador de carga.
Percebi que os servidores Ejabberd estão recebendo a solicitação do endereço IP privado interno do balanceador de carga da AWS (não do nome de domínio real do balanceador de carga), portanto, a autenticação ejabberd não está funcionando com o balanceador de carga do aplicativo AWS.
Por favor me ajude a atingir esse requisito.
Responder1
Quando tento autenticar o usuário registrado com o cliente Pidgin XMPP, não consigo autenticar o usuário registrado com o nome de domínio do balanceador de carga.
Por que não? Você deve editar sua postagem e mostrar as mensagens registradas referentes a essa tentativa de autenticação.
Não sei sobre o balanceamento de carga da AWS, mas mencionarei apenas um raciocínio estranho:
Percebi que os servidores Ejabberd estão recebendo a solicitação do endereço IP privado interno do balanceador de carga da AWS (não do nome de domínio real do balanceador de carga), portanto, a autenticação ejabberd não está funcionando com o balanceador de carga do aplicativo AWS.
Umm... Contanto que o ejabberd receba as estrofes XMPP tentando autenticar e forneça as credenciais de conta corretas, não importa de onde vem essa conexão e a qual interface exata ela se conecta (5222 listener, 5280, 127.0 .0.1, ou qualquer outro endereço onde o ejabberd esteja escutando).
Por exemplo, essas são as mensagens registradas quando uma conta é registrada e faz login corretamente:
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
Suas contas estão realmente registradas? Como você tem certeza? Eles estão registrados no host correto?
Você pode verificar as contas no ejabberd WebAdmin, ou despejar o banco de dados em um arquivo de texto e observar a tabela passwd, ou usar ejabberdctl debug ou live e o comando:
(ejabberd@localhost)3> mnesia:dirty_read(passwd,mnesia:dirty_first(passwd)).
[{passwd,{<<"user2">>,<<"localhost">>},
<<"mypass11'a},ca">>}]