domingo, 29 de junho de 2008

Openfire e o módulo Connection Manager

Muita gente tem me questionado sobre a quantidade de conexões que o Openfire consegue atender simultaneamente.

Conforme informações da Ignite Realtime, o Openfire foi desenvolvido para atender um número bem expressivo de conexões (milhares de conexões simultâneas), dependendo para isso de hardware e memória suficientes no servidor, é claro.

Mas para facilitar que o servidor possa atingir esses números sem que precisemos de um hardware "absurdo", o ideal é usar o módulo Connection Manager.

O que é o módulo Connection Manager ?

O módulo Connection Manager (Gerenciador de conexões) foi criado para otimizar o servidor Openfire, permitindo que o mesmo atenda milhares de conexões concorrentes.

Quais as vantagens de usar o módulo ?

Cada módulo pode atender uma porção de conexões de clientes o que ajuda a dividir a carga de processamento no servidor Openfire principal, evitando upgrades desnecessários no mesmo e garantindo melhor estabilidade no serviço.

Conforme informações do desenvolvedor, cada módulo consegue atender até 5 mil conexões simultâneas, o que por si só já é um valor bem significativo.

E como funciona ?

Para fazer o mesmo funcionar basta fazer o download do módulo e instalá-lo no computador que irá atender as conexões (por razões óbvias, esse computador não é o servidor Openfire).A configuração do mesmo é bastante simples:
  • Habilite o suporte ao Connection Manager no console admin do Openfire (em Servidor -> Configurações do Servidor -> Gerenciadores de Conexão). Deixe a porta padrão (5262) mas coloque uma senha para garantir a segurança. E não esqueça de liberar essa porta no firewall, caso esteja bloqueada.
  • Edite o arquivo manager.xml que fica na pasta conf do Connection Manager, colocando o domínio do servidor e informações de porta e senha (o resto pode ser deixado como padrão).
  • Inicie o serviço do Connection Manager, rodando o arquivo cmanager.sh na pasta bin (cmanager.bat para usuários Windows) do Connection Manager. Aconselho que você crie um script de inicialização para automatizar o processo.
  • Aponte seus clientes XMPP para conectarem no IP do computador onde foi instalado o Connection Manager (as portas são as mesmas, 5222 ou 5223 para SSL), ao invés de deixar ele se conectar no servidor principal (procedimento padrão dos clientes XMPP). Essa pode ser a parte "mais chata" do processo. Caso você tenha vários servidores rodando o Connection Manager, uma idéia interessante pode ser fazer um round robin DNS para eles.
Após esses passos seus clientes começarão a conectar-se no módulo Connection Manager, que por sua vez irá se preocupar em fazer a conexão ao servidor principal. Você poderá acompanhar as conexões no console admin, em Servidor -> Configurações do Servidor -> Gerenciadores de Conexão. Lá é possível ver quais Connection Managers estão rodando e quantos clientes há conectados em cada um deles.

Para outras informações e downloads do Connection Manager, acesse aqui.

2 comentários:

  1. Querendo ser apenas construtivo amigo, otimizar quer dizer que será feito melhor, logo otimizar melhor é um pleonasmo! Ótimo o artigo, mas o ejabberd suporta nativamente este balanceamento.

    ResponderExcluir
  2. Realmente você tem razão.

    Alterado !!! :-)

    Quanto ao ejabberd eu realmente não sabia dessa feature.

    Considero o ejabberd um excelente servidor XMPP (tanto que é usado pelo jabber.org). Só acho que falta para ele mais recursos (que você encontra no Openfire através de seus plugins) e também uma melhor interface gráfica de gerenciamento.

    []s

    ResponderExcluir