Добрый день!
У меня есть демон, который поднимает коннект к удаленному серверу и ждет от него инфы. На соседней тачке нужно поднять еще одну копию такого демона. Проблема в том, что удаленный хост может принимать только одно соединение (в соединении используется идентификатор, и вот для одного идентификатора можно поднимать только один коннект, поднимаем больше - все отваливаются; адрес хоста, порты и прочее - одинаковые). Какими средствами я могу реализовать такую схему? То есть чтоб если host1 или демон на нем упал, об этом узнавал host2 и поднимал демона у себя, ну и чтоб если host1 внезапно пришел в норму то либо демон на нем не запустился, либо остановился на host2? А, да, на самом деле таких демонов на хосте несколько (с разными идентификаторами), плюс не все запросы к удаленному хосту уникальны (у него есть контексты с максимум одним обращением с одним идентификатором, а есть те где ограничения на кол-во коннектов нет), то есть проверить только коннект на определенный адрес мне не достаточно.
В общем для входящего соединения можно было бы использовать балансировщики, virtualIP со всякими коросинками\пеймейкерами\кипалайвами, но что делать в случае исходящего соединения я придумать не могу.
В общем случае какой софт будет использоваться для построения такого «кластера» не не принципиально, но самым идеальным вариантом было бы накрутить это на основе supervisord. Если у демона нет коннекта к хосту - он падает, то есть можно смотреть только на сам процесс, не проверяя состояние его подключения к удаленному серверу. В код демона могут вноситься любые правки (осталось понять какие нужно).
Заранее спасибо за советы!