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