/ / Qual é a melhor prática para a arquitetura Nginx / ELB / Unicorn na AWS? - ruby-on-trilhos, serviços da web da amazon, nginx, unicórnio

Qual é a prática recomendada para a arquitetura Nginx / ELB / Unicorn na AWS? - ruby-on-rails, amazon-web-services, nginx, unicórnio

Temos um aplicativo RoR na AWS Beijing. A AWS Beijing não possui a rota 53 (não podemos usar o alias para aplicar o ELB ao domínio Apex); portanto, devemos usar um servidor front-end executando o Nginx na frente do ELB.

Agora nossa arquitetura gosta abaixo:

Front-end (Nginx) - ELB --- Aplicativo- (1 ~ n) (Nginx - Unicorn)

Percebemos as palavras do Unicorndescrição abaixo: "O Unicorn nunca deve ser exposto a clientes lentos, pois nunca usará coisas novas, como E / S de soquete sem bloqueio, threads, epoll ou kqueue. O Unicorn deve ser usado com um proxy reverso com buffer completo, como o nginx for clientes lentos ".

Então minha pergunta é:
1. Antes do Unicorn, precisamos do nginx no App Server?
2. Se removermos o nginx no App Server, o nginx no servidor front-end pode executar esse efeito, como a descrição do unicórnio?

Respostas:

1 para resposta № 1

Eu recomendaria substituir o ELB pelo HAProxynesse cenário em que você não tem o recurso de alias do Route53 para apontar para o seu domínio principal. Colocar uma instância do Nginx na frente do ELB não parece uma boa ideia, pois você está adicionando uma nova camada apenas porque pode "t referenciar o ELB no Route53. Você também perde o benefício de alta disponibilidade colocando uma instância do Nginx na frente do ELB.

Minha sugestão é que você mantenha uma instância deNginx em cada servidor de aplicativos na frente do Unicorn e use o HAProxy como balanceador de carga: HAProxy> [Nginx> Unicorn]. Em uma configuração simples do HAProxy, você também não tem a mesma disponibilidade do ELB, mas pode definir uma configuração de alta disponibilidade, se necessário.


0 para resposta № 2

1) O Nginx deve estar sempre na frente do Unicorn porque o Unicorn não pode lidar com clientes lentos com eficiência, apenas bloqueado por esses clientes

2) Nunca fale com o Unicorn via rede, isso significa que cada servidor de aplicativos precisa ter seu próprio Nginx. O Nginx como Load Balancer é muito melhor que a caixa preta do ELB.