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

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

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

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

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 заданы пассивные проверки работоспособности.

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

options:
  ttl: 1

zones:
  wrr.example.com:
    rules:
      - rule: wrr-servers

rules:
  wrr-servers:
    type: round_robin
    weighted: true
    servers:
      - server: www1
      - server: www2

servers:
  www1:
    addresses:
      - 172.22.0.10
    weight: 2

  www2:
    addresses:
      - 172.22.1.10
    weight: 1

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

  • Зона wrr.example.com использует правило wrr-servers (взвешенный round-robin), определенное в блоке rules.

  • Серверы получают нагрузку в соответствии со своими весами (www1 будет использоваться примерно в два раза чаще, чем www2).

Параметры#

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

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

Зоны:

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

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

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

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

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

Правила:

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

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

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

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

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

Серверы:

  • Имя сервера.

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

  • Пассивные проверки работоспособности:

    • healthpeers — путь до API.

    • healthinterval — интервал между проверками; параметр обязателен, если указан параметр healthpeers.

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

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