Балансировщик нагрузки nginx

Автор:human

Балансировщик нагрузки nginx

балансировка_nginx

В предыдущей статье мы рассмотрели как сделать отказоустойчивый кластер из балансировщиков. В данной статье мы поговорим о самих балансировщиках nginx

Начнем с конфига для балансировщика nginx(конфиг сайта).

Рассмотрим параметры:

Директивы

Предыдущий раздел показал, как равномерно распределить нагрузку между несколькими виртуальными серверами. Тем не менее, есть много причин, согласно которым на данный момент это не наиболее эффективный способ работы с данными. Чтобы сайт работал более продуктивно, а его посетители быстро распределялись между серверами, нужно использовать определенные директивы.

Удельный вес

Один из способов более точно распределить пользователей серверов – это установить удельный вес (по количеству клиентов) для некоторых машин. Nginx позволяет установить число, определяющее долю трафика, которая должна направляться на каждый сервер.

Настройка балансировки нагрузки, которая включает удельный вес сервера, может выглядеть следующим образом:

Значение удельного веса по умолчанию – 1. Сервер со значением 2 (backend2.example) будет получать вдвое больше трафика, чем сервер со значением 1 (backend1 в данном коде); соответственно, сервер backend3 со значением веса 4 будет получать вдвое больше трафика, чем сервер backend2 и вчетверо больше сервера backend1.

Хэш

IP хэш (IP hash) позволяет серверам отвечать на запросы клиентов в соответствии с их IP-адресом, направляя посетителя на один и тот же VPS каждый раз, когда он открывает сайт (если только этот сервер не выключен). Если сервер отключен, он должен быть соответствующим образом отмечен. Все IP-адреса, которые должны были направиться на отключенный сервер, в результате направляются на другую машину.

Пример таких конфигураций:

Директива max_fails

Согласно настройкам round robin по умолчанию, Nginx будет продолжать передавать данные на виртуальные выделенные серверы, даже если серверы не отвечают. Директива max_fails (максимальное количество неудачных попыток) может автоматически предотвратить такое поведение, признавая не отвечающие серверы неработоспособными в течение определенного времени.

Директива max_fails связана с двумя факторами: max_fails и fall_timeout. Max_fails указывает максимальное количество неудачных попыток подключения к серверу, которые должны произойти для того, чтобы сервер считался неактивным. Fall_timeout задает определенный интервал времени, в течение которого сервер считается неработоспособным. Как только это время истечет, попытки установить связь с сервером возобновятся. Значение fall_timeout по умолчанию составляет 10 секунд.

Конфигурации могут выглядеть так:

На этом всё.

Об авторе

human administrator

    Оставить ответ

    Войти с помощью: 

     

    Яндекс.Метрика