0 Голосов

Keepalived: высокая доступность для самостоятельных сервисов

Редактировал(а) Сергей Коршунов 2024/10/18 13:09

Keepalived: высокая доступность для самостоятельных сервисов

Мастер настройки Keepalived. Погрузитесь в установку на Ubuntu, протокол VRRP и легко устраняйте распространенные проблемы.Keepalived ha для самостоятельно размещенной домашней лаборатории

Keepalived ha для самостоятельно размещенной домашней лаборатории

Если вы размещаете сервисы самостоятельно в своей домашней лаборатории или используете серверы Linux в производстве, важно обеспечить избыточность для ваших сервисов самостоятельного размещения. Если у вас отключился хост или произошел сбой оборудования, вы можете обеспечить высокую доступность и балансировку нагрузки для ваших сетевых сервисов (они же IP-адреса) с помощью сервиса Keepalived.

Оглавление

Что такое Keepalived?

Keepalived работает, используя VRRP (Virtual Router Redundancy Protocol) для обеспечения высокой доступности и отказоустойчивости для IP-сервисов. Он довольно прост в настройке и позволяет вам предоставлять высокодоступный IP-адрес, который находится «перед» вашими сервисами.

Если текущий «владелец» этого IP-адреса выйдет из строя, вторичный сервер примет на себя этот IP-адрес, и он по-прежнему будет доступен.

В качестве примечания, Keepalived сам по себе не делает ваше приложение избыточным. Вам нужно убедиться, что вы заботитесь о репликации данных и других деталях для вашего приложения, чтобы гарантировать, что ваши серверы в вашей конфигурации Keepalived могут обслуживать приложение.

Дополнительная информация о Keepalived и VRRP

Протокол VRRP обеспечивает доступность виртуального IP на нескольких серверах. В типичных сценариях один сервер назначается главным, удерживая виртуальный IP, а другие остаются в резервном состоянии. Этот главный сервер управляет трафиком и обслуживает клиентские запросы.

В случае возникновения каких-либо проблем в работу вступает один из резервных серверов , который берет на себя управление виртуальным IP-адресом и обеспечивает непрерывность обслуживания.

Балансировка нагрузки

Балансировка нагрузки, по сути, обеспечивает эффективное распределение входящего сетевого трафика по нескольким серверам. Keepalived с его возможностями отказоустойчивости IP без проблем работает с балансировщиками нагрузки. Цель? Гарантировать, что если один сервер выйдет из строя, балансировщик нагрузки быстро перенаправит трафик на другой активный сервер.

Keepalived обеспечивает постоянную активность виртуального IP-адреса, даже если основной сервер выходит из строя, расширяет возможности традиционных балансировщиков нагрузки. Независимо от того, используете ли вы выделенный балансировщик нагрузки или программное решение, интеграция с Keepalived может значительно повысить устойчивость вашей сети.

Установка Keepalived в Ubuntu

Давайте рассмотрим шаги, необходимые для установки Keepalived в Ubuntu, и требуемую конфигурацию .

1. Обновите систему

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

sudo apt-get update && sudo apt-get upgrade -yОбновление сервера Ubuntu с последними патчами

Обновление сервера Ubuntu с последними патчами

2. Установить Keepalived

После обновления системы установите Keepalived с помощью менеджера пакетов apt :

sudo apt install keepalived -y

Вы увидите установку компонентов Keepalived, включая компоненты командного канала ядра netlink.Начинаем установку keepalived

Начало установки

3. Проверьте установку

После завершения установки вы можете проверить версию Keepalived, чтобы убедиться, что она установлена ​​правильно:

keepalived --versionПроверка версии keepalived после установки

Проверка версии после установки

4. Настройте Keepalived

Перед запуском службы Keepalived вам нужно настроить ее конфигурацию в соответствии с вашими потребностями. Основной файл конфигурации keepalived для Keepalived — /etc/keepalived/keepalived.conf .

Вы можете создать или изменить этот файл, используя текстовый редактор по вашему выбору:

sudo nano /etc/keepalived/keepalived.conf

Добавьте желаемые параметры конфигурации. В качестве простой отправной точки вы можете добавить что-то вроде следующего для настроенного аварийного переключения IP, которое устанавливает виртуальный IP-адрес.

Узел 1:

vrrp_instance VI_1 { state MASTER interface ens192 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass myauthpass99 } unicast_peer { 10.1.149.124 } virtual_ipaddress { 10.1.149.125 } }

Далее измените конфигурацию следующего узла.

Узел 2:

vrrp_instance VI_1 { state MASTER interface ens192 virtual_router_id 51 priority 120 advert_int 1 authentication { auth_type PASS auth_pass myauthpass99 } unicast_peer { 10.1.149.123 } virtual_ipaddress { 10.1.149.125 } }

В приведенной выше конфигурации вам потребуется получить имя вашего интерфейса, что можно сделать с помощью команды:

ip aПолучение имени интерфейса в Linux

Получение имени интерфейса в Linux

5. Запустите службу

После настройки Keepalived запустите службу:

sudo systemctl start keepalived

При желании можно запустить Keepalived при загрузке:

sudo systemctl enable keepalivedВключение службы keepalived

Включение услуги

