Primeiro, vou explicar minha situação para você. Estou executando um site bastante popular como um projeto paralelo, então não posso realmente investir uma tonelada de dinheiro nele. Atualmente, tenho apenas um servidor com HAProxy na frente enviando solicitações normais para o Apache e todas as solicitações de arquivos estáticos para o Lighttpd. Isso está funcionando muito bem porque todas as solicitações de php e post são tratadas pelo Apache, enquanto todas as imagens são enviadas para o Lighttpd mais rápido (o site é basicamente imagens, por isso é realmente importante). Seria bom não ter que configurar um subdomínio para veicular as imagens, porque URLs curtos também são realmente importantes, portanto, minha razão para usar o HAProxy.
Eu encontrei um provedor de hospedagem que oferece largura de banda não-medida bastante barata que eu estou usando, o problema surge quando eu começo a fornecer tanta largura de banda quanto a placa de rede de 100mbs pode suportar, necessitando de um segundo servidor.
Eu pensei muito nas minhas opções, então vou explicar cada uma para você. Espero que você possa fornecer algumas dicas sobre qual é a melhor opção para mim, ou talvez haja outra opção por aí que eu ainda não tenha pensado.
Requisitos:
Mesmo a distribuição da largura de banda é uma obrigação. Eu tenho um servidor bastante poderoso, então a ampliação não é uma opção. Eu preciso expandir para ganhar mais largura de banda.
URLs curtos. Realmente não costumo configurar um subdomínio, como img.example.com, para exibir minhas imagens. example.com/image.jpg é como é agora e como eu realmente gostaria que ficasse. Mas se não houver outra maneira, então eu entendo.
O servidor mais próximo que lida com a solicitação seria muito bom, mas não obrigatório. Algo a ter em mente.
HAProxy para balancear carga:
- Seria muito fácil, pois já estou usando o HAProxy. No entanto, acho que o problema surge ao distribuir largura de banda. Posso estar errado nisso, mas o HAProxy não envia a solicitação para um servidor em que o servidor as processa e depois a envia de volta através do HAProxy para o cliente? Portanto, todo o tráfego volta pelo balanceador de carga, fazendo com que ele use tanta largura de banda quanto todos os servidores combinados.
Robin redondo de DNS:
- Esta pode ser a minha melhor opção. Apenas replique o site em vários servidores e faça o que estou fazendo agora. A desvantagem é que, se um servidor cair, os clientes ainda serão enviados para ele. Eu também precisaria replicar o site nos vários servidores. Eu esperava que pudesse ter um servidor principal que lida com tudo, exceto arquivos estáticos, e depois ter alguns servidores de arquivos estáticos. Também li que esse era um tipo de 'balanceamento de carga do pobre homem' e seria bom ter algo um pouco mais sofisticado.
Retorno direto do servidor:
- Parece realmente complicado, mas pode ser uma boa opção. Ainda seria possível enviar certos URLs para determinados servidores? Como agora no HAProxy, todos os URLs que terminam na extensão de arquivo correta são enviados para o Lighttpd, enquanto outras extensões são enviadas para o Apache. Então, eu precisaria de algo semelhante. Assim, todas as solicitações de php são tratadas pelo mesmo servidor que executa o software de balanceamento, enquanto todas as solicitações de jpg são enviadas para vários servidores.
Idealmente, se o HAProxy suportasse o Direct Server Return, meu problema seria resolvido. Também não quero usar uma CDN, porque são muito caras e, afinal, esse é apenas um projeto paralelo.
Você entende meu problema? Deixe-me saber se eu não expliquei algo certo ou se você precisar de mais informações.