Плавающий IP – публичный статический IP-адрес, который можно присвоить одному из ваших серверов. Плавающие IP-адреса быстро переназначать (обычно с помощью панели управления или API) – передавать между машинами в одном датацентре. Эта функция мгновенного переопределения даёт возможность проектировать и создавать инфраструктуру серверов высокой доступности (HA), не имеющую единой точки отказа, путем добавления избыточности к точке входа или шлюзу.
Для достижения максимально высокой доступности требуется избыточность на каждом уровне инфраструктуры, в том числе и на серверах приложений и баз данных, что часто бывает трудно реализовать. Однако это позволяет значительно сократить время простоя.
Плавающий IP не заменяет оригинальный публичный IP-адрес сервера, он останется без изменений. Плавающий IP – это дополнительный статический IP-адрес, с помощью которого можно получить доступ к серверу, к которому он в настоящее время прикреплён.
В данной статье охвачены следующие темы:
- Базовая настройка высокой доступности.
- Метаданные плавающих IP-адресов.
- Реализация высокой доступности.
- Другие варианты использования плавающих IP-адресов.
Базовая настройка высокой доступности.
Чтобы понять, как работает простейшая настройка высокой доступности, рассмотрим следующий пример.
Базовая настройка сервера с высокой доступностью состоит из плавающего IP-адреса, который привязан к группе балансировщиков нагрузки (нужно 2 балансировщика минимум). Плавающий IP-адрес действует как уровень шлюза, с помощью которого пользователи могут взаимодействовать с веб-серверами.
Пользователь
↓
Плавающий IP-адрес
________________| :...................
↓ ↓
Балансировщик 1 Балансировщик 2
(активный) (пассивный)
| |
↓ ↓
Сервер приложения 1 Сервер приложения 2
| |
↓ ↓
Сервер баз данных 1 Сервер баз данных 2
↑ ↑
|__________________________|
Репликация
- Активный сервер — сервер, получающий пользовательский трафик, который перенаправляется с плавающего IP. Как правило, это балансировщик нагрузки, который перенаправляет трафик на серверы приложений.
- Пассивный сервер – резервный сервер (обычно с такой же конфигурацией, как на активном сервере). Он будет получать трафик только во время отказа активного сервера (то есть если активный сервер становится недоступным, плавающий IP переназначается резервному серверу).
- Плавающий IP-адрес – это IP-адрес, который прикреплён к одному из серверов и может быть переназначен в случае сбоя активного сервера.
Важно отметить, что сами по себе плавающие IP-адреса не обеспечивают высокую доступность автоматически. Чтобы установка считалась высокодоступной, нужно разработать и внедрить механизм отказоустойчивости, который автоматизирует процесс обнаружения сбоев активного сервера и переназначает плавающий IP-адрес пассивному серверу.
При разумном подходе описанная выше настройка позволяет обеспечить доступность приложения, даже если один из балансировщиков выходит из строя.
Метаданные плавающих IP-адресов
Сервер узнаёт о наличии плавающего IP-адреса с помощью своих метаданных. Если вы присвоили серверу плавающий IP-адрес, сервер может извлечь его. Эта информация может пригодиться при настройке высокой доступности.
Любые метаданные обычно можно извлечь с помощью команды curl.
Чтобы узнать, назначен ли серверу плавающий IP-адрес, выполните следующую команду:
curl -s http://169.254.169.254/metadata/v1/floating_ip/ipv4/active
Если у сервера есть плавающий IP, вы можете извлечь его:
curl -s http://169.254.169.254/metadata/v1/floating_ip/ipv4/ip_address
Реализация высокой доступности
Теперь вы знаете, как работают плавающие IP-адреса, и можете приступать к разработке собственной высокодоступной инфраструктуры.
Ниже вы найдёте список полезных инструментов и приложений, которые помогут собрать инфраструктуру с высокой доступностью:
- Corosync и Pacemaker предоставляют программное обеспечение, с помощью которого можно создать кластер с высокой доступностью. Corosync отвечает за уровень передачи сообщений, благодаря которому серверы могут взаимодействовать и работать как кластер. Pacemaker предоставляет возможность контролировать поведение кластера. Вы можете использовать Corosync и Pacemaker с плавающими IP для настройки активного и пассивного сервера.
- Keepalived – сервис, который позволяет контролировать серверы и процессы для обеспечения высокой доступности инфраструктуры. Демон keepalived может мониторить веб-серверы и автоматически передавать трафик второму серверу, если первый сервер не отвечает.
- Heartbeat – инструмент кластеризации, который можно использовать с плавающими IP-адресами для реализации базовой настройки активного/пассивного сервера и обеспечения высокой доступности. Инструмент довольно просто настроить, но он не всегда рекомендуется к использованию на этапе производства.
Другие варианты использования плавающих IP-адресов
Еще один вариант реализации плавающих IP-адресов – это blue/green deployment.
Blue/green deployment – это стратегия развертывания программного обеспечения, которая основана на двух идентичных производственных конфигурациях, которые чередуются (одна находится в активной фазе, а вторая – в пассивной). Одна среда называется blue, а дублирующая среда – green. Две среды, blue и green, могут обрабатывать всю производственную нагрузку и использоваться поочередно, а не как основное и дополнительное пространство. Если одна среда является активной, то другая находится в режиме ожидания (такую среду можно использовать для тестирования).