Выравнивание нагрузки RTMP через HAProxy

У меня есть немного проблемы для решения:

Я должен найти способ загрузить баланс, мудрый пропускной способностью, поступление потоки RTMP на моих серверах.

У меня есть 2 сервера RTMP (nginx-rtmp), давайте назовем их S1 и S2.

Серверы RTMP слушают на порте 1936 года с HAProxy на той же машине как S1 к балансу загрузки потоки, и по состоянию на момент это работает хорошо, за исключением того, что это использует пропускную способность на ОБОИХ серверах.

С текущей конфигурацией клиент отправляет поток RTMP, HAProxy на S1 получает ее и выбирает S2 в качестве сервера получения и наконец перенаправляет поток к ней. Так, для потока на 1 Мбит/с S1 использует 1Mbbs для получения потока и 1 Мбит/с для передачи его второму серверу, который также использует 1 Мбит/с на S2.

Вот конфигурация HAProxy:

global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        #user haproxy
        #group haproxy
        daemon

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        contimeout 5000
        clitimeout 50000
        srvtimeout 50000
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http

frontend ft_rtpm
 bind :1935
 mode tcp
 maxconn 400
 default_backend bk_rtmp

backend bk_rtmp
 mode tcp
 server media01 127.0.0.1:1936 check maxconn 200 weight 1
 server media02 ip.address.of.S2:1936 check maxconn 200 weight 1

Я должен найти способ передать запросы непосредственно серверу, который подсистема балансировки нагрузки выбрала, не используя пропускную способность подсистемы балансировки нагрузки.

Я знаю, что это назвало HAProxy, но я надеялся, что это будет возможно, поэтому между тем я также искал о других решениях как циклический алгоритм DNS, Передача любому из узлов, записи SRV DNS (которые являются большими, только если они использовались...), но это не кажется столь же эффективным как HAProxy (никакие веса, проверки состояния, макс. соединения...), как это очень близко к конечному результату, поскольку существует "только" проблема пропускной способности.

0
задан 1 July 2015 в 03:12
1 ответ

То, что вы ищете, называется 'Прямое возвращение сервера', или DSR для краткости.

Вы не можете делать DSR с помощью HAProxy, но LVS или другие балансировщики нагрузки уровня 4 могут делать это. Если вы просто делали 4 уровень, то HAPproxy все равно может быть немного перегружен

.
1
ответ дан 4 December 2019 в 16:53

Теги

Похожие вопросы