Я планирую добавить больше серверов веб-приложений для поддержки увеличения числа клиентов, развернув HAproxy и Keepalived для балансировки нагрузки и высокой доступности.
Использование моего сервера имеет следующие характеристики:
По этой причине,
Вопрос
Если к серверу подключается более 60 000 клиентских устройств X, мой балансировщик нагрузки или маршрутизатор будет использовать TCP-порт. Каков наилучший способ расширения, скажем, для 20 000 пользователей?
Мой сервер работает на сервере Ubuntu с использованием tomcat и Java Servlet.
Я не думаю, что ваши 60 000 клиентов - настоящая проблема. Скорее всего, у вас возникнет проблема с недостаточным количеством дескрипторов файлов, но это должно быть легко исправить как часть конфигурации ОС.
Вот почему подключение не будет вашей проблемой. Каждое соединение характеризуется своим исходным IP-адресом, исходным портом, IP-адресом назначения и портом назначения. Внутри сетевого стека эта четверка используется для сопоставления пакетов с файловыми дескрипторами (каждый файловый дескриптор представляет собой соединение). Ваш сервер имеет фиксированный IP-адрес назначения и порт назначения (ваш сервер является пунктом назначения для их клиента), но исходный IP-адрес и исходный порт являются переменными. Порт - это 16-битное число, поэтому максимальное количество подключений от одного клиента составляет 64К. IPv4-адрес - это 32-битное число, которое дает вам 4 294 967 296 возможных исходных адресов. Выполнив некоторые базовые математические вычисления, ваш сервер может иметь 64К * 4294967296 подключений, сопоставленных с одним исходным IP-адресом и портом.
Вот почему у вас, скорее всего, возникнут проблемы с максимальным количеством дескрипторов открытых файлов, чем с количеством клиентов.
Самый простой подход может заключаться в реализации балансировки нагрузки на уровне DNS.
Значит: иметь запись DNS с циклическим перебором, которая балансирует до 2, 3 или более физических балансировщиков нагрузки.