Balanceamento de carga e alta disponibilidade de servidores de aplicativos: Tomcat, Jboss e IIS

PUBLICADO EM 24 de fevereiro de 2017

Visão geral

O objetivo deste artigo é explicar como ampliar os recursos dos servidores de aplicativos, como Tomcat, Jboss or IIS tornando-os altamente escalonáveis ​​na Web e configurando-os em alta disponibilidade para serem tolerantes a falhas e como reforçar a segurança cibernética.

O que é alta disponibilidade?

A alta disponibilidade é a qualidade de um sistema ou componente que garante um alto nível de desempenho operacional, normalmente o tempo de atividade, por um período de tempo maior que o normal.

Configurando Servidores de Aplicativos em alta disponibilidade, resolvemos os seguintes problemas:

  1. Um único servidor perde eficiência ao lidar com uma grande quantidade de solicitações
  2. Os dados da sessão são preservados em caso de falha do servidor
  3. Atualizando o aplicativo sem descontinuar o serviço

O que é escala da web?

Aplicando os princípios de escala da Web aos Servidores de Aplicativos, todos os processos de negócios de qualquer tamanho podem crescer, ser otimizados, automatizados e efetivamente redimensionáveis.

O que é um servidor de aplicativos?

Um servidor de aplicativos é uma estrutura de software que fornece a lógica de negócios para um programa aplicativo, o que significa que ele administra recursos para criar aplicativos da Web e um ambiente de servidor para executá-los.
Embora este artigo possa ser usado como um guia para qualquer servidor de aplicativos, explicaremos alguns detalhes sobre os mais populares, que são:

  1. A Tomcat software (ou também conhecido como servidor Apache Tomcat ou Tomcat): uma implementação de código aberto das tecnologias Java Servlet, JavaServer Pages, Java Expression Language e Java WebSocket.
  2. JBoss or Vôo selvagem: o servidor de aplicativos desenvolvido pela Red Hat.
  3. IIS (Serviços de Informações da Internet): O servidor de aplicativos desenvolvido pela Microsoft.

Configurando o Balanceador de Carga Zevenet

Com Balanceador de carga Zevenet podemos garantir alta disponibilidade e escalabilidade para servidores de aplicativos. Observe que, para seguir estas instruções, será necessário instalar uma instância do Zevenet Load Balancer e várias instâncias de servidores de aplicativos. O ambiente que vamos descrever é o seguinte:

Esquema de servidores de aplicativos

Etapa 0: replicação do servidor

Em nosso exemplo, usamos dois servidores de back-end para cada aplicativo, mas podemos incluir o quanto for necessário. É fundamental garantir a consistência, para que, ao se conectar a um servidor de aplicativos, sempre vejamos o mesmo e todos os dados salvos no aplicativo não sejam perdidos. Para conseguir isso, a replicação de sessão nos servidores deve ser configurada. Nós chamamos isso step 0 como isso deve ser feito nos servidores de aplicativos.

Tomcat fornece replicação de sessão interna na memória: DeltaManager e Gerenciador de Backup. A principal diferença entre esses dois replicadores é que DeltaManager é mais lento, mas mais confiável em caso de falha.

JBoss também fornece uma maneira simples de ativar a replicação de sessão: marcando o aplicativo como distribuível no web.xml descritor.

Replicação de serviço para IIS pode ser alcançado usando DFSR (Replicação do sistema de arquivos distribuídos).

Etapa 1: criar IP virtual

Assim que o Zevenet Load Balancer estiver instalado, é necessário criar um novo IP virtual, no menu principal, selecione Rede-> Interfaces virtuais-> Ações-> Criar

Encontre a interface física onde você deseja criar um IP virtual

 

Digite o nome e o endereço do seu novo IP virtual. Em seguida, salve-o clicando no botão “Criar”.

Etapa 2: criar farm http

