Я использую сервер горячего резервирования для своей базы данных postgres. Я назначил серверу виртуальный IP-адрес. В случае сбоя переключаю виртуальный ip с мастера на сервер горячего резерва. Проблема в том, что клиенты, обращающиеся к базе данных, все еще имеют старый маршрут к главному серверу в их кэше ARP. Сервер горячего резервирования напрямую недоступен. Есть ли у них способ заставить клиентов очистить кеш ARP?
Не каждая реализация хоста / IP может кэшировать данные из бесплатный ARP (что вы могли бы отправить с использованием арпинга).
Вы должны использовать демон, который использует для этой цели не только виртуальный IP-адрес, но и виртуальный MAC-адрес. Сердцебиение / UCARP / VGP - это названия программных проектов, которые реализуют такую функциональность.
Если список IP-адресов для клиентов является управляемым, вы можете попросить новый сервер пинговать их все, как только он подключит виртуальный IP-адрес. IP-код каждого клиента должен обновлять свою таблицу ARP, когда видит, что IP-адрес поступает с нового MAC-адреса.
Возможно, вы сможете отправить эхо-запрос на широковещательный адрес - я никогда не пробовал этого ни в каком контексте, не говоря уже о попытках пощекотать другую систему, чтобы обновить ARP. Но это устранило бы систему ожидания, даже если бы она не знала, к кому пинговать. Вы также можете просто попросить резервную систему проверить каждый адрес в своей локальной сети, как только она подключит виртуальный IP-адрес.