Soru HAProxy sunucunun sunucusu yok


CentOS 7'de node.js arka uçlarıyla çok basit bir HTTP yük dengeleyicisi kurmaya çalışıyorum. Arka uçların tümü HTTP sunucularıdır.

80 numaralı bağlantı noktasını dinleyecek arka bağlantıyı ve bağlantı noktası 80'i dinleyecek ve arka uçta 80 numaralı bağlantı noktasını kullanacak olan HAProxy'yi ayarladıysam, her şey gayet iyi çalışır. Yapılandırma dosyası böyle bir yapılandırmada şöyle görünür:

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

Ancak, tüm bağlantı noktalarını 8124 olarak değiştirirseniz, HAProxy başlangıçta aşağıdaki hatayı gösterir:

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

Yeni konfigürasyon böyle görünüyor

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

Kesinlikle arka uç node.js programı artık 8124 numaralı bağlantı noktasında dinleniyor.

Güvenlik duvarı arka uçta 8124 bağlantı noktası ve aşağıdaki komut için açıktır:

wget http://10.0.4.51:8124/action

Yük dengeleyicisinin, yük dengeleyicisinin arka uca gerçekten erişebileceğini gösteren mükemmel bir şekilde çalışır.

Bu koşullar altında, HAProxy başlangıçta başarısız oldu çünkü 8124 numaralı bağlantı noktasını göremiyorum. LISTEN kullandigim zaman netstat -an.

Bu HAProxy kullanıyorum ilk kez, bu yüzden gerçekten önemsiz bir şey eksik olabilir.

Kontrol etmem gereken başka bir şey var mı?


6
2017-10-05 06:50


Menşei




Cevaplar:


Sadece anladım.

Sorun, HAProxy'nin yapılandırmasında değil, SELinux'ta etkinleştirilmiş ve CentOS 7'de varsayılan olarak zorlama moduna ayarlanmış durumda. SELinux'un varsayılan yapılandırması, yalnızca bağlantı noktası 80'de HAProxy'ye izin veriyor gibi görünüyor.

SELinux'un izin verme moduna ayarlanması, tamamen devre dışı bırakılması veya SELinux'un HAProxy'nin diğer portları kullanmasına izin vermesi sorunu çözmüştür.

Portu kullanarak HAProxy'ye izin vermek için semanage'ı kullanabilirsiniz:

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

3
2017-10-05 07:32



Aynı problemi çözüp görmediğimi kontrol etmek için neler kontrol edebilirim? Günlükte aynı hatayı aldım ama sorunun nedenini nasıl kontrol edeceğim? - realtebo