hetzner_failover

Статус сборки Ansible Galaxy GitHub тег (последний по дате) Загрузки из Ansible Galaxy

Ansible Роль: Резервирование Hetzner с использованием vSwitch и keepalived

Это Ansible роль, вдохновленная статьей о резервировании Hetzner от @dtone. Она предназначена для развертывания высокодоступной конфигурации из 2 серверов, которые используют один IP, применяя hetzner vSwitch и keepalived. Эту роль следует использовать вместе с ролью nl2go vSwitch для настройки vSwitch. Необходимо заказать дополнительную подсеть IP с публичными IP адресами для настроенного vSwitch. Эта роль НЕ использует услугу резервирования IP, предоставляемую Hetzner.

Предварительные требования

Конфигурация

Следующие фрагменты конфигурации показывают настройку vSwitch с именем failover с vlan id 4023, используя приватные адреса из подсети 192.168.100.0/24 и IP 154.222.4.34 из дополнительной подсети IP 154.222.4.32/29 как резервный IP. Дополнительную подсеть необходимо заказать вручную после создания vSwitch с помощью роли vSwitch.

Конфигурация vSwitch

Конфигурация vSwitch в соответствии с ролью vSwitch:

hetzner_vswitch_instances:
- name: failover
    vlan: 4023
    ipv4_address: 192.168.200.0
    ipv4_netmask: 255.255.255.0

Конфигурация keepalived

hetzner_failover_keepalived_public_virtual_router_id: 42

hetzner_failover_keepalived_public_ipaddress: 154.222.4.34 # один IP из дополнительной подсети IP, используемый как резервный IP
hetzner_failover_keepalived_public_network_prefix: 29 # префикс маски подсети для дополнительной подсети IP
hetzner_failover_keepalived_public_default_gateway: 154.222.4.33 # IP шлюза дополнительной подсети IP

hetzner_failover_keepalived_vswich_id: 4023 # должен совпадать с vlan id, настроенным в hetzner_vswitch_instances

Конфигурация хостов

all:
  hosts:
    keepalived-test-1:
      ansible_host: 123.124.125.1 # основной IP хоста 1
      hetzner_vswitch_host:
        - name: failover
          ipv4_address: 192.168.200.1 # vSwitch IP хоста 1
      hetzner_failover_keepalived_state: MASTER
      hetzner_failover_keepalived_vswitch_ip: 192.168.200.1 # IP хоста в VLAN vSwitch должен быть повторен здесь
      hetzner_failover_keepalived_peer_ip: 192.168.200.2 # vSwitch IP, с которым необходимо взаимодействовать
    keepalived-test-2:
      ansible_host: 123.124.125.2 # основной IP хоста 2
      hetzner_vswitch_host:
        - name: failover
          ipv4_address: 192.168.200.2 # vSwitch IP хоста 2
      hetzner_failover_keepalived_state: BACKUP
      hetzner_failover_keepalived_vswitch_ip: 192.168.200.2 # IP хоста в VLAN vSwitch должен быть повторен здесь
      hetzner_failover_keepalived_peer_ip: 192.168.200.1 # vSwitch IP, с которым необходимо взаимодействовать

Сценарий уведомления

Можно использовать пользовательский сценарий уведомления для выполнения дополнительных действий после переключения на резервирование.

hetzner_failover_keepalived_notify_script: /usr/local/bin/keepalived_notify.sh

Чтобы запустить пользовательский сценарий уведомления, укажите путь к скрипту в переменной hetzner_failover_keepalived_notify_script.

hetzner_failover_keepalived_notify_script_master:
  - service foo reload

Чтобы выполнить дополнительные действия при переходе экземпляра в состояние мастер, не перезаписывая весь сценарий уведомления, используйте переменную hetzner_failover_keepalived_notify_script_master.

hetzner_failover_keepalived_notify_script_backup:
  - service foo reload

Чтобы выполнить дополнительные действия при переходе экземпляра в состояние резервного, не перезаписывая весь сценарий уведомления, используйте переменную hetzner_failover_keepalived_notify_script_backup.

Зависимости

Пример плейбука

- hosts: all
  roles:
    - nl2go.hetzner_vswitch
    - nl2go.hetzner_failover

Разработка

Используйте docker-molecule, следуя инструкциям для запуска Molecule или установите Molecule локально (не рекомендуется, могут возникнуть конфликты версий).

Предоставьте токен Hetzner Cloud:

export HCLOUD_TOKEN=123abc456efg

Используйте следующее для запуска тестов:

molecule test --all

Поддержка

Лицензия

Смотрите файл LICENSE.md для получения деталей.

Информация об авторе

Эта роль была создана в 2020 году компанией Newsletter2Go GmbH.

О проекте

Setup automatic IP failover using hetzner vSwitch and keepalived

Установить
ansible-galaxy install nl2go/ansible-role-hetzner-failover
Лицензия
mit
Загрузки
5071
Владелец