Настройка конфигурации GSLB#

Для высокоуровневой маршрутизации реализована DNS-балансировка с помощью GSLB.

GSLB-сервис осуществляет балансировку серверов методом round-robin. В фоновом режиме проводят проверки работоспособности, заданные в конфигурации. Серверы могут быть временно удалены из пула балансировки в случае, если не прошли проверку. При балансировке также учитываются данные по времени ответа сервера, полученные во время проверок работоспособности.

Файлы конфигурации модуля GSLB лежат по путям /etc/angie-adc-gslb/Corefile и /etc/angie-adc-gslb/gslbd.yaml.

Пример конфигурации GSLB-модуля#

options:
  ttl: 1

zones:
  www.example.org: # wildcard zone *.example.org
#    hostname: www.example.org # for wildcard zone checks
    rules:
      - rule: rr
        servers:
          - group: www

  test.example.com:
    rules:
      - rule: rr
        servers:
          - server: www5

rules:
  rr:
    type: round_robin
    servers:
      - server: www1
      - server: www2

groups:
  www:
    servers:
      - server: www3
      - server: www4

servers:
  www1:
    addresses:
      - 172.22.0.10
#    healthpeers: "http://172.22.0.10/api/http/upstreams/examplecom/peers"
#    healthinterval: 10s
#    healthtimeout: 2s

  www2:
    addresses:
      - 172.22.1.10
#    healthpeers: "http://172.22.1.10/api/http/upstreams/examplecom/peers"
#    healthinterval: 15s
#    healthtimeout: 3s

  www3:
    addresses:
      - 172.22.0.10
#    healthpeers: "http://172.22.0.10/api/http/upstreams/exampleorg/peers"
#    healthinterval: 10s
#    healthtimeout: 2s

  www4:
    addresses:
      - 172.22.1.10
#    healthpeers: "http://172.22.1.10/api/http/upstreams/exampleorg/peers"
#    healthinterval: 15s
#    healthtimeout: 3s

  www5:
    addresses:
      - 172.22.0.10

В этом примере зоны www.example.org и test.example.com используют правило rr (round-robin), определенное в блоке rules. Если один из серверов, заданных в servers, станет недоступным, запросы автоматически перераспределятся на оставшиеся доступные серверы. Для серверов www1, www2, www3 и www4 заданы проверки работоспособности.

Глобальные параметры#

options:
    ttl: 1

Параметр ttl задает значение TTL (Time to Live) для DNS-записей — как часто должны обновляться записи, что позволяет оценить доступность серверов. Значение 1 означает, что клиенты и кэширующие DNS-серверы должны обновлять записи каждую секунду.

Настройки зон#

zones:
    www.example.org:
    rules:
       - rule: rr
         servers:
           - group: www

    test.example.com:
    rules:
       - rule: rr
         servers:
           - server: www5

Для зон www.example.org и test.example.com используются правила, определенные в блоке rules.

Особенности:

  • Для каждой зоны требуется указать хотя бы одно правило rule.

  • Если серверы для зоны не указаны, то будут взяты серверы из соответствующего правила.

  • Если серверы для зоны указаны, то они имеют приоритет и будут использоваться вместо тех, которые заданы в правиле.

  • Для rule, group, server можно задавать произвольные имена.

Правила распределения нагрузки#

rules:
  rr:
    type: round_robin
    servers:
      - server: www1
      - server: www2

Правило rr:

  • тип: round_robin (круговое распределение);

  • серверы www1 и www2 принимают запросы по очереди без учета их веса;

  • для rule можно задать произвольное имя;

  • в servers можно указывать как серверы, так и группы серверов.

Группы серверов#

groups:
  www:
    servers:
      - server: www3
      - server: www4

Задает состав группы серверов:

  • для group можно задать произвольное имя;

  • можно указывать как серверы, так и другие группы.

Конфигурация серверов#

servers:
  www1:
    addresses:
      - 172.22.0.10
#    healthpeers: "http://172.22.0.10/api/http/upstreams/examplecom/peers"
#    healthinterval: 10s
#    healthtimeout: 2s

  www2:
    addresses:
      - 172.22.1.10
#    healthpeers: "http://172.22.1.10/api/http/upstreams/examplecom/peers"
#    healthinterval: 15s
#    healthtimeout: 3s

  www3:
    addresses:
      - 172.22.0.10
#    healthpeers: "http://172.22.0.10/api/http/upstreams/exampleorg/peers"
#    healthinterval: 10s
#    healthtimeout: 2s

  www4:
    addresses:
      - 172.22.1.10
#    healthpeers: "http://172.22.1.10/api/http/upstreams/exampleorg/peers"
#    healthinterval: 15s
#    healthtimeout: 3s

  www5:
    addresses:
      - 172.22.0.10

Задает конфигурацию серверов, используемых для балансировки нагрузки:

  • имя сервера;

  • IP-адрес (адрес, на который будут направляться запросы при балансировке, можно указать несколько адресов списком);

  • активные проверки работоспособности сервера (подробнее см. ниже):

    • healthpeers

    • healthinterval

    • healthtimeout

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

Для включения проверок работоспособности сервера необходимо указать следующие параметры:

  • healthpeers — путь до Angie ADC API.

  • healthinterval — интервал между проверками; рекомендуемые значения от 5s до 10m в зависимости от ваших задач; параметр обязателен, если указан параметр healthpeers.

  • healthtimeout — таймаут на каждую проверку; рекомендуемые значения от 1s до 1m в зависимости от ваших задач; параметр обязателен, если указан параметр healthpeers.

Если хотя бы один апстрим проходит проверку, то сервер считается рабочим. При непрохождении проверки сервер будет удален из пула балансировки до успешного прохождения проверки.