Proxy

HAProxy 報告 servers-http 和 servers-https 已關閉。不啟動

  • January 27, 2020

我第一次嘗試設置haproxy,這給我帶來了很多麻煩。現在,當我呼叫 /etc/init.d 文件夾中的 haproxy 文件來啟動它時,我得到以下資訊:

$ ./haproxy start
 Starting haproxy:           [FAILED]

我已經確認廚師安裝了 haproxy:

$ haproxy -v
 HA-Proxy version 1.5.18 2016/05/10
 Copyright 2000-2016 Willy Tarreau <willy@haproxy.org>

為了進一步調查,我使用了以下命令:

$ 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!

我不確定伺服器如何不可用,因為該伺服器是部署到同一伺服器的伺服器;它的本地主機,我只是在配置文件中有實際的伺服器名稱。該文件如下:

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 4002and netstat -nlp | grep 4003。我也嘗試使用 127.0.0.1 作為 IP 地址而不是實際的 IP 地址,但仍然出現相同的錯誤。

在您的配置中使用 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

例如,使用 python 基本 HTTP 伺服器:

# 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]

引用自:https://serverfault.com/questions/1000295