L'exécution de haproxy par systemctl est différente de l'exécution manuelle. .
- sur le démarrage manuel, tout fonctionne.
- en démarrant par systemctl, haproxy n'est pas capable de trouver le service qu'il proxie, et répond avec un 503.
Voici la sortie quand on démarre avec systemctl :
> sudo systemctl status -l haproxy.service
haproxy.service - HAProxy Load Balancer
Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled)
Active: active (running) since Wed 2014-12-24 08:08:49 EST; 4min 59s ago
Main PID: 20307 (haproxy)
CGroup: /system.slice/haproxy.service
20307 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
Dec 24 08:08:49 localhost.localdomain systemd[1]: Starting HAProxy Load Balancer...
Dec 24 08:08:49 localhost.localdomain systemd[1]: Started HAProxy Load Balancer.
Comme ceci, haproxy dit juste 503 pour mon backend.
Si j'arrête maintenant le service haproxy et que je le lance manuellement sur la ligne de commande, comme suit :
sudo /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
il se connecte bien à mon serveur.
J'ai installé haproxy via yum, et j'utilise une configuration extrêmement simple :
# defaults above
frontend main *:80
default_backend app
backend app
option httpclose
option forwardfor
server web1 127.0.0.1:8001
Une idée de ce que pourrait être la différence ? J'ai essayé de l'exécuter avec ou sans démon.
Voici le journal lorsqu'il est exécuté avec systemctl :
Proxy app started.
127.0.0.1:44391 [24/Dec/2014:09:01:42.403] main app/web1 0/0/-1/-1/0 503 212 - - SC-- 0/0/0/0/3 0/0 "GET / HTTP/1.1"
Voici le journal de l'exécution manuelle :
Proxy app started.
127.0.0.1:44393 [24/Dec/2014:09:02:11.758] main app/web1 0/0/0/2/2 200 5699 - - ---- 1/1/0/0/0 0/0 "GET / HTTP/1.1"
Pour être clair, je peux effectuer avec succès un curl 127.0.0.1:8001 à la fois en tant qu'utilisateur de mon déploiement, avec sudo, et en tant qu'utilisateur de haproxy.
Modifier avec plus d'informations
J'ai essayé d'utiliser nginx comme proxy à la place, sans succès. Ce n'est donc pas haproxy qui est en cause ici. nginx dit 502 Bad Gateway
et le journal dit :
2014/12/24 16:57:04 [crit] 23214#0: *1 connect() to 127.0.0.1:8001 failed (13: Permission denied) while connecting to upstream, client: 192.168.34.1, server: www.zombieclj.local, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8001/", host: "www.zombieclj.local"
Donc oui, il y a un truc de sécurité qui se passe. Je suis toujours capable de me connecter à 127.0.0.1:8001. Arrêter le pare-feu ne change rien.