Centos 7 - Servidor Virtual Linux com funcionamento contínuo não está funcionando

3

Ambiente:

Centos 7

Keepalived

Máquina I

enp0s3 - > 192.168.1.38 (conecta-se ao mundo exterior) en0s8 - > 192.168.100.101 (conecta-se à rede interna)

Máquina II

enp0s3 - > 192.168.100.102 gw padrão - > 192.168.100.101

Máquina II

enp0s3 - > 192.168.100.103 gw padrão - > 192.168.100.101

Eu segui o tutorial aqui passo a passo. E enquanto todos nos comentários dizem que funciona lindamente para eles, eu não consigo que o demonio keepalived escute seu arquivo de configuração. É uma configuração muito simples. Tudo que eu quero fazer é:

  1. Máquina que atua como servidor virtual para o mundo externo, conectando-se a dois servidores reais (Máquina II e Máquina III).
  2. Máquina Vou primeiro tentar servir o serviço da Máquina II, se a Máquina II cair, nada deve acontecer, os clientes não devem notar, e a Máquina I deve imediatamente começar a servir o serviço da Máquina III.

O ponto 2) deve ser feito com o Keepalived, mas ele simplesmente não funcionará. Aqui está o arquivo de configuração de /etc/keepalived/keepalived.conf

global_defs{ 
   notification_email{ 
        [email protected] 
   } 
   notification_email_from [email protected] 
   smtp_server 193.145.147.51 
   smtp_connect_timeout 30 
   lvs_id LVS_MAIN 
} 

vrrp_instance VI_1 {
     interface enp0s3
     state MASTER
     virtual_router_id 51
     priority 150
     advert_int 1

    virtual_ipaddress {
            192.168.100.105/24 dev enp0s8
    }
}


virtual_server 192.168.100.105 80 { !This would hosted in Machine I enp0s8
       delay_loop 3 
       lb_algo wrr 
       lb_kind NAT
       nat_mask 255.255.255.0
       protocol TCP 

      real_server 192.168.100.102 8000 { !Machine II
           weight 1 
           TCP_CHECK { 
                 connect_timeout 3
            connect_port 8000
           } 
      } 

     real_server 192.168.100.103 8000 { !Machine III 
           weight 1 
                        TCP_CHECK { 
                 connect_timeout 3
            connect_port 8000
           } 
     } 
 }

Quando executo o keepalived e faço sudo ip addr show enp0s8 , posso ver que keepalived deu à interface o endereço IP virtual 192.168.100.105 , mas quando vou ao navegador da Máquina I e coloco como URL o ip addrss 192.168.100.105 nada é devolvido, apenas a conexão de timeout. Mas se eu colocar 192.168.100.102:8000 ou 192.168.100.103:8000 eu sou saudado com meu serviço web.

O que eu poderia estar errado com o keepalived?

Agradeço qualquer ajuda.

    
por Chayemor 20.11.2014 / 12:09

1 resposta

0

no meu caso, eu uso o LVS-DR. Se você estiver usando o LVS-DR

Com base no link

LVS-DR, LVS-Tun: the default gw cannot be the director - use some local router.

Altere o endereço virtual para

virtual_ipaddress {
        192.168.100.105 dev enp0s8
}

Altere o gateway padrão nos seus servidores reais para o roteador NOT Director.

Alterar

lb_kind NAT 

para

lb_kind DR

Além disso, você precisa adicionar regras iptables no servidor real.

link

No servidor real 192.168.100.102 e 192.168.100.103

iptables -t nat -A PREROUTING -p <tcp|udp> -d <vip> --dport <port> -j REDIRECT

Neste caso, torne-se:

iptables -t nat -A PREROUTING -p tcp -d 192.168.100.105 --dport 8000 -j REDIRECT
    
por 01.12.2014 / 19:18