Question IPvsadm n'équilibre pas également sur le planificateur wlc


Pour une raison quelconque, ipvsadm ne semble pas équilibrer de manière égale les connexions entre mes serveurs réels lors de l'utilisation des ordonnanceurs wlc ou lc. Un seul serveur est absolument saturé de requêtes tandis que les autres reçoivent relativement peu de connexions.

Mon fichier ldirectord.cf ressemble à ceci:

quiescent     = yes
autoreload    = yes
checktimeout  = 10
checkinterval = 10

# *.example.com http
virtual = 192.0.2.111:http
    real = 10.10.10.1:http  ipip    10
    real = 10.10.10.2:http  ipip    10
    real = 10.10.10.3:http  ipip    10
    real = 10.10.10.4:http  ipip    10
    real = 10.10.10.5:http  ipip    10
    scheduler = lc
    protocol = tcp
    service = http
    checktype = negotiate
    request = "/lb"
    receive = "Up and running"
    virtualhost = "site.com"
    fallback = 127.0.0.1:http

La chose étrange que je pense peut être à l'origine du problème (mais je ne suis pas vraiment sûr) est que ipvsadm ne semble pas suivre correctement les connexions actives, elles apparaissent toutes comme des connexions inactives.

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn    
TCP  192.0.2.111:http lc
  -> 10.10.10.1:http              Tunnel  10     0          10        
  -> 10.10.10.2:http              Tunnel  10     0          18        
  -> 10.10.10.3:http              Tunnel  10     0          3         
  -> 10.10.10.4:http              Tunnel  10     0          10        
  -> 10.10.10.5:http              Tunnel  10     0          5

Si je fais ipvsadm -Lnc alors je vois beaucoup de connexions mais seulement dans les états ESTABLISHED & FIN_WAIT.

J'utilisais précédemment ldirectord sur un équilibreur de charge basé sur Gentoo et l'activon était précis, car passer à Ubuntu 10.4 LTS semble quelque chose de différent.

# ipvsadm -v
ipvsadm v1.25 2008/5/15 (compiled with popt and IPVS v1.2.1)

Ainsi, ipvsadm ne surveille-t-il pas correctement les connexions actives et ne fait-il donc pas fonctionner correctement l'équilibrage de charge? Si tel est le cas, comment puis-je le faire fonctionner correctement à nouveau?

Modifier: Cela devient plus étrange, si je cat /proc/net/ip_vs alors il semble que les activeconns correctes sont là:

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP  C000026F:0050 rr 
  -> 0AB42453:0050      Tunnel  10     1          24        
  -> 0AB4321D:0050      Tunnel  10     0          23        
  -> 0AB426B2:0050      Tunnel  10     2          25        
  -> 0AB4244C:0050      Tunnel  10     2          22        
  -> 0AB42024:0050      Tunnel  10     2          23

5
2017-12-21 15:58


origine




Réponses:


Avec lc (moins de connexion) si tous les serveurs ont le même nombre de connexions, une nouvelle connexion sera toujours établie avec le premier serveur de la liste. Cela peut signifier que si vous utilisez très peu, et seulement une connexion de temps en temps, cette connexion ira toujours au premier hôte de la liste.


1
2018-02-04 03:50





Mon préféré est wrr (round robin pondéré). Ai-je raison de supposer que vous utilisez l'approche DR (routage direct)?

Dans ce cas, ipvsadm ne voit pas la connexion en tant que telle, car la réponse du RS (serveur réel) ira directement au client - et non au LB.


0
2018-04-05 20:32



Avec le routage direct, vous pouvez également vous connecter à l’équilibreur de charge au serveur réel, mais en raison d’une erreur de routage ou de filtrage arp, vous ne pouvez pas vous connecter à certains des serveurs réels lors de l’utilisation du VIP de l’extérieur du réseau. Les vrais serveurs peuvent être listés comme "up" et recevoir du trafic mais ne sont pas capables de le gérer de telle sorte que les vrais serveurs qui sont travaillant obtiennent plus de travail que prévu. - mtinberg


À en juger par votre nombre de connexions, ce n’est probablement pas un problème pour vous, mais vous risquez d’obtenir une distribution inégale avec le moins de connexions possible si l’un des serveurs réels répond plus lentement que les autres, il recevra alors moins de nouvelles connexions à la fois que les autres, il empile les connexions plus rapidement.


0
2018-04-08 23:41





Les sorties de commande de David indiquent qu'il utilise le mode tunnel (IPIP), qui est généralement configuré comme une variante de DR. Nous aurions besoin de voir des tables de routage ou des diagrammes pour mieux comprendre sa configuration.

Mais je conviens que le suivi de la connexion dans LVS est probablement confus car il ne voit pas les paquets TCP FIN.

ipvsadm a certains paramètres pour expirer plus rapidement les connexions expirées. Par exemple, la commande suivante va expirer les connexions inactives après 1 heure:

/sbin/ipvsadm --set 3600 120 300

La source des clients doit être vérifiée deux fois. Le comportement par défaut pour LVS consiste à établir des connexions persistantes par IP client. Ainsi, si les tests de contrainte avec wget ou ab proviennent du même IP client, toutes les connexions seront envoyées au même serveur réel.

Haproxy est un équilibreur de charge plus intelligent, mais il doit être placé dans le chemin de retour des paquets afin de fonctionner de manière totalement transparente.


0
2018-04-20 05:56



"Le comportement par défaut de LVS consiste à établir des connexions persistantes par IP client" - non, sauf si vous activez la sh planificateur. Votre mention de haproxy dans ce contexte est également sans importance. - womble♦
@womble, je reste corrigé - le comportement par défaut pour IPVS est NE PAS être persistant. haproxy est pertinent; il est spécialement conçu pour l'équilibrage de charge HTTP et ne nécessite pas de configuration de tunneling spéciale; Pourquoi utiliser une solution L4 générique si vous souhaitez mieux contrôler l'équilibrage de la charge afin d'optimiser les performances HTTP? - Wim Kerkhoff
La question était Plus précisément poser des questions sur une aberration dans le fonctionnement d'un logiciel particulier, qui ne dépasse pas ses capacités. Par conséquent, la mention d'un autre logiciel est sans importance. - womble♦