Методы балансировки#
Алгоритмы балансировки#
Алгоритм | Описание |
|---|---|
| Запросы распределяются на первый сервер, отвечающий критериям, заданным в правиле. Используется по умолчанию. |
| Запросы распределяются по серверам последовательно. |
Взвешенный | Запросы распределяются по серверам
c учетом весов серверов ( |
Далее будут поддерживаться и другие методы балансировки. Подробное описание параметров конфигурации GSLB см. в статье Параметры конфигурации.
Проверки работоспособности#
Модуль GSLB получает данные о состоянии апстрим-серверов от локального балансировщика нагрузки Angie ADC. Предварительно необходимо настроить проверки работоспособности на локальном балансировщике.
Примечание
На данный момент используются только данные
о доступности серверов ({'<IP-address>': {'state': 'up'}}).
В следующих релизах будут учитываться
и другие параметры проверок работоспособности.
Серверы временно удаляются из пула балансировки, если не прошли проверку. Также учитываются данные по времени ответа сервера, полученные во время проверок работоспособности. Если проверки работоспособности для сервера не заданы в конфигурации GSLB, сервер будет всегда считаться рабочими.
Рекомендуется включать проверки работоспособности для всех серверов, участвующих в балансировке, чтобы запросы перенаправлялись только на рабочие серверы. Исключение может составлять резервный сервер, используемый для ответа в случае, когда все остальные серверы не прошли проверки.
Примеры#
1. Балансировка на первый доступный сервер
options:
ttl: 1
zones:
default.example.org:
rules:
- rule: default
rules:
default:
type: default
servers:
- server: lb1-dc1-health
- server: lb1-dc2-health
servers:
lb1-dc1-health:
addresses:
- 172.22.11.1
healthpeers: "http://172.22.11.1/api/http/upstreams/srv1/peers"
healthinterval: 1s
healthtimeout: 1s
lb1-dc2-health:
addresses:
- 172.22.21.1
healthpeers: "http://172.22.21.1/api/http/upstreams/srv1/peers"
healthinterval: 1s
healthtimeout: 1s
В этом примере:
Зона
default.example.comиспользует правилоdefault, определенное в блокеrules.Для серверов заданы проверки работоспособности.
Запросы будут перенаправляться на первый сервер, прошедший проверки (если проверки работоспособности не будут заданы, то запросы будут всегда перенаправлены на первый сервер в списке).
2. Балансировка round-robin с проверками работоспособности
options:
ttl: 1
zones:
www.example.org:
rules:
- rule: rr
servers:
- group: www
test.example.com:
rules:
- rule: rr
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
В этом примере:
Зоны
www.example.orgиtest.example.comиспользуют правилоrr, определенное в блокеrules.Для зоны
www.example.orgпереопределена группа серверов, которая будет использоваться в правилеrr.Для всех серверов заданы проверки работоспособности.
Запросы будут распределяться последовательно на указанные серверы с учетом проверок работоспособности.
3. Балансировка round-robin с учетом весов серверов
options:
ttl: 1
zones:
wrr.example.org:
rules:
- rule: wrr
rules:
wrr:
type: round_robin
weighted: true
servers:
- server: www1
- server: www2
servers:
www1:
addresses:
- 172.22.0.10
weight: 1
www2:
addresses:
- 172.22.0.11
weight: 2
В этом примере:
Зона
wrr.example.comиспользует правилоwrr-servers(взвешенный round-robin), определенное в блокеrules. Если вес для сервера не указан, то при проверке конфигурации будет выдана ошибка.Серверы получают нагрузку в соответствии со своими весами (
www2будет использоваться примерно в два раза чаще, чемwww1).
4. Балансировка round-robin с проверками работоспособности и бэкап-сервером
options:
ttl: 1
zones:
multi.example.org:
rules:
- rule: rr-health
- rule: fallback
rules:
rr-health:
type: round_robin
servers:
- server: lb1-dc1-health
- server: lb1-dc2-health
fallback:
servers:
- server: fallback
servers:
lb1-dc1-health:
addresses:
- 172.22.11.1
healthpeers: "http://172.22.11.1/api/http/upstreams/srv1/peers"
healthinterval: 1s
healthtimeout: 1s
lb1-dc2-health:
addresses:
- 172.22.21.1
healthpeers: "http://172.22.21.1/api/http/upstreams/srv1/peers"
healthinterval: 1s
healthtimeout: 1s
fallback:
addresses:
- 172.22.31.1
- 172.22.31.2
В этом примере:
Зона
multi.example.orgиспользует правилаrr-healthиfallback, определенные в блокеrules.Для серверов
lb1-dc1-healthиlb1-dc2-healthзаданы проверки работоспособности. Запросы будут распределяться последовательно на указанные серверы при прохождении проверок работоспособности.При непрохождении проверок серверами
lb1-dc1-healthиlb1-dc2-healthзапросы будут распределяться на резервный серверfallback, у которого прописано два адреса. При этом оба прописанных адреса будут выдаваться в ответе одновременно.