Настройка конфигурации#
Для высокоуровневой маршрутизации реализована DNS-балансировка с помощью GSLB.
GSLB-сервис осуществляет балансировку серверов методом round-robin. В фоновом режиме проводят проверки работоспособности, заданные в конфигурации. Серверы могут быть временно удалены из пула балансировки в случае, если не прошли проверку. При балансировке также учитываются данные по времени ответа сервера, полученные во время проверок работоспособности.
Файлы конфигурации модуля GSLB лежат по путям
В этом примере зоны Параметр Для зон Особенности: Для каждой зоны требуется указать хотя бы одно правило Если серверы для зоны не указаны, то будут взяты серверы из соответствующего правила. Если серверы для зоны указаны, то они имеют приоритет и будут использоваться вместо тех, которые заданы в правиле. Для Правило тип: серверы для в Задает состав группы серверов: для можно указывать как серверы, так и другие группы. Задает конфигурацию серверов, используемых для балансировки нагрузки: имя сервера; IP-адрес (адрес, на который будут направляться запросы при балансировке, можно указать несколько адресов списком); активные проверки работоспособности сервера (подробнее см. ниже): Для включения проверок работоспособности сервера необходимо указать следующие параметры: Если хотя бы один апстрим проходит проверку, то сервер считается рабочим.
При непрохождении проверки сервер будет удален из пула балансировки до успешного прохождения проверки./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
healthpeers
healthinterval
healthtimeout
Проверки работоспособности#
healthpeers
— путь до Angie ADC API.healthinterval
— интервал между проверками; рекомендуемые значения от 5s
до 10m
в зависимости от ваших задач; параметр обязателен, если указан параметр healthpeers
.healthtimeout
— таймаут на каждую проверку; рекомендуемые значения от 1s
до 1m
в зависимости от ваших задач; параметр обязателен, если указан параметр healthpeers
.