Pergunta

Como fizemos isso no passado, eu gostaria de reunir informações úteis para todos se deslocam para balanceamento de carga, como há são questões que o código deve estar ciente de.

Nós movido de um apache servidor para squid como reverse proxy / balanceador de carga com três apache servidores para trás.

Estamos usando PHP / MySQL, para que os problemas podem ser diferentes.

coisas que tínhamos de resolver:

Sessões

Nós mudamos de sessões php "default" (arquivos) para de sessão memcached distribuídos. solução simples, tem que ser feito. Desta forma, você também não precisa de "sessões pegajosas" no seu balanceador de carga.

Cache

Para o nosso não distribuídos apc-cache por servidor web, nós adicionamos anoter-layer memcached para cache de objetos distribuídos, e substituiu todos os sistemas filecaching antigas / desatualizado com ele.

Uploads

Uploads ir para uma pasta compartilhada (NFS).

Coisas que otimizado para velocidade:

estática Arquivos

A nossa principal NFS executa um lighttpd, servindo imagens (também enviados por usuários). Squid está ciente de que e nunca consulta nossos apache-nodes para imagens, o que deu um bom impulso desempenho. Squid também é configurado para armazenar em cache esses arquivos na RAM.

O que você fez para obter o seu código / projeto pronto para balanceamento de carga, quaisquer outras preocupações para as pessoas que pensam sobre este movimento, e qual plataforma / idioma você está usando?

Foi útil?

Solução

Ao fazer isso:

Para http nós, eu empurro difícil para uma única imagem de sistema (ocfs2 é bom para isso) e usar libra ou encruzilhada como um balanceador de carga, dependendo do cenário. Nós deve ter um pequeno disco local para troca e evitar a maioria (mas não todos) dores de cabeça de CDSLs.

Então eu trago Xen na mistura. Se você colocar uma quantidade pequena, temporais de informações sobre Xenbus (ou seja, a quantidade de memória virtual do Linux tem realmente prometeu aos processos por VM aka Committed_AS) você pode rapidamente detectar um cérebro balanceador de carga morta e ajustá-lo. A Oracle agarraram a este também .. e agora está trabalhando para melhorar o motorista balão no Linux.

Depois que eu olhar para o custo de dividir o uso de banco de dados para qualquer aplicativo determinado através sqlite3 e qualquer db o aplicativo quer nativamente, enquanto percebendo que eu preciso dividir a db tão posix_fadvise () pode fazer o seu trabalho e kernel não poluir tampões desnecessariamente. Desde serviços maioria dos DBMS quer fazer seu próprio buffer, você também deve deixá-los fazer o seu próprio agrupamento. Isso realmente determina o tipo de aglomerado DB que eu uso e que eu faço para o motorista balão.

servidores Memcache então inicializar a partir de um initrd magro, mais uma vez, enquanto o domínio privilegiado relógios seu uso de memória e CPU para que ele saiba quando para arrancar mais.

A escolha do batimento cardíaco / aquisição realmente depende da rede dada e o uso esperado do cluster. É difícil generalizar essa.

O resultado final é tipicamente 5 ou 6 nós físicos com um pouco de memória inicializando um monitor de máquina virtual + hóspedes enquanto ligado ao armazenamento espelhado.

Armazenamento também é difícil de descrever em termos gerais .. às vezes eu uso do cluster LVM, às vezes não. A não mudará quando LVM2 finalmente se afasta de seu atual API baseada string.

Finalmente, todos desta coordenação resulta em algo como Augeas configurações de atualização em tempo real, com base em eventos comunicada via Xenbus. Isso inclui ocfs2 si, ou qualquer outro serviço onde configurações só não pode residir em uma única imagem de sistema.

Esta é realmente uma questão de aplicação específica .. você pode dar um exemplo? Eu amo memcache, mas nem todos podem beneficiar de usá-lo, por exemplo. Estamos rever a sua configuração ou falar sobre as melhores práticas em geral?

Editar:

Desculpe por ser tão Linux centric ... é tipicamente o que eu uso na concepção de um cluster.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top