Как настроить автоматический отказоустойчивый обратный прокси-сервер для двух идентичных главных серверов 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 одновременных слушателей. Тесты на самом деле показывают, что он значительно выше этого уровня, но могут быть и серьезные случаи.

После этого спросите себя: какую проблему с точки зрения доступности я действительно пытаюсь решить, и ответом на проблему, скорее всего, не будет "обратный прокси".

Другие вопросы по тегам