(Pacemaker) O Nginx usa o endereço IP principal em vez do IP virtual para se comunicar com servidores da web

2

Eu configurei um cluster de dois nós (ativo / passivo) com o Corosync / Pacemaker e o nginx como um proxy reverso. O SO é RHEL7 e a máquina tem apenas uma interface de rede no momento.

Eu configurei dois recursos:

  • cluster-vip para o IP virtual compartilhado
  • proxy reverso para nginx

Aqui estão as declarações de ambos os recursos:

pcs resource create cluster-vip ocf:heartbeat:IPaddr2 ip=192.168.0.1 cidr_netmask=24 op monitor interval=30s

pcs resource create reverse-proxy systemd:nginx op monitor interval=5s meta failure-timeout=60s

pcs constraint colocation add reverse-proxy with cluster-vip INFINITY

pcs constraint order cluster-vip then reverse-proxy

Ontem, vi um comportamento inesperado ao fazer uma captura de rede. Ao se comunicar com os clientes, o nó ativo usa o endereço IP virtual (192.168.0.1). Ao se comunicar com os servidores da Web localizados na rede interna, ele usa o endereço IP principal da interface, em vez do vip (192.168.0.2 ou 192.168.0.3, dependendo do nó ativo).

Como resultado, sou forçado a criar duas regras diferentes no meu firewall (uma para o nó 1 e outra para o nó 2) em vez de apenas permitir que o vip se comunique com os servidores da web. Eu planejo adicionar outros nós ao cluster, e seria conveniente não ter que permitir cada nó individualmente e permitir o vip de uma vez por todas.

Esse comportamento tem uma explicação lógica? Existe uma maneira de dizer ao pacemaker para usar somente o vip? E é uma boa prática? Eu não quero fazer nada estúpido, então se você acha que eu não deveria fazer isso, eu ficaria feliz em saber por quê.

Atenciosamente

    
por Litame 09.05.2016 / 18:17

1 resposta

3

Não acredito que seja uma questão de instruir o marcapasso a usar somente o IP virtual, mas sim dizer ao Nginx para usar somente o IP virtual.

Não sou especialista em Nginx, mas lendo a documentação deles, encontrei uma diretiva de configuração chamada proxy_bind . Eu acredito que isso pode ser o que você precisa definir para obter o comportamento desejado. Na documentação do Nginx, aqui .

If your proxy server has several network interfaces, sometimes you might need to choose a particular source IP address for connecting to a proxied server or an upstream. This may be useful if a proxied server behind NGINX is configured to accept connections from particular IP networks or IP address ranges.

    
por 10.05.2016 / 01:12