我有一个 HAProxy 设置,其中后端服务器正在运行 Web 服务器非标准端口。配置如下
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
tune.ssl.default-dh-param 2048
user haproxy
group haproxy
daemon
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
ssl-default-bind-options no-sslv3
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
ssl-default-server-options no-sslv3
ssl-default-server-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
tune.ssl.default-dh-param 2048
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
stats enable
stats auth someuser:somepassword
stats uri /hpstats
option forwardfor except 127.0.0.0/8
option http-server-close
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
frontend http-in
bind *:80
bind *:443 ssl crt /etc/ssl/certs/test.pem no-sslv3
#define hosts
acl host_demo hdr(host) -i testing.domain.com
#usage rules
use_backend demo if host_demo
default_backend demo
backend demo
server demo 192.168.XX.XX:4873 check verify none
使用此设置时,HAProxy 总是会出现以下错误。
Message from syslogd@localhost at Nov 2 12:31:58 ...
haproxy[24266]: backend demo has no server available!
当我将后端服务器更改为端口时80
,4873
一切正常
backend demo
server demo 192.168.XX.XX:80 check verify none
我在两台机器上运行 Centos 7。我尝试在两台机器上启用http_t_port
使用semanage
,但没有任何效果。只有当我将4873
服务器上的端口从更改为80
或443
时,HAProxy 负载平衡才起作用,它才停止抱怨。
有人能指出这是为什么吗?我该如何解决它,以便我可以在非标准端口上运行 HTTP?考虑到我正在使用 SELinux,我很确定我缺少某些设置。
答案1
@andthereitgoes
看起来该服务没有监听端口 4873 或者被源或目标处的 iptables 阻止。