Задание:

ii. Установить и настроить Keepalived:

  • 1. Режим работы: Active-Backup;
  • 2. Cloud-HA01: Активный узел (приоритет 100);
  • 3. Cloud-HA02: Резервный узел (приоритет 90);
  • 4. Настроить виртуальный IP (VIP) для отказоустойчивости, используйте первый не занятый IP-адрес из подсети Internal-Net;
  • 5. Настроить аутентификацию между узлами с использованием общего секретного ключа  (в текущей вариации задания VIP — должен просто быть, и корректно переезжать между Активным и Резервным узлом, использовать VIP — для настройки какого-либо иного функционала не требуется).

Вариант реализации:

Cloud-ADM:

  • Вся дальнейшая работа реализуется в контексте директории /home/altlinux/bin/ansible:
cd /home/altlinux/bin/ansible
  • Создадим файл 'keepalive_deploy_playbook.yml', в котором последовательно будем описывать всё что касается настройки серверов Cloud-HA01 и Cloud-HA02 в контексте данного задания:
vim keepalive_deploy_playbook.yml
    • Добавляем следующее содержимое:
      • см. комментарии в коде;
---
- name: Install Keepalive
  hosts: ha
  become: true

  tasks:
    # Установка пакета "keepalived"
    - name: Install Keepalive
      community.general.apt_rpm:
        name: keepalived
        state: present
        update_cache: true

    # Включение функции перессылки пакетов (forwarding)
    - name: Enable IPv4 forwarding
      ansible.posix.sysctl:
        name: net.ipv4.ip_forward
        value: '1'
        sysctl_set: yes
        state: present 
        reload: yes
        ignoreerrors: true 
      failed_when: false

# Настройка Cloud-HA01
- hosts: Cloud-HA01
  become: true

  tasks:
    # Копирование конфигурационного файла "keepalived.conf" из шаблона
    - name: Copy file 'keepalived.conf'
      ansible.builtin.template:
        src: templates/ha01_keepalived.conf.j2
        dest: /etc/keepalived/keepalived.conf
      notify:
        - Restarted Keepalive

    # Включение и добавление в автозагрузку Keepalive
    - name: Started and enabled Keepalive
      ansible.builtin.systemd:
        name: keepalived
        state: started
        enabled: true

  handlers:
    - name: Restarted Keepalive
      ansible.builtin.systemd:
        name: keepalived
        state: restarted

# Настройка Cloud-HA01
- hosts: Cloud-HA02
  become: true

  tasks:
    # Копирование конфигурационного файла "keepalived.conf" из шаблона
    - name: Copy file 'keepalived.conf'
      ansible.builtin.template:
        src: templates/ha02_keepalived.conf.j2
        dest: /etc/keepalived/keepalived.conf
      notify:
        - Restarted Keepalive

    # Включение и добавление в автозагрузку Keepalive
    - name: Started and enabled Keepalive
      ansible.builtin.systemd:
        name: keepalived
        state: started
        enabled: true

  handlers:
    - name: Restarted Keepalive
      ansible.builtin.systemd:
        name: keepalived
        state: restarted
  • В директории templates создаём файл шаблона "ha01_keepalived.conf.j2":
vim templates/ha01_keepalived.conf.j2
    • и указываем следующее содержимое:
global_defs {
  router_id HAProxy_Cluster_Master
}

vrrp_instance VI_1 {
    state MASTER
    interface eth1
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass P@ssw0rd
    }
    virtual_ipaddress {
        192.168.10.7
    }
}
  • В директории templates создаём файл шаблона "ha02_keepalived.conf.j2":
vim templates/ha02_keepalived.conf.j2
    • и указываем следующее содержимое:
global_defs {
  router_id HAProxy_Cluster_Backup
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth1
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass P@ssw0rd
    }
    virtual_ipaddress {
        192.168.10.7
    }
}
  • Запускаем playbook для настройки веб-серверов:
ansible-playbook keepalive_deploy_playbook.yml
    • Результат:

  • Проверить наличие виртуального IP-адреса на Cloud-HA01:

  • Остановить службу keepalived на Cloud-HA01 и проверить наличие виртуального IP на Cloud-HA02:

Последнее изменение: вторник, 24 июня 2025, 13:05