Eu tenho uma situação ip_hash
no nginx para sessão fixa, onde ele sempre direciona o tráfego para apenas um servidor. O nginx está sendo executado atrás de um balanceador de carga do Google Cloud. A partir do nginx, ele atinge o balanceador de carga GC Kubernetes do meu aplicativo antes de realmente ir para um dos pods.
Acredito que o IP de todos os usuários foi mascarado pelo balanceador de carga do GC para que o nginx os reconheça como uma fonte.
Disseram-me que podemos adicionar o IP original do usuário ao cabeçalho do nginx para que o balanceador de carga seja capaz de reconhecê-los como usuários diferentes. Como posso abordar um? Ou há outra solução?
Responder1
Se você estiver usando o balanceamento de carga de rede (com pools de destino), o balanceador de carga manterá o IP. O que acontece é que o Kubernetes está mudando oIP fontecom os IPs do cluster/nó.
O Kubernetes possui um recurso para preservar o IP de origem do cliente. Você pode verificar nos documentoscomo preservar o IP de origem do cliente nos serviços com Type=LoadBalancer(Balanceamento de carga de rede).
Responder2
Configurarafinidade de sessãodurante a configuração inicial de umconjunto de destinoconfigurando-o para um dos seguintesvalores não padrãopara fornecer o nível desejado desessão pegajosa:
CLIENT_IP
Hashing de 2 tuplas, que usa os IPs de origem e destino. Todas as conexões de um cliente terminarão na mesma instância, independentemente do protocolo, desde que a instância permaneça íntegra.
CLIENT_IP_PROTO
Hashing de 3 tuplas, que usa os IPs de origem e destino e o protocolo. Todas as conexões de um cliente terminarão na mesma instância, desde que usem o mesmo protocolo e a instância permaneça íntegra.
Lakshman Diwaakarrefere-se à configuração de afinidade de sessão como sendo um conjunto de atributos não modificável"durante a criação de"um pool de destino. Sua análise das funcionalidades de balanceamento de carga disponíveis no Cloud Compute pode ser interessante para você revisar:Balanceador de carga de rede versus balanceador de carga HTTP(s).
Responder3
Use o proxy_set_header para adicionar seu IP original ao cabeçalho NGINX. Confira os seguintes exemplos:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
Da mesma forma, você pode adicionar sua origem IP ao cabeçalho NGINX.