Я создаю клиент-серверное приложение, и я ищу возможность добавить клиенту отработку отказа, чтобы, когда сервер не работает, он пытался подключиться к другому доступному серверу. Существуют ли какие-либо стандарты или спецификации, касающиеся аварийного переключения серверов? Я бы предпочел принять существующий стандарт, чем реализовывать свой собственный механизм.
В противном случае любые советы о том, какую структуру использовать для аварийного переключения, будут очень приветствоваться. В настоящее время я думаю о наличии списка серверов, а затем выбора алгоритмов, таких как: сверху вниз, случайный, предпочтение сверху и т. Д. Еще один подход, о котором я подумал, - это разделить список серверов аварийного переключения на основные и резервное копирование. Любые мысли / советы приветствуются. Спасибо.
Carp - это открытый стандарт кластеризации серверов, который может выполнять аварийное переключение. В основном это BSD, но большинство юниксов могут использовать Ucarp. VRRP является общим стандартом IETF, но больше предназначен для маршрутизаторов, чем для серверов приложений.
В какой операционной системе будет работать ваше приложение?
В Windows есть API кластеризации, который вы можете использовать, чтобы ваше приложение учитывало кластеры и соответствовало кластеризации Microsoft, точно так же, как SQL Server или Exchange.
http://msdn.microsoft.com/en-us/library/cc296100(VS.85).aspx
Если вы ищете простой способ предоставления нескольких адресов серверов, вы можете использовать для этого записи DNS SRV. Это RFC 2782.
Это действительно зависит от приложения и серверного компонента, который должен быть избыточным. Для веб-сайтов относительно легко создать избыточность. Exchange и SQL - это совершенно разные вещи. Не могли бы вы рассказать нам подробнее о приложении и сервере?