Separando o servidor MySQL do servidor da Web

2

Olá, comunidade ServerFault,

Eu geralmente sou um espreitador / colaborador do StackOverflow, no entanto, tenho jogado com um serviço de nuvem de servidor recentemente e gostaria de ter sua opinião.

Eu construo aplicações web (geralmente de pequeno a médio porte com baixo tráfego) e atualmente eu tenho 3 máquinas virtuais rodando no Debian e servindo arquivos web através do Apache e dados com o MySQL. Cada VPS é executado entre 10 e 30 sites; alguns aplicativos personalizados, alguns do Wordpress e alguns sites HTML estáticos.

Com o novo serviço em nuvem com o qual estou jogando (atualmente em versão beta, então é grátis!), tenho a capacidade de iniciar / parar e dimensionar servidores conforme desejar. A primeira experiência na minha lista é substituir o Apache pelo Nginx e até agora isso está indo bem. No entanto, estou começando a me perguntar se haveria algum benefício em ter um servidor 'otimizado' para servir arquivos via Nginx e armazenar arquivos de mídia e, em seguida, outro servidor 'otimizado' para executar e fornecer dados através do MySQL.

Eu não sei se há muito o que você poderia fazer para otimizar cada servidor para hospedagem na Web ou no banco de dados ou se haveria outros grandes benefícios em separar os serviços separadamente? Eu apreciaria quaisquer pensamentos / comentários sobre o assunto e quaisquer outras opções que eu possa ter perdido.

Sidenote: Usando o serviço em nuvem, tenho a opção de personalizar totalmente os servidores, incluindo memória, espaço em disco e velocidade do disco (SATA, SAS, SSD).

    
por Matt 29.11.2011 / 11:24

1 resposta

1

Geralmente

  • Os DBs querem tanto (se não todos) seus dados na memória e CPU, a velocidade do disco rígido é menos importante.
  • Os HTTPDs querem E / S de HDD, pois os arquivos estão sendo veiculados do disco.

Se você puder especificar qualquer tipo de servidor, não vejo razão para não criar servidores de alta especificação e executar o DB e o HTTPD na mesma máquina, mas, apesar do custo, acho que essas são as principais vantagens e desvantagens:

Vantagens

  • Carregar em um não afeta outro
  • Pode ser dimensionado independentemente conforme necessário
  • Os ajustes do kernel podem ser aplicados especificamente à tarefa em questão
  • Especificação de máquinas específicas para necessidades (DB = RAM, HTTPD = SSD)
  • Mais fácil de configurar / gerenciar (minha opinião)
  • Mais fácil migrar para o CDN no futuro [?]
  • Máquinas isoladas significam que menos é potencialmente comprometido por uma violação de segurança

Desvantagens

  • TCP / IP do MySQL vs SOCKs Unix (latência do banco de dados)
  • Duas vezes mais pontos de falha

Não tem certeza de onde o custo se encaixa (o que é mais caro).

Embora não seja específico para dividir os servidores, uma coisa que pode ser útil é dividir o conteúdo da Web em conteúdo estático e dinâmico para reduzir a sobrecarga no processamento de conteúdo estático (não é necessário carregar o PHP se você estiver enviando um arquivo estático ).

Nota pessoal : Nós executamos o VMware em um datacenter (alugamos alguns blades) e localmente. Eu prefiro muito mais manter o DB / HTTPD separado. Temos VMs DB / HTTPD separadas no datacenter, mas não localmente. Eu prefiro muito mais a primeira e, embora não tenha estatísticas, as VMs no datacenter são executadas com uma especificação muito menor do que as VMs combinadas de HTTPD / DB fazem localmente com menos problemas de desempenho.

    
por 29.11.2011 / 12:32