Istio 0.8.Подробная информация о LoadBalancerSettings.ConsistentHashLB - PullRequest
0 голосов
/ 03 июня 2018

Может ли кто-нибудь предоставить более подробную информацию или примеры о том, как работает этот алгоритм распределения нагрузки?

https://istio.io/docs/reference/config/istio.networking.v1alpha3/#LoadBalancerSettings.ConsistentHashLB

Балансировщик нагрузки на основе согласованного хеширования (ketama hash) для равномерного распределения нагрузки /перераспределение при изменении пула соединений.Эта политика балансировки нагрузки применима только для HTTP-соединений.Указанный пользователем заголовок HTTP используется в качестве ключа с хешированием xxHash.

1 Ответ

0 голосов
/ 04 июня 2018

Флаг LoadBalancerSettings.ConsistentHashLB предназначен для конфигурации Envoy, и есть больше подробностей в Документах по балансировке нагрузки Envoy :

Балансировщик нагрузки в кольцевом / модульном режиме обеспечивает согласованное хеширование длявышестоящие хосты.Алгоритм основан на отображении всех хостов в круг, так что добавление или удаление хоста из изменений набора хостов влияет только на запросы 1 / N.Этот метод также широко известен как хеширование «ketama».

Это алгоритм хеширования, который уменьшает влияние добавляемых и удаляемых серверов из пула балансировки Envoy (например, серверов, находящихся за VirtualService ).

Без такого алгоритма добавление одного пула в пул приводит к отображению хешей на разные серверы :

Мы написали ketama для заменыкак наши клиенты memcached отображали ключи на серверы ... всякий раз, когда мы добавляли или удаляли серверы из пула, все хэшировалось на разных серверах, что эффективно стирало весь кэш.


Вернуться к Istio -Документы посланника снова обратите внимание:

Согласованный балансировщик нагрузки хэширования эффективен только при использовании протокола маршрутизации, который указывает значение для хэширования.

, что означает - указать заголовокгенерировать хеш из.От Istio docs :

httpHeader |строка |ТРЕБУЕТСЯ.Имя заголовка HTTP-запроса, который будет использоваться для получения хеш-ключа.Если заголовок запроса отсутствует, подсистема балансировки нагрузки будет использовать случайное число в качестве хэша, что фактически сделает политику балансировки нагрузки случайной.

...