Socket.IO на трёх репликах сыплет ошибками «Session ID unknown»
Сервис на Socket.IO масштабировали с одной реплики до трёх за обычным балансировщиком с распределением round-robin. Redis-адаптер для рассылки подключён. Часть клиентов не может подключиться: в логах 400 Bad Request и «Session ID unknown», у клиентов — бесконечное переподключение.
В чём причина?
- Нужны sticky-сессии: запросы опроса попадают на разные реплики
- Redis-адаптер не поддерживает больше двух реплик
- Socket.IO нельзя запускать за балансировщиком
- Клиенты используют старую версию протокола WebSocket
