Мне нужна помощь, чтобы осознать это, возможно, я совершенно неправильно это понял и пошел неправильным путем. Возможно ли перенаправить входящие потоки RTMP через HAProxy на принимающий сервер? Как в - вместо доступа к доступному потоку RTMP на сервере за HAProxy, но отправьте поток RTMP через него на указанный сервер.
Я настроил сервер, который будет находиться на общедоступном IP-адресе и получать потоки реального времени RTMP, которые отправляются на него, и другой сервер, который находится в сети с ограниченным доступом, изолированной от прямого доступа из общедоступной сети (оба сервера видят друг друга поверх VPN). Все, что связано с потоковой передачей RTMP, работает нормально - я могу отправить поток RTMP обоим (конечно, при подключении к одной сети), но я не могу настроить HAProxy для пересылки моих потоков RTMP с общедоступного сервера на сервер, который изолирован от общедоступной сети. Я попытался временно отключить брандмауэры, чтобы убедиться, что проблема не в этом.
Серверы, используемые для приема потоков RTMP, - это NGINX, конфигурация HAProxy, которую я пробовал использовать, прежде чем отказаться от этой идеи, выглядит следующим образом:
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 1024
daemon
stats socket /var/lib/haproxy/stats
defaults
log global
option tcplog
option dontlognull
retries 6
timeout queue 1m
timeout connect 15s
timeout client 1m
timeout server 30s
timeout check 10s
maxconn 256
listen rtmp-1935
bind :1935
mode tcp
balance roundrobin
server stream01 10.100.10.80:2000
server stream02 10.100.10.80:2000
Краткое объяснение конфигурации - идея заключалась в том, чтобы поток RTMP приходил на общедоступный сервер через TCP-порт 1935, а затем перенаправлялся через HAProxy на другой сервер, который прослушивает потоки RTMP на TCP-порту 2000. Результат Конфигурация выше заключалась в том, что HAProxy будет принимать поток, но затем ничего не пересылать.
Вот журнал:
Apr 30 19:26:30 localhost haproxy[15972]: Proxy admin started.
Apr 30 19:27:58 localhost haproxy[15973]: 10.100.10.60:19398 [30/Apr/2018:19:27:58.164] admin admin/<STATS> 0/0/5 14887 LR 1/1/0/0/0 0/0
Apr 30 19:27:58 localhost haproxy[15973]: 10.100.10.60:19398 [30/Apr/2018:19:27:58.170] admin admin/<STATS> 0/0/361 14949 LR 1/1/0/0/0 0/0
Apr 30 19:27:58 localhost haproxy[15973]: 10.100.10.60:19398 [30/Apr/2018:19:27:58.531] admin admin/<NOSRV> -1/-1/288 212 SC 0/0/0/0/0 0/0
Apr 30 19:33:52 localhost haproxy[15973]: 10.100.10.60:19423 [30/Apr/2018:19:33:52.795] admin admin/<STATS> 0/0/6 15001 LR 1/1/0/0/0 0/0
Apr 30 19:33:53 localhost haproxy[15973]: 10.100.10.60:19423 [30/Apr/2018:19:33:52.801] admin admin/<NOSRV> -1/-1/333 212 SC 0/0/0/0/0 0/0
Apr 30 19:34:09 localhost haproxy[16211]: Proxy rtmp-1935 started.
Apr 30 19:34:09 localhost haproxy[16211]: Proxy admin started.
Apr 30 19:34:11 localhost haproxy[16212]: 10.100.10.60:19425 [30/Apr/2018:19:34:11.965] admin admin/<STATS> 0/0/7 14817 LR 1/1/0/0/0 0/0
Apr 30 19:34:12 localhost haproxy[16212]: 10.100.10.60:19425 [30/Apr/2018:19:34:11.973] admin admin/<NOSRV> -1/-1/355 212 SC 0/0/0/0/0 0/0
Я уже отказался от этой идеи и вернулся к простой отправке потоков RTMP, я решил оставить это здесь из любопытства, чтобы посмотреть, можно ли это сделать. Я не жду ответа.
Я вернулся и изучил это. Возникли проблемы, когда HAProxy не мог подключиться к удаленному серверу. Этот опубликованный ответ решил мою проблему: Отказано в разрешении на проверку работоспособности Haproxy. Оказывается, я не настраивал свой SE Linux для разрешения исходящих соединений HA Proxy (что странно, потому что я могу поклясться, что у меня был SE Linux и все брандмауэры ненадолго отключены, когда я тестировал его в последний раз, и он все еще не удался).
Это должно было работать нормально. Я сделал это.
Согласно вашим журналам, ваш состояние сеанса при отключении является SC
.
S
: сеанс TCP был неожиданно прерван сервером или сервер явно отказался от него.
C
: прокси ожидал установления ПОДКЛЮЧЕНИЯ на сервере. В лучшем случае сервер мог заметить попытку подключения.
Все указывает на то, что ваш внутренний сервер вообще не принимает TCP-соединения через порт 2000. Тестирование подключения от HAProxy с telnet или nc должно было вернуть Connection refused
.