HAProxy 沒有可用的伺服器

HAProxy 沒有可用的伺服器

我正在嘗試在 CentOS 7 中使用 node.js 後端設定一個非常簡單的 HTTP 負載平衡器。

如果我將後端設定為偵聽連接埠 80,則將 HAProxy 設定為偵聽連接埠 80 並在後端使用連接埠 80,則一切正常。這是設定檔在此類配置中的外觀:

global
    log         127.0.0.1 local2 info
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     256
    user        haproxy
    group       haproxy
    daemon

defaults
    mode               http
    log                global
    option             httplog
    timeout connect    10s
    timeout client     30s
    timeout server     30s

frontend http-in
    bind               :80
    default_backend    backend_servers
    option             forwardfor

backend backend_servers
    balance            roundrobin
    server             backend1 10.0.4.51:80 check
#    server             backend2 10.0.4.52:80 check
#    server             backend3 10.0.4.53:80 check
#    server             backend4 10.0.4.54:80 check
#    server             backend5 10.0.4.55:80 check
#    server             backend6 10.0.4.56:80 check

但是,如果我將所有連接埠更改為 8124,HAProxy 在啟動時會顯示以下錯誤:

haproxy[3324]: backend backend_servers has no server available!

這就是新配置的樣子

global
    log         127.0.0.1 local2 info
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     256
    user        haproxy
    group       haproxy
    daemon

defaults
    mode               http
    log                global
    option             httplog
    timeout connect    10s
    timeout client     30s
    timeout server     30s

frontend http-in
    bind               :8124
    default_backend    backend_servers
    option             forwardfor

backend backend_servers
    balance            roundrobin
    server             backend1 10.0.4.51:8124 check
#    server             backend2 10.0.4.52:8124 check
#    server             backend3 10.0.4.53:8124 check
#    server             backend4 10.0.4.54:8124 check
#    server             backend5 10.0.4.55:8124 check
#    server             backend6 10.0.4.56:8124 check

當然,後端node.js程式現在正在監聽連接埠8124。

防火牆在後端開放8124端口,命令如下:

wget http://10.0.4.51:8124/action

從負載平衡器上可以完美運行,這表示負載平衡器確實可以存取後端。

在這種情況下,HAProxy似乎無法啟動,因為我在LISTEN使用時的狀態下看不到連接埠8124 netstat -an

這是我第一次使用 HAProxy,所以我可能會遺漏一些非常微不足道的東西。

還有什麼我應該檢查的嗎?

答案1

我剛剛想通了。

問題不在於 HAProxy 的配置,而是 SELinux,它在 CentOS 7 上預設啟用並設定為強制模式。

將 SELinux 設定為寬容模式,完全停用它,或讓 SELinux 允許 HAProxy 使用其他連接埠解決了問題。

您可以使用 semanage 允許 HAProxy 使用該連接埠:

sudo semanage port -a -p tcp -t http_port_t 8124

相關內容