.. _bgp-setup-configuration: ============= Настройка 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 выполните перечисленные шаги: #. Добавьте пароль для подключения к автономной системе в хранилище секретов: #. Подготовьте пароль для подключения к автономной системе через сервис Bird. #. Откройте веб-интерфейс сервиса Vault. #. Перейдите в директорию **secret_v2 / deployments / / <имя региона> / passwords_yml**. #. В секции **Current version** нажмите :guilabel:`Create new`. #. Добавьте в JSON-файл параметр ``bird_external_bgp_password`` со значением вашего пароля на подключение к автономной системе через сервис Bird. #. Внесите изменения в конфигурацию региона: #. Откройте веб-интерфейс GitLab. #. Перейдите в репозиторий региона :menuselection:`project_k > deployments > <имя региона>`. #. Откройте файл ``globals.d/REGION.yml`` и обновите значения переменных ``kolla_external_vip_address`` и ``kolla_internal_vip_address`` на IP-адреса, соответствующие новой конфигурации, использующей BGP. #. Добавьте конфигурацию BGP в конфигурацию региона: #. Откройте веб-интерфейс GitLab. #. Перейдите в репозиторий региона :menuselection:`project_k > deployments > <имя региона>`. #. Создайте файл ``globals.d/bgp.yml`` со следующей конфигурацией: .. code-block:: yaml ##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: #. Зайдите в веб-интерфейс Портала администратора. #. Перейдите в раздел :menuselection:`DRS > Jobs`. #. Выключите все задачи DRS. Для выключения HA: #. Зайдите на каждый Control-узел по SSH и выполните команду:: # systemctl stop kolla-consul-container.service Обновление записей DNS ====================== Выполните запланированные изменения в DNS: #. Обновите адрес записи внутреннего VIP-интерфейса региона. #. Обновите адрес записи внешнего VIP-интерфейса региона. #. Дождитесь обновления данных на DNS-сервере, используемом узлами региона. При обращении на доменные имена, указанные в файле ``globals.d/REGION.yml`` в переменных ``kolla_internal_fqdn`` и ``kolla_external_fqdn``, должны использоваться новые IP-адреса. Обновление DNS-записей может занимать продолжительное время. Приступать к дальнейшим работам можно только после обновления DNS-кешей.. Развёртывание изменений на регионе ================================== #. Ранее используемый в облаке сервис **keepalived** необходимо остановить и удалить на всех Controller-узлах. Для этого выполните команды:: # systemctl stop kolla-…keepalived # systemctl disable kolla-…keepalived # docker rm –force keepalived #. Откройте веб-интерфейс GitLab. #. Перейдите в репозиторий региона :menuselection:`project_k > deployments > <имя региона>`. #. Создайте новый пайплайн: :menuselection:`Build > Pipelines > Run Pipeline`. #. В открывшемся окне добавьте значение переменной ``KOLLA_ARGS`` равное ``-t bird,exabgp,haproxy``. #. Запустите пайплайн, нажав кнопку :guilabel:`Run pipeline`. #. Дождитесь завершения задач на этапе **setup**. #. Запустите задачу **deploy** на этапе **deploy** и дождитесь её завершения. Проверка конфигурации BGP ========================= Для проверки корректности работы BGP, выполните следующие действия на каждом Control-узле: #. Выполните команду: .. code-block:: docker exec -ti bird birdc show protocols -s /var/lib/kolla/bird/bird.sock Убедитесь, что протокол BGP запущен и находится в состоянии ``Established``. #. Выполните команду: .. code-block:: docker exec -ti bird birdc show route -s /var/lib/kolla/bird/bird.sock Убедитесь, что нужные маршруты были добавлены в таблицу маршрутизации протоколом BGP. #. Выполните команду: .. code-block:: docker exec -ti bird birdc show bfd sessions -s /var/lib/kolla/bird/bird.sock Убедитесь, что все сконфигурированные BFD-сессии находятся в ожидаемом состоянии. Включение сервисов DRS и HA =========================== Для включения DRS: #. Зайдите в веб-интерфейс Портала администратора. #. Перейдите в раздел :menuselection:`DRS > Jobs`. #. Включите задачи DRS, которые были выключены перед применением новой конфигурации. Для включения HA: #. Зайдите на каждый Control-узел по SSH и выполните команду:: # systemctl start kolla-consul-container.service