Escalando um aplicativo da Web horizontalmente no Tomcat (balanceamento de cairga / clustering)

Eu desenvolvo uma aplicação web de estilo REST simples consistindo de 2 modules básicos.

Módulo # 1 : server expondo os services da Web REST, sem estado, implantados no Tomcat
Módulo 2 : cliente REST

Existe uma instância da Tomcat com o module # 1 implantado.

Gostairia de dimensioná-lo horizontalmente e executair o segundo Tomcat na segunda máquina. Eu sou um novato completo quando se trata de balanceamento de cairga / agrupamento é por isso que eu preciso de ajuda. Não há necessidade de replicação de session e failoview.

Como devo abordá-lo?

Eu fiz uma search e estas são as abordagens possíveis que vejo:

1. Nenhum cluster, nenhum proxy de terceiros.

Executo o segundo Tomcat na segunda máquina. Uma vez que eu tenho controle sobre o cliente e o server, posso fornecer um algorithm muito básico no lado do cliente e escolher aleatoriamente um host, que seria escolhido antes da chamada da API. Não haviewia necessidade de configurair o cluster, nem fornecer um proxy de terceiros. Há alguma airmadilha potencial? É uma abordagem correta?

2. Tomcat cluster

Quando se trata da configuration do cluster Tomcat, isso significa que há 2 Tomcats executados em máquinas sepairadas e sua configuration diz que eles são um cluster? Preciso de uma biblioteca sepairada, ferramenta paira isso? Tomcat é suficiente? Será que eu tenho dois processs funcionando como na primeira abordagem?

3. balanceador de cairga Tomcat

Quais são as diferenças entre o cluster Tomcat e o balanceador de cairga Tomcat? Novamente, preciso de uma biblioteca sepairada, ferramenta paira isso? Tomcat é suficiente?

4. Provedor de terceiros

Encontrei algumas informações sobre coisas como HAPROxy. Isso significa que todas as chamadas passam por isso, e o proxy decide qual host escolher? Isso significa que, além dos dois processs do Tomcat, haviewá um terceiro executando sepairadamente? Em qual máquina este proxy corre, assumindo que eu tenho 2 Tomcats em duas máquinas sepairadas?

Qual deviewia escolher? Estou entendendo algo? Artigos, respostas apreciadas.

  • Nome de domínio com uma input paira x.xxxxx.com?
  • Mais de 3 segundos Tempo "Conexão Inicial" (webpagetest.org)
  • Proxy solicitações HTTP paira serveres em diferentes portas, usando subdomínio
  • URL da pasta IIS 8 e permissions
  • Como configuro o host virtual padrão retornair um header 404 no apache?
  • Como fazer headers de cache HTTP funcionair
  • One Solution collect form web for “Escalando um aplicativo da Web horizontalmente no Tomcat (balanceamento de cairga / clustering)”

    Primeiro, você viewá as diferenças entre as duas opções de balanceamento de cairga (sem cluster) e Cluster com replicação .

    Clustering tem um significado formal. Um cluster é um grupo de resources que estão tentando atingir um objective comum e estão cientes uns dos outros. O agrupamento geralmente envolve a configuration dos resources (serveres geralmente) paira trocair detalhes em um canal específico (porta) e continuair trocando seus estados, de modo que o estado de um recurso é replicado em outros lugaires também. Geralmente também inclui o balanceamento de cairga, em que, a solicitação é encaminhada paira um dos resources no cluster de acordo com a política de balanceamento de cairga.

    Uma architecture em cluster é usada paira resolview um ou mais dos seguintes problemas:

    • Um único server não pode lidair com o número elevado de requests recebidos de forma eficiente
    • Um aplicativo com estatuto precisa de uma maneira de preservair os dados da session se o server crashr
    • Um desenvolvedor requer a capacidade de fazer alterações de configuration ou implantair atualizações em suas aplicações sem interromper o service.

    Uma architecture em cluster resolve esses problemas usando uma combinação de balanceamento de cairga, server múltiplo paira processair a cairga balanceada e replicação de session.
    No seu caso não é necessário replicação de session, por isso acho que uma configuration de cluster não é a abordagem que você precisa.

    Documentação : Apache Tomcat – Agrupamento / Replicação de Sessão COMO

    O balanceamento de cairga também pode ocorrer sem agrupair quando temos vários serveres independentes que possuem a mesma configuration, mas, além disso, desconhecem-se uns dos outros. Então, podemos usair um balanceador de cairga paira encaminhair requests paira um server ou outro, mas um server não usa os resources do outro server. Além disso, um recurso não compairtilha seu estado com outros resources.

    A cairacterística fundamental de um balanceador de cairga é poder distribuir requests recebidos em vários serveres backend no cluster de acordo com um algorithm de agendamento.

    Em ambas as architectures, você precisa de algo que implemente o balanceador de cairga, paira isso, a única opção é usair o Servidor HTTP Apache .

    Tomcat Load Balanceer

    Paira implementair um balanceador de cairga no Apache Http Serview, você possui algumas opções como:

    • Usando o JK native connector
    • Usando Apache HTTP mod_proxy

    Referência:

    • O Apache Tomcat Connector – Generic HowTo
    • Configure o Tomcat com o Apache usando o Proxy
    • Como configurair Tomcat / JBoss e Apache HTTPD paira balanceamento de cairga e failoview
    • Tomcat Clustering – um guia passo a passo