Я уже некоторое время пытаюсь понять это, но пока безуспешно. Пару раз связавшись со службой поддержки DigitalOcean, я еще больше растерялся.
У меня следующая настройка: домен указывает на балансировщик нагрузки DO, который находится перед двумя каплями приложения, в которых размещается мое приложение, построенное на codeigniter. Третья капля - это мой сервер базы данных. серверы приложений - это PHP7 с php + fpm
Поскольку капли приложения сбалансированы по нагрузке, я обрабатываю сеансы в базе данных, что отлично работает с точки зрения пользователя.
Проверки работоспособности LB настроены на запуск каждые 10 секунд по протоколу HTTP, а целью является страница, созданная codeigniter.
Резюме на данный момент: поскольку проверки работоспособности каждые 10 секунд (6 в минуту) направляются на 2 капли, я бы ожидал, что всего 12 проверок работоспособности в минуту. Учитывая, что DO выполняет автоматическое переключение при отказе, мы можем предположить, что на самом деле это число будет 24 проверки в минуту (если они также отправили проверки из LB аварийного переключения), то есть 1440 в час. «Двойные» проверки на самом деле реальны, поскольку моя сеансовая таблица имеет равный объем трафика с двух разных и последовательных IP-адресов в частном диапазоне.
Проблема: на самом деле я вижу ровно в 4 раза больше сеансов, чем я ожидал бы от балансировщиков нагрузки (вместо ~ 1440 сеансов в час я вижу постоянные цифры ~ 5760 сеансов в час). DigitalOcean не смогла этого понять.
Количество сеансов не является реальной проблемой, поскольку у меня есть сборщик мусора (из-за отсутствия лучшего названия), который очищает пустые сеансы несколько раз в день, чтобы таблица была маленькой, но я озадачен этим. Я знаю, что могу просто немного коснуться проверок работоспособности или указать проверки на URL-адрес, который не запускает библиотеку обработчика сеанса, но оба смягчения противоречат цели.
Кто-нибудь видел подобное поведение? Любые идеи? Я гоняюсь за этим уже около месяца.
Без подробных знаний о внутренней работе балансировщика нагрузки:
Я подозреваю, что проверки работоспособности выполняются от имени каждой точки входа, каждой службы, определенной в балансировщике нагрузки.
Если у вас есть как HTTP, так и HTTPS точки входа, которые работают с одним и тем же сервером, это приведет к двум отдельным проверкам работоспособности, удваивая количество запросов, которые вы видите.