Um farm ou cluster é uma coleção de servidores que fornecem funcionalidade de servidor, aumentando significativamente sua capacidade. Embora estejamos usando os termos fazenda e cacho como sinônimos, existe uma ligeira diferença entre eles. Quando se fala de um cacho, a redundância está implícita, mas quando se fala de um fazenda, pode haver ou não redundância. No nosso caso, como teremos uma tolerância à configuração de falha, poderíamos falar sobre farm ou cluster como sinônimos.

Dessa forma, ao configurar um farm de servidores de aplicativos, aumentaremos seu desempenho e toleraremos falhas, o que é essencial para alta disponibilidade. Para conseguir isso, vá para LSLB-> Fazendas-> Criar

Selecione um nome e HTTP como perfil. Selecionamos o perfil http porque é a melhor opção para serviços da web, pois podemos fornecer opções de troca de conteúdo sob o mesmo IP e porta virtuais.

Mais duas opções serão exibidas. Selecione o IP virtual criado na etapa 1 e uma porta (no exemplo, escolhemos 80, como é o padrão para o protocolo HTTP) e clique no Salvar botão.

Etapa 3: adicionar os serviços

A idéia principal é atender diferentes aplicativos de diferentes servidores de aplicativos do mesmo IP e porta virtuais. Assim, uma vez criado o farm, temos que editá-lo para adicionar novos serviços. Em nosso exemplo, vamos configurar três serviços. Um para cada servidor de aplicativos. Por favor, clique no botão editar fazenda.

Vários detalhes do farm podem ser editados, no exemplo, vamos definir os valores padrão e os serviços.

Na imagem acima, temos Adicionado um serviço com o nome do serviço “app1”.

 

Como estaremos acessando todos os três serviços através do mesmo farm, precisamos distinguir entre esses serviços. Para fazer isso, podemos definir um valor para Padrão de URL. Esse campo permite determinar um serviço da web de acordo com a URL que o cliente está solicitando por meio de um padrão de URL específico. No nosso exemplo, vamos digitar ^ / app1. *, ^ / app2. * e ^ / app3. *. Clique em modificar para aplicar alterações.

Leve em conta que o backend deve encontrar o endereço http://[VIRTUAL_IP]:[PORT]/[YOUR_SERVICE] (no nosso exemplo http://192.168.56.200/app1), para garantir isso, o contexto deve ser configurado em sua aplicação. Em nossos exemplos, vamos configurar o contexto / app1 para Tomcat, / app2 para Jboss e / app3 para IIS. O Contexto representa um aplicativo da web que é executado em um host virtual específico. No caso particular de IIS, os contextos são referidos como aplicativos.

Neste exemplo, temos dois servidores de back-end por aplicativo. Nós selecionamos IP, porta (padrão 8080 para Tomcat e JBosse 80 para IIS), tempo limite e peso e clique em salvar backend botão.

Queremos evitar a comutação do servidor: se durante a nossa sessão saltarmos de um servidor para outro, haverá eficiência, dados e até perda de comunicação. Para evitar isso, Sessão de persistência deve ser configurado. Optaremos por manter uma sessão por ID de sessão, o que significa que, durante uma sessão, nos conectaremos a apenas um servidor.

Nos parâmetros globais do serviço, agora podemos alterar o campo da sessão de persistência para COOKIE: um determinado cookie

Selecionar Jsessionid como identificador de sessão de persistência para Tomcat e Jboss e Identificação de sessão para IIS, clique em Atualizar no final da página.

 

Agora, no mesmo farm, devemos adicionar mais 2 serviços da mesma maneira que app1 para app2 e app3, incluindo o cookie de persistência para JBoss (o padrão é chamado Jsessionid) e IIS (o cookie padrão para o ASP.NET é ASPXAUTH), respectivamente, mas você pode usar o cookie exigido pelo aplicativo. Todos os serviços na fazenda têm seus próprios back-ends que podem ser compartilhados entre os farms ou serviços de fazendas.

