Estoy intentando configurar haproxy por primera vez y me ha dado muchos problemas. En este momento, cuando llamo al archivo haproxy en la carpeta /etc/init.d para iniciarlo, aparece lo siguiente:
$ ./haproxy start
Starting haproxy: [FAILED]
Confirmé que el chef instaló haproxy:
$ haproxy -v
HA-Proxy version 1.5.18 2016/05/10
Copyright 2000-2016 Willy Tarreau <[email protected]>
Para investigar más a fondo, utilicé los siguientes comandos:
$ haproxy -c -f /etc/haproxy/haproxy.cfg
[WARNING] 023/190620 (24869) : parsing [/etc/haproxy/haproxy.cfg:19] : 'option httplog' not usable with frontend 'https' (needs 'mode http'). Falling back to 'option tcplog'.
Configuration file is valid
$ ha proxy -db -f /etc/haproxy/haproxy.cfg
[WARNING] 023/190810 (25554) : parsing [/etc/haproxy/haproxy.cfg:19] : 'option httplog' not usable with frontend 'https' (needs 'mode http'). Falling back to 'option tcplog'.
[WARNING] 023/190810 (25554) : Server servers-http/test001.company.org is DOWN, reason: Layer4 connection problem, info: "Connection refused", check duration: 0ms. 0 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
[ALERT] 023/190810 (25554) : backend 'servers-http' has no server available!
[WARNING] 023/190811 (25554) : Server servers-https/test001.company.org is DOWN, reason: Layer4 connection problem, info: "Connection refused", check duration: 0ms. 0 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
[ALERT] 023/190811 (25554) : backend 'servers-https' has no server available!
No estoy seguro de cómo el servidor no puede estar disponible, ya que ese servidor es el mismo servidor en el que se implementa haproxy; Es el host local, solo tengo el nombre real del servidor en el archivo de configuración. Ese archivo es el siguiente:
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn 4096
#debug
#quiet
user root
group root
defaults
log global
mode http
retries 3
timeout client 50s
timeout connect 5s
timeout server 50s
option dontlognull
option httplog
option redispatch
balance roundrobin
# Set up application listeners here.
listen admin
bind 127.0.0.1:22002
mode http
stats uri /
frontend http
maxconn 2000
bind 0.0.0.0:4000
default_backend servers-http
frontend https
mode tcp
maxconn 2000
bind 0.0.0.0:4001
default_backend servers-https
backend servers-http
server test001.company.com <IP address here>:4002 weight 1 maxconn 100 check
backend servers-https
mode tcp
server test001.company.com <IP address here>:4003 weight 1 maxconn 100 check
option ssl-hello-chk
También solía netstat -nlp
asegurarme de que cada puerto no tuviera nada ejecutándose en él. No estoy seguro de qué más puedo comprobar.
EDITAR:
Abrí otra terminal solo para verificar y confirmé que HAProxy se está iniciando y ejecutando en los puertos 4000 y 4001. Sin embargo, los puertos backend no se pueden usar. También confirmé que nada usa estos puertos, usando netstat -nlp | grep 4002
y netstat -nlp | grep 4003
. También intenté usar 127.0.0.1 como dirección IP en lugar de la dirección IP real, pero sigo recibiendo el mismo error.
Respuesta1
Usando 127.0.0.1 como "dirección IP aquí" en su configuración.
Necesita algo escuchando en los puertos 4002 y 4003.
# netstat -nlp | grep 4002
tcp 0 0 0.0.0.0:4002 0.0.0.0:* LISTEN 1564/python
Por ejemplo, usando el servidor HTTP básico de Python:
# python -m SimpleHTTPServer 4002
Serving HTTP on 0.0.0.0 port 4002 ...
127.0.0.1 - - [27/Jan/2020 22:55:34] "GET / HTTP/1.1" 200 -
Puedes ver la solicitud desde:
$ wget 127.0.0.1:4000
--2020-01-27 22:55:34-- http://127.0.0.1:4000/
Connecting to 127.0.0.1:4000... connected.
HTTP request sent, awaiting response... 200 OK
Length: 354 [text/html]
Saving to: 'index.html'
index.html 100%[=========================================>] 354 --.-KB/s in 0s
2020-01-27 22:55:34 (12.3 MB/s) - 'index.html' saved [354/354]