Настройка BGP

Эта инструкция описывает настройку поддержки протокола BGP в продукте KeyStack.

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

  • Поддержка протокола BGP со стороны опорной сетевой инфраструктуры (underlay) заказчика.

  • Наличие выделенного для региона номера автономной системы. Это может быть частный номер автономной системы (private AS number).

  • Выделены новые IP-адреса для имён, указанных в файле globals.d/REGION.yml в переменных kolla_internal_fqdn и kolla_external_fqdn, которые будут использоваться для маршрутизации с помощью BGP.

  • Известны IP-адреса соседей BGP и пароль для BGP-аутентификации.

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

При переходе инфраструктуры на использование протокола BGP будет меняться сетевая конфигурация. В связи с этим также поменяются внешний и внутренний VIP-адреса региона. Запланируйте обновление DNS-записей для внутреннего и внешнего VIP-адресов облака. Смену значений доменных имен необходимо будет произвести после подготовки новой конфигурации.

Для поддержки протокола BGP в KeyStack используется сервис Bird. Для конфигурации сервиса Bird выполните перечисленные шаги:

  1. Добавьте пароль для подключения к автономной системе в хранилище секретов:

    1. Подготовьте пароль для подключения к автономной системе через сервис Bird.

    2. Откройте веб-интерфейс сервиса Vault.

    3. Перейдите в директорию secret_v2 / deployments / <FQDN сервиса GitLab> / <имя региона> / passwords_yml.

    4. В секции Current version нажмите Create new.

    5. Добавьте в JSON-файл параметр bird_external_bgp_password со значением вашего пароля на подключение к автономной системе через сервис Bird.

  2. Внесите изменения в конфигурацию региона:

    1. Откройте веб-интерфейс GitLab.

    2. Перейдите в репозиторий региона project_k > deployments > <имя региона>.

    3. Откройте файл globals.d/REGION.yml и обновите значения переменных kolla_external_vip_address и kolla_internal_vip_address на IP-адреса, соответствующие новой конфигурации, использующей BGP.

  3. Добавьте конфигурацию BGP в конфигурацию региона:

    1. Откройте веб-интерфейс GitLab.

    2. Перейдите в репозиторий региона project_k > deployments > <имя региона>.

    3. Создайте файл globals.d/bgp.yml со следующей конфигурацией:

      ##bgp options
      enable_keepalived: "no"
      enable_bird: "yes"
      enable_exabgp: "yes"
      internal_BGP: "65001"
      external_BGP: "65002"
      external_BGP_IP:
        - 10.224.57.4
        - 10.224.56.4
      external_BGP_password: "{{ bird_external_bgp_password }}"
      announce_networks:
        - "{{ kolla_external_vip_address }}/32"
        - "{{ kolla_internal_vip_address }}/32"
      

      В этом примере:

      • enable_keepalived: "no" — выключение keepalived, поскольку он не будет использоваться при включении BGP;

      • enable_bird: "yes" — включение сервиса Bird;

      • enable_exabgp: "yes" — включение сервиса exabgp;

      • announce_networks — указываются VIP-адреса для сервисов (internal_vip, external_vip), с указанием длины префикса, равной /32;

      • external_BGP_IP — список IP-адресов eBGP-соседей;

      • internal_BGP: "65452" — номер внутренней автономной системы;

      • external_BGP: "65453" — номер внешней автономной системы.

Отключение сервисов DRS и HA

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

Для выключения DRS:

  1. Зайдите в веб-интерфейс Портала администратора.

  2. Перейдите в раздел DRS > Jobs.

  3. Выключите все задачи DRS.

Для выключения HA:

  1. Зайдите на каждый Control-узел по SSH и выполните команду:

    # systemctl stop kolla-consul-container.service
    

Обновление записей DNS

Выполните запланированные изменения в DNS:

  1. Обновите адрес записи внутреннего VIP-интерфейса региона.

  2. Обновите адрес записи внешнего VIP-интерфейса региона.

  3. Дождитесь обновления данных на DNS-сервере, используемом узлами региона. При обращении на доменные имена, указанные в файле globals.d/REGION.yml в переменных kolla_internal_fqdn и kolla_external_fqdn, должны использоваться новые IP-адреса. Обновление DNS-записей может занимать продолжительное время. Приступать к дальнейшим работам можно только после обновления DNS-кешей..

Развёртывание изменений на регионе

  1. Ранее используемый в облаке сервис keepalived необходимо остановить и удалить на всех Controller-узлах. Для этого выполните команды:

    # systemctl stop kolla-…keepalived
    # systemctl disable kolla-…keepalived
    # docker rm –force keepalived
    
  2. Откройте веб-интерфейс GitLab.

  3. Перейдите в репозиторий региона project_k > deployments > <имя региона>.

  4. Создайте новый пайплайн: Build > Pipelines > Run Pipeline.

  5. В открывшемся окне добавьте значение переменной KOLLA_ARGS равное -t bird,exabgp,haproxy.

  6. Запустите пайплайн, нажав кнопку Run pipeline.

  7. Дождитесь завершения задач на этапе setup.

  8. Запустите задачу deploy на этапе deploy и дождитесь её завершения.

Проверка конфигурации BGP

Для проверки корректности работы BGP, выполните следующие действия на каждом Control-узле:

  1. Выполните команду:

    docker exec -ti bird birdc show protocols -s /var/lib/kolla/bird/bird.sock
    

    Убедитесь, что протокол BGP запущен и находится в состоянии Established.

  2. Выполните команду:

    docker exec -ti bird birdc show route -s /var/lib/kolla/bird/bird.sock
    

    Убедитесь, что нужные маршруты были добавлены в таблицу маршрутизации протоколом BGP.

  3. Выполните команду:

    docker exec -ti bird birdc show bfd sessions -s /var/lib/kolla/bird/bird.sock
    

    Убедитесь, что все сконфигурированные BFD-сессии находятся в ожидаемом состоянии.

Включение сервисов DRS и HA

Для включения DRS:

  1. Зайдите в веб-интерфейс Портала администратора.

  2. Перейдите в раздел DRS > Jobs.

  3. Включите задачи DRS, которые были выключены перед применением новой конфигурации.

Для включения HA:

  1. Зайдите на каждый Control-узел по SSH и выполните команду:

    # systemctl start kolla-consul-container.service