Configuration LoadBalancing avec KeepAlived

Bonjour à tous,

J’ai mis en place un LB avec KeepAlived, pour mes deux serveurs Squid. Tout fonctionne très bien pour cette partie (LoadBalancing avec deux serveurs sur le port 3128), cependant j’aimerais migrer mes fichiers proxy.pac (actuellement sur un autre serveur) sur les serveurs proxies et donc rendre accessible le proxy.pac via l’adresse virtuel du Cluster.

Ip virtuel du cluster : 192.168.21.30
Ip du proxy 1 : 192.168.21.26
Ip du proxy 2 : 192.168.21.27

J’ai tenté avec un TCP_CHECK, avec le digest/sans le digest… Rien à faire le LB pense que le service est down.
L’Apache est bien entendu fonctionnel et écoute sur toutes les interfaces des serveurs port 80.

Voici mon fichier /etc/keepalived/keepalived.conf

virtual_server 192.168.21.30 3128 {
 delay_loop 30
 lb_algo lc
 lb_kind DR
 persistence_timeout 50
 protocol TCP
 real_server 192.168.21.26 3128 {
 #weight 1
  inhibit_on_failure
  TCP_CHECK {
   connect_port 3128
   connect_timeout 3
   nb_get_retry 3
   delay_before_retry 1
  }
 }

 real_server 192.168.21.27 3128 {
 #weight 1
  inhibit_on_failure
  TCP_CHECK {
   connect_port 3128
   connect_timeout 3
   nb_get_retry 3
   delay_before_retry 1
  }
 }
}

virtual_server 192.168.21.30 80 {
 delay_loop 60
 lb_algo lc
 lb_kind DR
 persistence_timeout 50
 protocol TCP
 real_server 191.168.21.26 80 {
  inhibit_on_failure
  HTTP_GET {
   url {
    path /lbcheck.html
    #digest a8385b26c45592552ec45ed7249c2593
    connect_timeout 3
    nb_get_retry 3
    delay_before_retry 1
   }
  }
 }
 real_server 191.168.21.27 80 {
  inhibit_on_failure
  HTTP_GET {
   url {
    path /lbcheck.html
    #digest a8385b26c45592552ec45ed7249c2593
   }
  }
 }
}

Et voici les logs correspondant :

Keepalived_healthcheckers: Initializing ipvs 2.6 Keepalived_healthcheckers: Registering Kernel netlink reflector Keepalived_healthcheckers: Registering Kernel netlink command channel Keepalived_healthcheckers: Opening file '/etc/keepalived/keepalived.conf'. Keepalived_healthcheckers: Configuration is using : 22363 Bytes Keepalived_healthcheckers: Using LinkWatch kernel netlink reflector... Keepalived_healthcheckers: Activating healtchecker for service [192.168.21.26]:3128 Keepalived_healthcheckers: Activating healtchecker for service [192.168.21.27]:3128 Keepalived_healthcheckers: Activating healtchecker for service [191.168.21.26]:80 Keepalived_healthcheckers: Activating healtchecker for service [191.168.21.27]:80 Keepalived_healthcheckers: Error connecting server [191.168.21.26]:80. Keepalived_healthcheckers: Disabling service [191.168.21.26]:80 from VS [192.168.21.3 0]:80 Keepalived_healthcheckers: Error connecting server [191.168.21.27]:80. Keepalived_healthcheckers: Disabling service [191.168.21.27]:80 from VS [192.168.21.3 0]:80 Keepalived_healthcheckers: Lost quorum 1-0=1 > 0 for VS [192.168.21.30]:80

Quelqu’un aurait-il une idée ?

Bonne journée,
Bastichou

Naivement: tu as test avec un nc 192.168.21.26 80 ?

Bonjour,

Non, dig permet de tester la resolution de domaine non ?
J’utilise avec KeepAlived que des IP pour la configuration.

La commande “dig 192.168.21.26 80” lance les commandes “dig 192.168.21.26” et “dig 80”.

Merci

Wups, je pensais à nc
telnet au pire

Bref, toujours naïvement, as-tu tester la connectivité “brute” entre les machines ?

D’acc

Ce qui fonctionne :

  • Acceder à la page 192.168.21.26/lbcheck.html
  • Recuperer cette même page avec Curl
  • Faire un hping3 -p 80

Ce qui ne fonctionne pas :

  • telnet 192.168.21.26 80 : “Connection closed by foreign host.”
  • nc 192.168.21.26 80 : "nc: port number invalid: 80.

Les deux machines sont pourtant dans le même réseau, aucun pare-feu n’est actif entre elles.

“Connection closed by foreign host.”, un truc du genre ceci:

6% [jack:~] 130telnet kinder 6556
Trying 172.16.42.23...
Connected to kinder.
Escape character is '^]'.
Connection closed by foreign host.

Tu n’as pas fait une conf Apache avec une certaine restriction basé sur IP, ou ce genre de truc ?

NB: mon exemple est basé sur du TCP-wrapper non-autorisé, mais j’imagine que tu ne fais pas du TCP-wrapper pour apache …

La configuration d’Apache2 est par défaut, je n’ai rien modifier dessus, peut-être que le soucis viens de là ?.
Mon fichier /etc/apache2/ports est par defaut :

NameVirtualHost *:80
Listen 80

[code]
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
Listen 443

Listen 443 [/code]