Первоначально опубликовано в моем личном блоге.
Балансировщик нагрузки становится очень важным компонентом вашей инфраструктуры по мере роста вашей системы. По мере увеличения трафика на ваш сервер вам придется масштабировать сервер либо вертикально, либо горизонтально. Вы ничего не можете сделать, когда вы масштабируете вертикально, потому что загрузка, который может принять ваш сервер, по -прежнему ограничена аппаратными возможностями сервера.
Но когда вы масштабируете горизонтально, у вас будет больше аппаратного обеспечения, чтобы получить больше нагрузки. И важно масштабировать, чтобы уменьшить задержку ответа и увеличить доступность вашего услуги. Но горизонтальное масштабирование приносит свои собственные проблемы. Как распространять запросы, поступающие в вашу систему от Frontend (приложение для клиента) на все серверы? Ну, вот где входят балансировщики нагрузки.
Что такое балансировщик нагрузки?
Балансировщик нагрузки, обычно сидящий между фронтом и бэкэнд вашей системы, получает все запросы, поступающие с фронта. Затем он решает, какой сервер должен быть выделен для обслуживания этого запроса. Но это не так просто, как кажется. В балансировщиках нагрузки гораздо больше. Но поскольку это не подробное руководство, и потому что я не эксперт в этом, я выражу его очень просто, как я это понимаю.
Хорошо, но как балансировщик нагрузки решит, какой сервер должен получить новый запрос? Это самая интересная часть, по крайней мере, для меня. Есть много стратегий, которые можно использовать в балансировщике нагрузки для распределения нагрузки. Некоторые из них следующие:
- Случайный выбор
- Круглый выбор робин
- Взвешенная круглая выбор
- Выбор на основе сервиса
- IP HASHING SELECTION
- Выбор на основе нагрузки на сервер
- Смесь всего
Но как балансировщик нагрузки узнает, где находятся мои серверы? Это хороший вопрос. В большинстве случаев, когда вы добавляете или удаляете новый сервер с кластера ваших серверов, вам придется вручную сообщить балансировщику нагрузки, что вы добавили или сняли сервер. Обычно это список IP -адресов серверов, которые сохраняются в конфигурации балансировщика нагрузки. Но есть некоторые усовершенствованные балансировщики нагрузки, которые могли бы «открывать» серверы сами по себе, или позволить серверам зарегистрироваться с балансировщиком нагрузки. Но мы не собираемся смотреть на это в этом посте, в основном потому, что я не работал ни над такой системой. Я работал только с балансировщиками нагрузки, которые нуждаются в ручной конфигурации.
Начало работы с балансировщиками нагрузки
Есть много с открытым исходным кодом, простых в использовании балансировщиков нагрузки, которые вы можете попробовать себя, чтобы начать работу. Один очень простой способ, которым я лично проверяю балансировщик нагрузки, — это запустить его на своей локальной машине, чтобы сбалансировать нагрузку между двумя или более службами. Как это сделать? Вы можете запустить простой сервис API на двух разных портах на вашей локальной машине. Или запустите службу в нескольких контейнерах Docker, чтобы IP -адреса служб разные.
После того, как вы получите эти службы, работающие одновременно на вашей локальной машине, вы можете запустить балансировщик нагрузки, настроить IP -адреса двух контейнеров Docker и начать отправлять его запросы из вашего браузера или из такого инструмента, как почтальон. Это самый простой способ сделать это. Затем вы можете проверить журналы всех ваших услуг, чтобы убедиться, что нагрузка распределяется.
Вы можете начать с простого балансировщика нагрузки. Честно говоря, вы можете создать очень простой балансировщик нагрузки с Nginx. Есть много vhost
Конфигурации доступны онлайн для этого. Это была одна из первых вещей, которые я попробовал много лет назад. Это работает, но я не помню, как я это сделал. И я бы не рекомендовал этот подход для настройки производства. Это только для вас, чтобы проверить локально, чтобы получить представление о том, как это выглядит.
Я думал, что объясню различные подходы балансировки нагрузки (которые я перечислил ранее) в этом посте. Но этот пост уже достаточно долго. Я напишу вторую часть этого поста, чтобы кратко объяснить, как работает каждая стратегия или подход балансировки нагрузки. Следите за этим.
И если вам нравится то, что вы видите здесь, или на моем Средний блог и хотел бы увидеть больше таких полезных технических постов в будущем, рассмотрите возможность поддержки меня в Patreon и GitHub Анкет
Оригинал: «https://dev.to/contactsunny/the-art-of-load-balancing-part-1-understanding-a-load-balancer-gpm»