Я пытаюсь сделать просто все двойное с обратным прокси спереди высокая доступность для главного потокового сервера Icecast (т.е. я не говорю здесь о реле Icecast). Итак, три ВМ:
Мой вопрос - как настроить обратный прокси-сервер для автоматического переключения при отказе в случае отказа одной из виртуальных машин Icecast с минимальным прерыванием работы потокового клиента?
Иллюстрация:
/--- [ local nginx A <-> icecast master A <- mpd A]
-> [nginx reverse proxy] ---<
\--- [ local nginx B <-> icecast master B <- mpd B]
Я сначала попробовал этот простой учебник чтобы настроить обратный прокси-сервер nginx, после чего я мог бы прослушивать поток, открыв виртуальную машину nginx.
upstream backend {
ip_hash; # try to send the same clients to the same servers
server 1.2.3.4;
server 1.2.3.5 max_fails=1 fail_timeout=15s;
}
server {
location / {
proxy_pass http://backend;
}
}
Однако когда я останавливаю службу Icecast на виртуальной машине Icecast, которая является конечной точкой, клиент не переключается на хороший Icecast. Даже после обновления по какой-то причине. Я пробовал экспериментировать с разными ip_hash
, max_fails
, fail_timeout
параметры, различные свойства заголовка ответа, размеры буфера и т. д., которые Другой места упомянутый, но ничего не получилось. Мне кажется, что я ловлю рыбу в темноте, и что должно быть какое-то очевидное решение для потокового переключения при отказе, учитывая количество популярных радиостанций. Есть какие-нибудь советы о том, как лучше всего это настроить, или какие-нибудь хорошие ресурсы? Я хочу 302 редиректа или настоящий прокси-сервер?
Я открыт для предложений на основе HAProxy, если это тоже лучший способ.
Как вы обнаружили, обратное проксирование Icecast - не лучшая идея. Нет никакой реальной пользы, хотя есть несколько недостатков, и у вас все еще есть единственная точка отказа: ваш интерфейс.
Icecast - очень стабильный и надежный сервер, и типичные стратегии, используемые для обслуживания веб-страниц через HTTP, не обязательно применимы к нему.
Ваши усилия, вероятно, лучше потратить на знакомство с Icecast, его конфигурацией и ограничениями. Тем не менее, при правильной настройке Icecast легко заполнит соединение со скоростью 1 Гбит / с и обслужит более 20000 одновременных слушателей. Тесты на самом деле показывают, что он масштабируется намного больше, но могут быть и угловые случаи.
После этого спросите себя: Какую проблему с точки зрения доступности я действительно пытаюсь решить и ответом на проблему, скорее всего, будет не «обратный прокси».