Observe que a ordem dos serviços é importante para corresponder ao padrão de URL correto.

Finalmente, devemos aplicar as alterações reiniciando o farm.

Parabéns! você configurou seus servidores de aplicativos em alta disponibilidade. Você pode acessá-lo digitando http://[VIRTUAL_IP]:[PORT]/[YOUR_SERVICE] (no nosso exemplo http://192.168.56.200/app1, http://192.168.56.200/app2 or http://192.168.56.200/app3).

Etapa 4: verificação avançada

Agora, configuraremos o responsável pelo farm para executar verificações de integridade avançadas nos back-ends, garantindo que eles estejam funcionando corretamente e o comportamento correto do aplicativo, e não apenas a verificação da porta TCP. Por favor localize o Guardião da Fazenda dentro do seu Serviço, configuramos na etapa 3. Clique em Use FarmGuardian para verificar os servidores de back-end, você também pode modificar o tempo entre a verificação e, finalmente, no Comando para verificar caixa de texto, digite o seguinte comando.

check_http -I HOST -w 10 -c 10 -t 10 -e 200 -p PORT -s '</html>'

Por fim, clique em Atualizar no final da página.

 

O comando check_http testa conexões HTTP com o host especificado. No nosso caso, estamos usando as seguintes opções:

-EU HOSPEDO: O token HOST será substituído pelo endereço IP de back-end definido.
-w 10: tempo de resposta para resultar no status de aviso: segundos 10
-c 10: tempo de resposta ao status crítico: segundos 10
-t 10: 10 segundos antes do tempo limite da conexão
-e 200: espera que a string 200 no status da resposta do servidor
-p PORT: O token PORT será substituído pela porta backend definida.
-s ' ': a string a esperar no conteúdo é ' '

Portanto, o que este comando fará é basicamente verificar se obtivemos uma resposta 200 OK e se o comando de resposta contém a string ' '. Selecionamos essa string porque ela está no final da resposta, dessa forma podemos garantir que obteremos uma resposta completa dos back-ends.

Etapa 5: alta segurança

Comunicações seguras podem ser facilmente configuradas com o Zevenet Load Balancer, então a próxima etapa é habilitar o ouvinte HTTPS: Editar parâmetros globais do farm tela, altere o ouvinte do farm de HTTP para HTTPS e a porta virtual para 443.

Agora, os serviços podem ser acessados ​​digitando https://[Your_virtual_ip]/[yourappservice] no seu browser.

As comunicações seguras estão agora em execução, mas podemos ir mais longe configurando os parâmetros HTTPS: dentro dos parâmetros globais do farm, localize os Configurações HTTPS seção. Nós podemos mudar o Cifras para Alta seguranca.

O campo ciphers é usado para criar uma lista de cifras aceitas pelas conexões SSL para proteger a conexão SSL. Selecionando Alta seguranca, vamos definir por padrão as cifras.

kEECDH+ECDSA+AES128:kEECDH+ECDSA+AES256:kEECDH+AES128:kEECDH+AES256:kEDH+AES128:kEDH+AES256:DES-CBC3-SHA:+SHA:!aNULL:!eNULL:!LOW:!kECDH:!DSS:!MD5:!EXP:!PSK:!SRP:!CAMELLIA:!SEED

Outra opção é o Certificados HTTPS disponíveis: uma lista de certificados será mostrada para ser selecionada para o farm atual (somente para farms HTTP, que é o nosso caso). Podemos selecionar um da lista e clicar em Adicionar. Finalmente, clique em modificar e reinicie o farm para aplicar as alterações.

Para mais informações, consulte Fazendas de perfis HTTP.

O HTTPS também pode ser ativado em seus servidores de aplicativos, se este for o caso, você deve ativar a opção Back-ends HTTPS.

Compartilhar no:

Documentação sob os termos da Licença de Documentação Livre GNU.

Esse artigo foi útil?

Artigos Relacionados