sudo apt install haproxy
chỉnh sửa file sudo nano /etc/haproxy/haproxy.cfg
global
log /dev/log local0 info # Ghi log chi tiết hơn (info)
log /dev/log local1 notice
chroot /var/lib/haproxy
user haproxy
group haproxy
daemon
maxconn 2000
# Đảm bảo rằng logging đã được bật
defaults
log global
mode tcp
option tcplog # Đảm bảo rằng tcplog được bật để ghi log TCP
option dontlognull
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
retries 3
tạo file all_rtmp.cfg
sudo nano all_rtmp.cfg
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
user haproxy
group haproxy
daemon
maxconn 2000
tune.ssl.default-dh-param 2048
defaults
log global
mode tcp
option tcplog
option dontlognull
timeout connect 3s
timeout client 1m
timeout server 1m
retries 3
frontend rtmp_frontend
mode tcp
bind *:4334
default_backend rtmp_backend
backend rtmp_backend
mode tcp
balance leastconn
option tcp-check
default-server inter 1000 rise 1 fall 1 on-marked-down shutdown-sessions
server rtmp_sv04 27.74.246.165:1960 check agent-check agent-port 9001
server rtmp_vps 160.30.113.13:1935 check backup agent-check agent-port 9002
server rtmp_sv01 192.168.14.165:1955 check backup agent-check agent-port 9003
server rtmp_sv02 192.168.14.169:1965 check backup agent-check agent-port 9004
server rtmp_gdock 192.168.14.137:1935 check backup agent-check agent-port 9005
listen stats
bind *:7447
mode http
stats enable
stats uri /haproxy?stats
stats refresh 10s
stats auth admin:admin
sudo haproxy -f all_rtmp.cfg
tạo file nano check_ping_rtmp_haproxy (dành cho ubuntu)
#!/bin/bash
# HAProxy agent-check đơn giản bằng Bash + socat
# Phản hồi "up" nếu ping < THRESHOLD ms, ngược lại "down"
PORT=9004
TARGET_IP="8.8.8.8"
THRESHOLD=200
echo "HAProxy agent-check đang chạy ở cổng $PORT ..."
while true; do
socat -T1 -u TCP-LISTEN:$PORT,reuseaddr,fork SYSTEM:'
START=$(date +%s%3N)
ping -c1 -W1 '"$TARGET_IP"' >/dev/null 2>&1
if [ $? -eq 0 ]; then
END=$(date +%s%3N)
LATENCY=$((END - START))
else
LATENCY=9999
fi
if [ $LATENCY -gt '"$THRESHOLD"' ]; then
echo "down"
else
echo "up"
fi
'
done
----------------------------------------
sudo apt update
sudo apt install socat -y
tạo file nano check_ping_rtmp_haproxy (dành cho openwrt)
#!/bin/sh
# HAProxy agent-check cho OpenWrt (không cần bash, hoạt động với BusyBox)
# Phản hồi "up" nếu ping < THRESHOLD ms, ngược lại "down"
PORT=9005
TARGET_IP="8.8.8.8"
THRESHOLD=200
echo "HAProxy agent-check đang chạy ở cổng $PORT ..."
while true; do
socat -T1 -u TCP-LISTEN:$PORT,reuseaddr,fork SYSTEM:"
PING_OUT=\$(ping -c1 -W1 $TARGET_IP 2>/dev/null | grep 'time=' | awk -F'time=' '{print \$2}' | awk '{print \$1}')
if [ -z \"\$PING_OUT\" ]; then
LATENCY=9999
else
LATENCY=\${PING_OUT%.*} # loại bỏ phần thập phân
fi
if [ \"\$LATENCY\" -gt $THRESHOLD ]; then
echo down
else
echo up
fi
"
done
lệnh chạy haproxy
sudo systemctl start haproxy
sudo systemctl enable haproxy
sudo systemctl status haproxy
sudo systemctl restart haproxy
chạy lại cấu hình all_rtmp.cfg
sudo haproxy -f /etc/haproxy.cfg -sf $(pidof haproxy)
sudo haproxy -f all_rtmp.cfg
sudo systemctl restart haproxy
đăng nhập web
http://192.168.14.169:7447/haproxy?stats