Назад | Перейти на главную страницу

Обеспечение избыточности для процессов на разных серверах

Скажем, у меня есть, например, 5 физических машин с аналогичными ресурсами (скорость процессора, ОЗУ и хранилище) с именами s1, s2, s3, s4 и s5.

Если у меня есть процессы, запущенные на s1, но затем s1 почему-то не работает, как я могу автоматически запустить этот процесс на одном из других 4 серверов? Потребуется ли для этого общее хранилище на всех этих серверах, чтобы процесс можно было просто запустить снова на другом компьютере?

Быстрый вопрос тоже немного связанный. Если у меня есть 5 IP-адресов для этих 5 машин, могу ли я назначить эти 5 только блоку серверов, чтобы каждый мог получить доступ к каждому IP индивидуально? Итак, если процесс выполняется и к нему обращаются на xxx.xxx.xxx.1, но затем s1 умирает, он меняет местами и запускается на s4, может ли s4 иметь доступ к этому IP-адресу раньше, чтобы пользователь видел только кратковременное прерывание в своей службе?

Если у меня есть процессы, запущенные на s1, но затем s1 почему-то не работает, как я могу автоматически запустить этот процесс на одном из других 4 серверов?

все основные ОС поддерживают кластеризацию, которая делает это - при условии, что процесс установлен на s2. А иногда, если приложение поддерживает кластер. Если это не так, виртуализация может прийти на помощь, запустив виртуальную машину на другом сервере.

Потребуется ли для этого общее хранилище на всех этих серверах, чтобы процесс можно было просто запустить снова на другом компьютере?

Это зависит. Если процесс установлен локально на других машинах - как это обычно бывает при настройке кластера - то только при наличии необходимых общих ресурсов. Что может быть в большинстве программ.

Пример SQL Server, Exchange - не потребуется общее хранилище в некоторых конфигурациях, потому что каждый узел кластера хранит копию данных (потому что у общего хранилища ТАКЖЕ есть проблемы - не столько на аппаратной стороне, которую вы можете сделать избыточной, сколько в случае отказа машины уничтожает вашу файловую систему ... нечего делиться;)

Если у меня есть 5 IP-адресов для этих 5 машин, могу ли я назначить эти 5 только блоку серверов, чтобы каждый мог получить доступ к каждому IP индивидуально? Итак, если процесс запущен и к нему осуществляется доступ на xxx.xxx.xxx.1, но затем s1 умирает, он меняет местами и запускается на s4, может ли s4 иметь доступ к этому IP-адресу раньше, чтобы пользователь видел только кратковременное прерывание в своей службе?

Любая кластерная система сделает это. Для Windows имеется интегрированная кластерная система, которая позволяет вам назначать IP-адрес кластерной программе, которая затем перемещается при отказе программы.

Вы, наверное, ничего не говорите о нашей инфраструктуре. В любом случае, у вас есть общий ответ - пора сесть и начать читать документацию обо всем, что у вас есть в вашей операционной системе.

Это будет сильно зависеть от приложения. Просто переключение IP легко осуществляется через виртуальный сервер Linux (http://www.linuxvirtualserver.org/)

Вы назначаете ему виртуальный IP-адрес, и он автоматически перенаправляет соединение. Вы можете либо просто сделать так, чтобы он установил соединение tcp, если сервер включен, он считается активным, либо вы можете попросить его выполнить оценку ответа. Наш проверяет содержимое html-запроса, чтобы оценить, работает ли сервер или нет. В большинстве случаев аварийное переключение происходит незаметно.

Это идеально, если целевым приложением является MySQL в режиме мастер-мастер или веб-сервер, где фактическое хранилище не является уникальным.

Если это для хранилища, например файлового сервера, и у вас нет процесса синхронизации, такого как rsync или DFS, работающего для его репликации, вы можете посмотреть corosync (http://corosync.github.io/corosync/)