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

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

GSLB настраивается на том же виртуальном сервере Angie ADC, что и балансировщик нагрузки. Файлы конфигурации модуля GSLB находятся по пути /etc/angie-adc-gslb/Corefile и /etc/angie-adc-gslb/gslbd.yaml.

Пример конфигурации#

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 — путь до Angie ADC API.

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

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

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