Как настроить автоматический отказоустойчивый обратный прокси-сервер для двух идентичных главных серверов Icecast?
Я пытаюсь сделать все просто дважды с помощью обратного прокси-сервера в передней высокой доступности для главного потокового сервера Icecast (то есть я не говорю о реле Icecast здесь). Итак, три виртуальные машины:
- 2 идентичные автономные виртуальные машины Icecast (каждая с локальным музыкальным источником MPD и локальным интерфейсом nginx для правильных заголовков)
- один балансировщик нагрузки / обратный прокси-сервер nginx VM.
Мой вопрос - как мне настроить обратный прокси-сервер для автоматического переключения при сбое в случае сбоя одной из виртуальных машин 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, если это тоже лучший путь.
1 ответ
Как вы обнаружили, обратное проксирование Icecast не очень хорошая идея. Нет никакой реальной выгоды, хотя есть несколько недостатков, и у вас все еще есть единственная точка отказа: ваш интерфейс.
Icecast является очень стабильным и надежным сервером, и типичные стратегии, используемые для обслуживания веб-страниц по HTTP, не обязательно применяются к нему.
Ваши усилия, вероятно, будут лучше потрачены на знакомство с Icecast, его конфигурацией и ограничениями. Тем не менее, если должным образом настроенный Icecast будет легко насыщать соединение со скоростью 1 Гбит / с и обслуживать более 20000 одновременных слушателей. Тесты на самом деле показывают, что он значительно выше этого уровня, но могут быть и серьезные случаи.
После этого спросите себя: какую проблему с точки зрения доступности я действительно пытаюсь решить, и ответом на проблему, скорее всего, не будет "обратный прокси".