Методы балансировки#
Алгоритмы балансировки#
Алгоритм | Описание |
|---|---|
| Запросы распределяются на первый сервер, отвечающий критериям, заданным в правиле. Используется по умолчанию. |
| Запросы распределяются по серверам последовательно. |
Взвешенный | Запросы распределяются по серверам
c учетом весов серверов ( |
Поддерживается дополнительная настройка балансировки с учетом
IP-адреса клиента (clientip).
Далее будут поддерживаться и другие методы балансировки.
Подробное описание параметров конфигурации GSLB см. в статье Параметры конфигурации.
Проверки работоспособности#
Модуль GSLB получает данные о состоянии апстрим-серверов от локального балансировщика нагрузки Angie ADC. Предварительно необходимо настроить проверки работоспособности на локальном балансировщике.
Примечание
На данный момент используются только данные
о доступности серверов ({'<IP-address>': {'state': 'up'}}).
В следующих релизах будут учитываться
и другие параметры проверок работоспособности.
Серверы временно удаляются из пула балансировки, если не прошли проверку. Также учитываются данные по времени ответа сервера, полученные во время проверок работоспособности. Если проверки работоспособности для сервера не заданы в конфигурации GSLB, сервер будет всегда считаться рабочими.
Рекомендуется включать проверки работоспособности для всех серверов, участвующих в балансировке, чтобы запросы перенаправлялись только на рабочие серверы. Исключение может составлять резервный сервер, используемый для ответа в случае, когда все остальные серверы не прошли проверки.
Примеры#
1. Балансировка на первый рабочий сервер
options:
ttl: 1
zones:
default.example.org:
rules:
- rule: default
rules:
default:
type: default
members:
- 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
members:
- group: www
test.example.com:
rules:
- rule: rr
rules:
rr:
type: round_robin
members:
- server: www1
- server: www2
groups:
www:
members:
- 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
members:
- 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
members:
- server: lb1-dc1-health
- server: lb1-dc2-health
fallback:
members:
- 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, у которого прописано два адреса. При этом оба прописанных адреса будут выдаваться в ответе одновременно.
5. Балансировка по IP-адресу клиента
options:
ttl: 1
zones:
clientip.example.org:
rules:
- rule: localhost
matchall:
- clientip: 127.0.0.0/8
- rule: dc1
matchany:
- clientip: 172.17.0.0/16
- clientip: 172.18.0.0/16
- rule: dc2
matchany:
- clientip: 172.19.0.0/16
- rule: rr
rules:
dc1:
members:
- server: www1
dc2:
members:
- server: www2
rr:
type: round_robin
members:
- server: www1
- server: www2
localhost:
members:
- server: localhost
servers:
www1:
addresses:
- 172.22.0.10
www2:
addresses:
- 172.22.1.10
localhost:
addresses:
- 127.0.0.1
В этом примере:
Зона
clientip.example.comиспользует правилаlocalhost,dc1,dc2иrr, определенные в блокеrules.Запросы клиентов из сети
127.0.0.0/8распределяются на сервер127.0.0.1по правилуlocalhost.Запросы клиентов из сетей
172.17.0.0/16и172.18.0.0/16распределяются на серверwww1по правилуdc1.Запросы клиентов из сети
172.19.0.0/16распределяются на серверwww2по правилуdc2.Все остальные клиентские запросы распределяются по правилу
rrпоследовательно наwww1илиwww2.