HAProxy — пример бесплатного и надежного балансировщика нагрузки, который также работает как обратный прокси. Вы можете настроить HAProxy для подключений WebSocket, чтобы лучше использовать функции WebSockets, особенно при передаче данных в реальном времени, при этом минимизируя нагрузку на сервер с помощью HAProxy. В этом посте представлены все необходимые шаги для настройки HAProxy для соединений WebSocket.
Пошаговое руководство по настройке HAProxy для подключений через WebSocket
Благодаря соединениям WebSocket связь между сервером и клиентом длится долго. Он сохраняется до тех пор, пока сервер или клиент не решит его закрыть. Таким образом, возможность работы с балансировщиком нагрузки гарантирует, что трафик может быть перераспределен на другой сервер, если сервер перегружен. Таким образом, клиент и сервер могут иметь бесперебойное и долговременное соединение с низкой задержкой.
1. Установите HAProxy
Первый шаг по настройке HAProxy для соединений WebSocket — убедиться, что у вас установлен HAProxy. Если он у вас уже установлен, пропустите этот шаг. В противном случае выполните следующую команду, чтобы установить его:
$ судо apt-получить установку гапрокси
2. Отредактируйте конфигурацию HAProxy.
Чтобы настроить HAProxy для соединений WebSocket, мы должны отредактировать конфигурацию HAProxy для поддержки соединений WebSocket. Мы должны изменить раздел «По умолчанию» и создать разделы «Frontend» и «Backend».
Откройте конфигурацию HAProxy с помощью текстового редактора следующим образом:
$ судо нано / и т. д. / гапрокси / haproxy.cfgВ разделе «По умолчанию» измените его, как показано на следующем изображении. Сначала мы указываем, что работаем с HTTP-соединениями, и определяем, куда отправлять файлы журналов. Далее мы устанавливаем таймауты для разных действий. Например, тайм-аут подключения — это максимальное время, которое должна занять попытка подключения к серверу. Если максимальное время достигнуто, соединение считается неудачным и его можно повторить.
В этом случае мы устанавливаем тайм-аут подключения на 5000 миллисекунд. Вы можете настроить тайм-аут в соответствии с тем, как вы их видите лучше всего для вашего случая. Настройте их в соответствии с вашим приложением и помните о продолжительности сеансов WebSocket и ожидаемой продолжительности их жизни.
Далее мы должны создать раздел «Frontend», в котором мы связываем, какие порты использовать для соединений WebSocket и на какой внутренний сервер ссылаться. В этом случае мы указываем порт 80 и указываем URL-адрес для доступа к странице «Статистика» для мониторинга нашего HAProxy. Наконец, мы определяем, на какой внутренний раздел следует ссылаться при балансировке нагрузки.
В разделе «Backend» распределяем нагрузку методом round robin. Опция «forward for» указывает HAProxy включать заголовок «X-Forward-For», который содержит IP-адрес клиента при отправке запроса на соединение. Таким образом, внутренний сервер получит правильный IP-адрес клиента.
«Опция http-server-close» ограничивает ресурсы, исключая использование ресурсов сервера любыми простаивающими соединениями. Хотя соединения WebSocket являются долгоживущими, мы должны проверять наличие простаивающих долгоживущих соединений и закрывать их, чтобы избежать ненужной траты ресурсов.
Наконец, добавьте внутренние серверы, которые вы будете использовать для распределения трафика. Убедитесь, что вы указали правильный IP-адрес для серверов и замените их на следующем изображении:
Теперь ваш HAProxy настроен для соединений WebSocket. Сохраните изменения и закройте файл.
3. Проверка достоверности
Прежде чем перезапустить HAProxy, мы можем запустить быструю команду, чтобы проверить, действителен ли файл и нет ли ошибок. Для этого выполните следующую команду:
$ судо гапрокси -с -ф / и т. д. / гапрокси / haproxy.cfg
4. Перезапустите и проверьте соединение WebSocket.
Как только файл станет действительным, перезапустите службу HAProxy.
Вот и все. Вы настроили HAProxy для соединений WebSocket. Вы можете проверить соединение, чтобы убедиться, что весь трафик WebSocket пересылается правильно.
Заключение
Настройка HAProxy для соединений WebSocket — популярное решение, особенно среди веб-администраторов. В этом посте подробно описан процесс, приведены шаги и пример, которые помогут вам легко следовать ему и реализовать то же самое в вашем случае. Пройдите каждый шаг и убедитесь, что вы понимаете концепцию и процесс ее реализации.