Я пытаюсь настроить haproxy в первый раз, и это доставляет мне массу хлопот. Сейчас, когда я вызываю файл haproxy в папке /etc/init.d, чтобы запустить его, я получаю следующее:
$ ./haproxy start
Starting haproxy: [FAILED]
Я подтвердил, что chef установил haproxy:
$ haproxy -v
HA-Proxy version 1.5.18 2016/05/10
Copyright 2000-2016 Willy Tarreau <[email protected]>
Для дальнейшего исследования я использовал следующие команды:
$ 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!
Я не уверен, как сервер не может быть доступен, так как этот сервер - тот же сервер, на котором развернут haproxy; это localhost, у меня просто есть фактическое имя сервера в файле конфигурации. Этот файл выглядит следующим образом:
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
Я также использовал, netstat -nlp
чтобы убедиться, что на каждом порту ничего не запущено. Я не уверен, что еще я могу проверить.
РЕДАКТИРОВАТЬ:
Я открыл другой терминал, чтобы просто проверить, и подтвердил, что HAProxy запускается и работает на портах 4000 и 4001. Однако внутренние порты использовать нельзя. Я также подтвердил, что эти порты никто не использует, используя netstat -nlp | grep 4002
и netstat -nlp | grep 4003
. Я также пробовал использовать 127.0.0.1 в качестве IP-адреса вместо фактического IP-адреса, но продолжаю получать ту же ошибку.
решение1
Используйте 127.0.0.1 в качестве «IP-адреса здесь» в вашей конфигурации.
Вам нужно что-то, прослушивающее порты 4002 и 4003.
# netstat -nlp | grep 4002
tcp 0 0 0.0.0.0:4002 0.0.0.0:* LISTEN 1564/python
Например, используя базовый HTTP-сервер 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 -
Вы можете увидеть запрос от:
$ 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]