У нас есть распределенное приложение клиент / сервер, где сервер написан на .Net, а клиенты могут быть на c ++, php, .net, java, python и т. Д. Все клиенты в среде подключены не более чем к 1 серверу на сервере.-cluster.Серверы прослушивают клиентов в сокете.
Итак, когда к клиенту подключено несколько клиентов, скажем, server1, а server1 отключается, все новые запросы от этих клиентов начинают сбой.Мы пытаемся найти решение, которое предоставляет нам эту поддержку аварийного переключения в режиме реального времени, при которой подключенные клиенты автоматически начинают отправлять свои запросы на другой сервер (server2) в кластере.
Один из способов сделать это - добавить интеллектуальные данные на клиенте.сторона, но так как у нас есть клиенты на разных языках, мы не хотим делать это на стороне клиента.И это также нецелесообразно из-за различных других причин.
Другой способ - предоставить виртуальный IP-адрес всем серверам в кластере и разрешить всем клиентам подключаться к этому виртуальному IP-адресу, а не назначать ему разные физические IP-адреса.Но проблема с этим подходом состоит в том, что, как только клиенты подключены к серверу, невозможно переключить их на следующий сервер.
Если бы это было для http-трафика, то Балансировщик сетевой нагрузки решил бы нашу проблему.Даже отказоустойчивая кластеризация Windows, похоже, не решает проблему.
Есть идеи, предложения?