6. Мониторинг обслуживания

Чтобы проверить статус службы Keepalived:

sudo systemctl status keepalivedПолучение статуса службы keepalived

Получение статуса службы keepalived

7. Заключительные шаги

Возможно, вам захочется глубже изучить документацию Keepalived или форумы сообщества для расширенных настроек. Конфигурацию можно настроить для поддержки различных сценариев, включая несколько виртуальных IP-адресов, расширенные проверки работоспособности и т. д.

Вы можете просмотреть их документацию здесь:

Руководство пользователя Keepalived — документация Keepalived 1.2.15

Поиск неисправностей

Keepalived — это надежное решение для высокой доступности, но вы можете столкнуться с проблемами, как и со всем программным обеспечением. Вот некоторые распространенные проблемы и их решения, которые помогут вам более эффективно ориентироваться в Keepalived:

1. Keepalived не запускается

Если Keepalived не запускается, проверьте системные журналы на наличие ошибок :

sudo journalctl -u keepalived

Часто проблема заключается в неправильной настройке файла keepalived.conf . Убедитесь, что нет опечаток или неправильных настроек.

2. Виртуальный IP-адрес не назначен

Если виртуальный IP не назначается:

sudo tcpdump -i eth0 vrrp

Замените eth0 на имя вашего сетевого интерфейса.

3. Переход в резервное состояние не происходит

Если ваш главный сервер вышел из строя, а резервный не взял на себя его функции:

  • Убедитесь, что и главный, и резервный серверы имеют связь. Они должны «видеть» VRRP-объявления друг друга.
  • Проверьте настройки приоритета. Резервный сервер должен иметь более низкий приоритет, чем главный.

4. Ошибки аутентификации

При использовании аутентификации VRRP убедитесь, что:

  • Оба сервера имеют одинаковый тип аутентификации (PASS или AH).
  • Пароли аутентификации совпадают на всех серверах.

5. В журналах отображаются сообщения «Ошибка Netlink»

Это может быть связано с несколькими запущенными экземплярами Keepalived. Убедитесь, что запущен только один экземпляр. Вы можете проверить запущенные процессы с помощью:

pgrep -fa keepalived

6. Высокая загрузка ЦП из-за Keepalived

Высокая загрузка ЦП иногда может быть связана с чрезмерным ведением журнала, особенно если Keepalived настроен на ведение журнала каждой рекламы VRRP. Отрегулируйте уровни детализации журнала в настройках конфигурации или системного регистратора.

7. Проверьте, не выполняются ли скрипты

Если вы настроили Keepalived для запуска скриптов проверки работоспособности:

  • Убедитесь, что скрипт имеет необходимые разрешения для выполнения.
  • Проверьте правильность пути к скрипту в keepalived.conf .
  • Проверьте скрипт вручную, чтобы убедиться, что он работает без ошибок.

8. Экземпляр VRRP переходит в состояние FAULT

Если экземпляр VRRP постоянно переходит в состояние FAULT:

  • Проверьте журналы на наличие связанных записей.
  • Проверьте все сценарии и интерфейсы треков. Если какой-либо из них выйдет из строя или выйдет из строя, экземпляр VRRP перейдет в состояние FAULT.

Настройка для оптимальной производительности

Для новичков может быть достаточно базовой конфигурации. Однако по мере роста сети конфигурации могут стать более подробными при нормальных условиях. Важно понимать конфигурацию, которую можно задать в файле конфигурации по адресу etc/keepalived/keepalived.conf .

Главное и резервное состояния

В конфигурации Keepalived роль сервера, главного или резервного, определяется параметром состояния. Главное состояние означает, что сервер в данный момент удерживает виртуальный IP. Резервное состояние не требует пояснений; эти серверы ждут своего часа, готовые взять на себя управление, если главный выйдет из строя.

Приоритет

Каждому серверу, настроенному с Keepalived, назначается значение приоритета. Сервер с более высоким приоритетом с большей вероятностью будет выбран в качестве главного. В сценариях, где два сервера имеют одинаковый приоритет, другие факторы, такие как IP-адрес, определяют главного.

Самостоятельные сервисы для использования с Keepalived

Итак, теперь, когда у нас есть хорошее понимание Keepalived, как его установить и что он делает, какие самостоятельные сервисы хорошо подходят для использования с Keepalived? Вы определенно можете подумать об использовании Keepalived со следующими предложениями:

  • Pi-Hole, Adguard, Unbound
  • Панели управления Homelab
  • Веб-серверы
  • Используйте Keepalived с HAProxy и Kubernetes

Запуск Keepalived перед вашей домашней лабораторией и самостоятельными сервисами — отличный способ гарантировать их постоянную работоспособность и доступность.

Подведение итогов

Keepalived — это отличное решение, позволяющее убедиться, что ваши IP-адреса, на которых размещены критически важные службы, доступны, даже если один виртуальный или физический сервер выйдет из строя. Keepalived несложно установить, и он быстро принесет преимущества вашей домашней лаборатории. Например, сочетание Keepalived с Pi-Hole позволяет вам иметь высокодоступное решение DNS с собственным хостингом, которое можно использовать с двумя Raspberry Pi или виртуальными машинами, работающими на разных хостах. Возможности безграничны.