my page load goes to ping1, then the CSS file loads from service ping2, then the next file from ping1, and... Where I thought it'd mostly be one full page load from ping1 and the next one from ping2.
Isso porque o método padrão é round-robin.
Consulte o link . Em particular:
The following load balancing mechanisms (or methods) are supported in nginx:
- round-robin — requests to the application servers are distributed in a round-robin fashion,
- least-connected — next request is assigned to the server with the least number of active connections,
- ip-hash — a hash-function is used to determine what server should be selected for the next request (based on the client’s IP address).
[...]
When the load balancing method is not specifically configured, it defaults to round-robin.
[...]
To configure ip-hash load balancing, just add the ip_hash directive to the server (upstream) group configuration:
upstream myapp1 { ip_hash; server srv1.example.com; server srv2.example.com; server srv3.example.com; }
Como minha segunda pergunta, estou tentando imaginar como eu poderia usar o Jenkins para derrubar o ping2, atualizá-lo, depois trazê-lo para o ping1.
Não há necessidade de fazer isso nessa ordem. Tudo que você precisa é de um comando:
docker-compose up --build -d ping2
(e depois repita para ping1)
Acredito que isso não irá parar o contêiner até que a imagem seja construída, e nesse ponto ele irá pará-lo e recriá-lo imediatamente.
Não sei por que o nginx está pendurado por tanto tempo, mas usar ip_hash
deve evitar que isso aconteça no meio da página, e usar o comando docker-compose acima deve tornar o tempo de inatividade extremamente minúsculo.