Do ponto de vista do sistema, não há diferenças inerentes na execução de 4 mestres com 4 seções de servidor ou em um único mestre com 16 seções de servidor. Implementa a mesma arquitetura: processos baseados em eventos paralelizados.
A relação trabalhador / núcleo deve ser contabilizada pelo total de trabalhadores em todos os seus mestres, se você tiver vários. Isso vem de várias restrições:
- certifique-se de que as CPUs não estejam sobrecarregadas, portanto, o número de trabalhadores deve ser < = número de núcleos
- certifique-se de que o paralelismo e o planejamento do sistema operacional sejam usados da melhor maneira possível, portanto, o número de trabalhadores deve ser o mais alto possível
- Trabalhadores do servidor HTTP estão com pouca utilização da CPU e esperam principalmente em E / Ss, portanto, é realmente seguro alocar algo entre 2 ou 4x o número de núcleos
Deve ser um pouco mais eficiente com um único mestre, já que alguns recursos como mapas MIME e assim por diante só serão carregados uma vez. Mas esse é um ponto menor.
Deve ser mais eficiente com um único mestre, porque existe um único grande grupo de trabalhadores compartilhados por todos os servidores. Se um único servidor exigir momentaneamente a maioria dos trabalhadores (digamos 16), ele poderá obtê-los. Na configuração multi-master (digamos 4 mestres com 4 trabalhadores), eles só conseguem usar no máximo o que eles têm: 4 trabalhadores. Por outro lado, pode ser o efeito desejado: estritamente dividido em 4 instâncias para garantir que cada um receba pelo menos o quarto da atenção do seu anfitrião. Mas nunca mais.
Deve ser mais fácil configurar e manter com 1 mestre (pense em atualizações de segurança).
Deve ser mais resiliente com 4 mestres: você tem permissão para travar ou bagunçar totalmente uma configuração principal sem tocar nos outros três.
A menos que seus 4 mestres usem versões diferentes do Nginx, você não se beneficiará de ótimas otimizações como ter o conjunto exato de módulos compilados para cada mestre.