Failover do Apache e Balanceamento de Carga [duplicado]

1

Estou trabalhando para uma pequena empresa financeira como desenvolvedor de aplicativos da Web. Nossa empresa tem um site interal codificado em PHP e executado no Apache. Recentemente, nosso servidor caiu e o site ficou inativo por vários dias, causando sérios problemas.

Fui solicitado a configurar mais dois servidores para veicular o site. Portanto, queremos três servidores Apache Web / App em execução em três máquinas diferentes. Quando um usuário efetua login no site, ele deve ser servidorado por um dos três servidores, dependendo da carga. Além disso, se um ou dois dos servidores ficarem inativos, o servidor que está ativo deve manipular as solicitações do site.

Eu apenas sei criar um site em PHP e hospedá-lo em um servidor Apache. Eu não tenho nenhum conhecimento de rede. Por favor, diga-me o que preciso aprender para criar o sistema acima mencionado.

Eu não estou esperando ser alimentado com colher. Só preciso de um apontador para o que tenho que aprender para atingir meu objetivo. Estou pesquisando simultaneamente, mas fiz esta pergunta aqui, já que estou com pressa para implementá-lo.

    
por Community 25.12.2009 / 17:53

4 respostas

1

Se a sua empresa levar isso a sério, eles poderiam considerar um dispositivo como a série 11501 do Cisco CSS Content Services Switch. Usamos esse dispositivo com vários servidores da web / de aplicativos para equilibrar a carga e fornecer redundância.

    
por 25.12.2009 / 18:11
1

Se você não tem dinheiro para comprar balanceadores de carga, é possível fazer um balanceador de carga do servidor Apache configurando mod_proxy_balancer . Para tornar sua arquitetura completamente redundante, você precisará executar duas instâncias do seu balanceador de carga e poderá apontar seu domínio para os dois IPs. A outra opção é usar VRRP ou CARP descrito no livro do Theo que exigirá ajuda da equipe de operação de rede.

    
por 25.12.2009 / 18:53
1

+1 para arquiteturas escalonáveis da Internet.

O que eu faço é sentar e ver o que está sendo executado no servidor em questão.

Eu vou assumir por enquanto que você está rodando o linux, embora você não tenha explicitamente dito isso. O que você quer olhar é verniz. É um proxy reverso de alto desempenho e um balanceador de carga. Você pode configurá-lo seguindo os exemplos on-line aqui e deve ser fácil trabalhar.

Se você tiver dois nós de verniz de três servidores, aponte 1/3 do tráfego para cada um dos servidores, organizados como uma atribuição round-robin. Esses dois servidores precisam de endereços IP públicos exclusivos e você pode definir vários registros A no DNS para fazer o DNS de RoundRobin (RRDNS).

Se o seu serviço é extremamente importante para os negócios, e a sua última interrupção custa muito dinheiro, você pode querer defender uma rede mais resiliente e redundante. Supondo que atualmente você tenha apenas um servidor, em um IP fornecido por um fornecedor, se a interrupção anterior estiver relacionada à rede, talvez você ache que aumentar a resiliência da rede melhoraria seu tempo de atividade.

Observe também o monitoramento, verifique se você está monitorando coisas no (s) servidor (es) que podem derrubar o (s) servidor (es), dados SMART nos discos rígidos, espaço livre de troca, memória livre, livre / disco espaço. Arranje Nagios e Munin. Nagios para alertar quando as condições críticas de monitoramento forem atendidas e Munin para representar graficamente esses dados.

Você provavelmente terá que fazer algumas alterações no nível do aplicativo também. Supondo que seus aplicativos sejam baseados em sessão, você precisará de alguma maneira de lidar com as solicitações do usuário nem sempre indo para o mesmo servidor. Você poderia torná-los do lado do cliente, ou do lado do servidor e pegajoso. Você provavelmente achará que o memcached irá ajudá-lo muito aqui.
Quanto às mudanças no nível do aplicativo, você pode querer perguntar no StackOverflow, pois elas são mais código-y e menos servidor-y.

    
por 25.12.2009 / 21:01
0

Execute - não ande - para a Amazon.com e compre

link

Não perca tempo com isso até ler - e entender - este livro.

Você não deseja (ou precisa) um balanceador de carga de ponto único de falha.

O que você quer é uma solução simples de compartilhamento de carga Wackamole .

E você quer um único banco de dados usado por todos os seus servidores PHP front-end.

    
por 25.12.2009 / 18:17