Мне нужен сервер / коммутатор / что-то (которое я буду называть «аварийным коммутатором») для выполнения следующей задачи.
HTTP
серверы за переключателем аварийного переключения. server 1
.HTTP
запросы своевременно), все запросы направляются в server 2
.server 1
восстановлен (начинает отвечать на HTTP
запросы своевременно), все запросы направляются обратно в server 1
.Эта вещь должна быть максимально простой и тупой.
Как это правильно называть и что было бы примером такой вещи?
Обновить:
В идеале в нем не должно быть движущихся частей (например, HDD
или вентилятор). Поэтому предпочтительнее специализированное аппаратное решение.
Обновление 2:
Эта штука должна быть переключателем, а не балансиром. Он должен переключаться в зависимости от HTTP
доступность сервера, не ARP
или ICMP
.
То, что вам нужно, обычно называется балансировщиком нагрузки. Балансировщики нагрузки могут иметь форму устройства, F5 Большой IP коробки, например, или в виде приложения балансировки нагрузки, работающего на стандартном оборудовании. Одним из примеров этого является HAProxy, который по совпадению, в настоящее время выполняет балансировку нагрузки для всех сайтов StackExchange.
Здесь есть несколько решений с открытым исходным кодом, которые помогут.
Первый, который я бы посмотрел, будет PFSENSE
pfSense будет работать практически на любом оборудовании, а также в vps. система позволит выполнять балансировку нагрузки, кластеризацию, а также множество других сервисов
pf использует идею "карпового" метода для балансировки нагрузки и отработки отказа - очень проста в настройке.
Если вам не нужна балансировка нагрузки, все, что вам нужно, - это простое решение отказоустойчивой кластеризации, которое отправляет контрольные сигналы между членами кластера и назначает владение виртуальным IP-адресом, который вы будете использовать для доступа к службе. Их там десятки.
В Windows де-факто ответом является Microsoft Clustering Services (MSCS), который включен в редакции Enterprise и Datacenter. В Linux / Unix вы, вероятно, захотите изучить Heartbeat (простой, но не супер-настраиваемый), Pacemaker (надежный, но немного более сложный) или другую аналогичную систему.
Другой способ добиться этого - на Omni-коммутаторах Alcatel-Lucent есть функция под названием Server Load Balancing. Это будет делать именно то, что вы ищете, но вместо того, чтобы делать это на уровне IP, оно делает это на уровне MAC-адресов.
То, что вы собираетесь делать, не обязательно просто реализовать и требует некоторого мониторинга / обслуживания.
Я не знаю ничего, кроме балансировщика как аппаратного решения. Вероятно, вам нужно будет взглянуть на кластеризацию, что означает выполнение формы ограждения и пульса, чтобы серверы контролировали друг друга.
Если возможно, вы, вероятно, захотите использовать общее хранилище с интерфейсами веб-сервера.
Тем не менее, если вы используете Linux, вы, вероятно, захотите использовать Linux с высокой доступностью в Google, который укажет вам на ресурсы по настройке программного обеспечения Heartbeat, которое отслеживает службы на серверах, и если один из них выходит из строя, он вызывает другой сервер, чтобы над. После того, как другой сервер снова заработает, вы можете передать запросы на обслуживание обратно на основной сервер.
Я сказал, что это непросто, потому что у вас может возникнуть ситуация с расщеплением мозга. Убедитесь, что вы используете это в Google и планируете соответственно.
Вам также понадобится оборудование, настроенное для связи друг с другом по выделенному высокоскоростному соединению между серверами, и вам нужно будет поддерживать какое-то общее хранилище, чтобы вам не нужно было синхронизировать файлы.
Поэтому, если вы не хотите идти по пути балансировщика, вам придется потратить некоторое время и усилия на запуск кластера. Я мало что знаю о кластеризации Windows, но если это то, что вы используете, у вас будут некоторые опции, встроенные в более сложные версии Windows для служб кластеризации; Я думаю, что это в редакциях Enterprise и Data Center. Для получения дополнительных сведений посетите сайт маркетинговых дронов Microsoft.
Удачи!
Я использую фунт (http://www.apsis.ch/pound) в Linux для этого. Вы можете легко установить его в небольшой корпус в стиле бытового прибора. Со своего сайта:
ЧТО ТАКОЕ ФУНТ:
Его преимущества включают в себя действительно крошечные сжатые файлы конфигурации, а также небольшой объем кода и системы. Вы можете установить, запустить и проверить его менее чем за 10 минут.
Обычно такие вещи выполняются с помощью балансировщика нагрузки в более крупной среде, поскольку устройства LB имеют тенденцию быть относительно стабильными и не склонными к падению. Для конкретного сценария, который вы рассматриваете, вы просто установите для одного значение «100%», а для другого - «0%» нагрузки, при этом второй будет действовать, если первый уйдет.
Если вы ищете программное решение, это будет зависеть от того, какую ОС вы используете. В свое время я построил решение на базе Ultramonkey и Zebra (теперь, я полагаю, это часть пакета HA-Linux), но я выполнял переключение между Лондоном и Пало-Альто, поэтому мне также понадобился компонент маршрутизации.