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

Резервирование для разных процессов, работающих на одном сервере

У нас есть система, состоящая из различных компонентов / служб, таких как база данных, веб-сервер, общий доступ к файлам, некоторые самопрограммируемые демоны и т. Д. Теперь у нас есть требование сделать все компоненты / службы избыточными. Поскольку мы хотим начать с меньшей системы, у нас нет отдельного сервера для всех служб. Например, у нас есть веб-сервер (tomcat) и файловый сервер (общий ресурс nfs) на одном компьютере. В настоящее время мы пытаемся реализовать это с помощью Heartbeat (www.linux-ha.org). Мне не ясно, можем ли мы назначать разные виртуальные IP-адреса разным сервисам. Если, например, сервер tomcat выходит из строя и больше не запускается, нам нужно перенаправить весь трафик на резервную машину. Если есть проблема только с tomcat, нет необходимости переключать общий ресурс nfs на сервер резервного копирования.

Если я правильно понимаю, heatbeat может переключить только весь серверный узел и не может сделать это для каждой службы (назначьте разные виртуальные IP-адреса для каждой службы). Он также не может определить, доступна ли служба (в нашем случае tomcat или общий ресурс nfs). Есть ли способ реализовать то, что нам нужно, используя heatbeat, возможно, в сочетании с другим инструментом, или нам нужно перейти к другому подходу? Любые предложения приветствуются.

ОБНОВЛЕНИЕ: еще один подход, о котором я думаю, - назначить виртуальный IP-адрес для каждого процесса. Затем используйте nagios для мониторинга всех процессов. В случае сбоя процесса Nagios может удалить виртуальный IP-адрес, назначенный службе, и назначить его резервному серверу. Это можно сделать с помощью скриптов оболочки. Это хорошая идея?

Я думаю, что Heartbeat был разработан с учетом полного аварийного переключения серверных узлов, поэтому даже если вы можете заставить это каким-то образом работать, я думаю, что это связано с рисками.

Тем не менее, вы можете назначить другой виртуальный IP-адрес или даже несколько для каждой службы в haresources.config следующим образом:

yourservernode IPaddr::10.0.0.1 IPaddr::10.0.0.2 Filesystem::/dev/yourdisk::/mountpoint/fstype::mountoptions nameforyourtomcatservicename
yourservernode IPaddr::10.0.0.3 Filesystem::/dev/yourdisk::/mountpoint/fstype::mountoptions nameforyournfsservice

... но я боюсь, что в случае обслуживания в yourservernode отключается, все передается на другие узлы, которые вы указали в ha.cf.

Кроме того, с 2+ узлами все становится сложнее с CRM. У вас всего 2 узла или больше?

(Моя информация может быть устаревшей, поскольку у меня есть опыт работы с Heartbeat v2.1.x.)

Можете ли вы запустить балансировщик нагрузки перед вашим Tomcat и поддерживать работу Tomcat на всех узлах? Затем балансировщик нагрузки может определить, вылетает ли Tomcat на каком-либо узле, и прекратить пересылку трафика на этот узел, пока он не вернется в рабочее состояние.