Требуется приблизительно такое:
Для IP при первом обращении определяется нода и эта связка ip-node живет время x (от 10 до 60 минут). В пределах этого времени x конкретный IP, для которого есть такая связка, будет попадать на одну и ту же ноду, если она работает. В случае если нода падает, определяется следующая нода.
При этом необходимо иметь возможность "плавного" выведения ноды. Т.е. уже имеющиеся сессии живут на ней, но как только для очередного IP переопределяется нода (согласно п. 1), то выводимая нода не участвует в этом выборе. Метка например какая-то.
Сейчас пока делаем на ip_hash и ноды включать/выключать через down. Но ip_hash хэширует по первым 3-м октетам адреса, а нам бы по 4-м.
Смотрел модуль hash, но он почему-то не позволяет использовать down в описании backend.
Собственно, можно свести к двум вопросам:
1. Как хэшировать весь IP целиком, сохраняя возможность использовать down, weight и т.п.?
2. Как можно сделать "плавное" выведение ноды?