Балансировка запросов в Redis
Балансировка нагрузки в контейнер(ы) Redis реализуются на уровне TCP при помощи Nginx. В API Gateway (сервис frontend) это делается следующим образом:
-
Создается каталог streams в директории с конфигурацией приложения:
mkdir -p ./data/nginx/streams -
Создается файл конфигурации следующего содержания:
data/nginx/streams/redis.confstream {
upstream redis_docker {
server redis:6379;
}
server {
listen 6379;
proxy_pass redis_docker;
}
} -
В файле
docker-compose.additional.ymlнастраиваются реплики Redis и проброс конфигурации для frontend:docker-compose.additional.ymlservices:
redis:
deploy:
replicas: 3
frontend:
ports:
- "6379:6379"
volumes:
- type: bind
source: ./data/nginx/streams
target: /etc/nginx/streams -
Применяются все внесенные изменения:
pamirctl start
Таким образом реализуется балансировка, при которой Redis может быть реплицирован на N-экземпляров средствами Compose, при этом, доступным извне, например, при реализации кластера Alertmanager.