03.03.2013 Views

LXFDVD - Журнал Linux Format

LXFDVD - Журнал Linux Format

LXFDVD - Журнал Linux Format

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Heartbeat, запущенная на запасном сервере, перенесет этот IP-адрес на<br />

свой сетевой интерфейс.<br />

Предполагается, что Heartbeat будет управлять сервисами путем<br />

запуска скрипта, указанного в haresources, с аргументами start, stop<br />

или status. Конечно, это те самые аргументы скриптов каталога /etc/init.<br />

d, что используются для запуска сервисов во время загрузки системы,<br />

и, по правде говоря, Heartbeat будет автоматически искать скрипт httpd<br />

в каталоге /etc/init.d.<br />

После внесения этих изменений в конфигурацию основного и запасного<br />

серверов можно снова запустить Heartbeat на каждом из них:<br />

/etc/init.d/heartbeat start<br />

Когда Heartbeat войдет в нормальный режим работы, нужно кое-что<br />

проверить. На основном сервере запустите:<br />

ip addr show<br />

и проверьте, что Heartbeat назначил второй IP-адрес (в нашем примере<br />

192.168.0.50) на наш сетевой интерфейс. Также запустите команду<br />

ps -ef | grep httpd<br />

которая проверит, что сервис httpd запущен. На запасной сервер второй<br />

IP-адрес не назначается, а сервис httpd на нем не выполняется.<br />

Теперь пора загрузить третий компьютер, чтобы использовать в<br />

качестве клиента. Убедитесь, что он может разрешить имя компьютера,<br />

на котором запущен сервис, по его IP-адресу. Для этого я просто<br />

добавил строку<br />

192.168.0.50 www.example.com<br />

в файл /etc/hosts. Проверьте, пингуется ли адрес www.example.com с<br />

компьютера клиента. Откройте в браузере на клиентском компьютере<br />

страницу http://www.example.com. Вы должны увидеть файл index.<br />

html основного сервера. На клиенте также можно проверить кэш arp,<br />

запустив команду<br />

arp -a<br />

и обратить внимание на MAC-адрес, связанный с IP-адресом<br />

192.168.0.50. В моем случае результат работы команды был таким:<br />

www.example.com (192.168.0.50) at 00:0C:F1:96:A3:F7 [ether] on eth0<br />

Ладно, и как это работает?<br />

Мы подошли к драматической развязке: демонстрации переноса сервиса<br />

на запасной сервер в случае отказа основного. Можно было просто<br />

отключить питание основного сервера, как и в предыдущем эксперименте,<br />

но на сей раз я избрал более кроткий способ – просто остановил<br />

Heartbeat на основном сервере командой:<br />

/etc/init.d/heartbeat stop<br />

Остановившись, Heartbeat остановит httpd на основном сервере и<br />

проинформирует запасной сервер об отключении основного (через<br />

Heartbeat-соединение). Запасной сервер сразу возьмет управление на<br />

Дополнительная информация<br />

Побольше узнать о heartbeat<br />

можно в документации<br />

/usr/share/doc/heartbeat<br />

(каталог зависит от конкретного<br />

дистрибутива), в<br />

частности, в файле<br />

GettingStarted. На сайте<br />

<strong>Linux</strong> HA также есть руководства<br />

и документация.<br />

Рекомендую вам прекрасную<br />

книжку “<strong>Linux</strong> Enterprise<br />

Cluster: Build a Highly<br />

Available Cluster with<br />

Commodity Hardware and<br />

Free Software” (No Starch<br />

Press, ISBN 1-59327-036-4).<br />

Мы думали, что саморекламы nostarch.com как<br />

«лучшего развлечения для хакеров» — это гипербола…<br />

Но нет! Вы только взгляните на заголовки!<br />

Hardcore <strong>Linux</strong> Учебник<br />

себя, и в файле его журнала (/var/log/messages) появятся новые сообщения.<br />

Два из них наиболее важны (время и другую информацию в<br />

начале строки я удалил):<br />

Running /etc/init.d/httpd start<br />

Registering new address record for 192.168.0.50 on eth0<br />

В этом случае все заняло пару секунд. Если бы я просто выдернул<br />

из сети шнур питания основного сервера, то на восстановление системы<br />

потребовалось бы больше времени: в этом случае перед тем, как<br />

сделать вывод об отказе основного сервера и взять управление на<br />

себя, запасной сервер ожидал бы ответа 20 секунд (параметр deadtime<br />

в файле ha.cf).<br />

На клиентском компьютере следует провести пару важных тестов.<br />

Во-первых, попробуйте обновить страницу www.example.com в браузере.<br />

Должна появиться страница запасного сервера. Во-вторых, еще<br />

раз просмотрите содержимое ARP-кэша. На моем компьютере команда<br />

arp –a вернула следующий результат:<br />

www.example.com (192.168.0.50) at 00:10:60:60:3E:8E [ether] on eth0<br />

Это означает, что пакеты, предназначенные для адреса 192.168.0.50,<br />

теперь будут направляться на запасной сервер.<br />

А что же дальше? Ну, наверное, со временем кто-то доберется до<br />

основного сервера, починит его и перезапустит. Когда Heartbeat перезапускается,<br />

он сообщает об этом запасному серверу через Heartbeatсоединение.<br />

В журнале запасного сервера появятся такие строки:<br />

Heartbeat restart on node primary.example.com<br />

Releasing resource group: primary.example.com httpd<br />

Running /etc/init.d/httpd stop<br />

Withdrawing address record for 192.168.0.50 on eth0<br />

Они означают, что запасной сервер освободил ресурсы и разрешил<br />

основному забрать их.<br />

Если у вас хватило духу дочитать до конца, поздравляю! Вы создали<br />

отказоустойчивый кластер в <strong>Linux</strong> и можете начать делать на этом<br />

деньги в реальном мире! Однако прежде чем пойти на собеседование<br />

в Google, NASA или даже Krazy Ken’s 24x7 Liquorice Emporium, быть<br />

может, вы захотите узнать о некоторых вопросах подробнее.<br />

Один из них – это концепция «ограждения» (fencing). Когда запасной<br />

сервер перенимает ресурсы основного, нужно как-то гарантировать,<br />

чтобы основной сервер не попытался снова предоставить эти<br />

сервисы. Heartbeat может использовать для этого механизм STONITH<br />

(“shoot the other node in the head” – «контрольный выстрел в голову»),<br />

если вы купите устройство, программно отключающее питание<br />

компьютера. Второй вопрос – как синхронизировать содержимое двух<br />

web-серверов. В нашем примере мы умышленно сделали его разным,<br />

но на практике может потребоваться какое-то средство синхронизации<br />

их содержимого (rsync или unison). LXF<br />

Сайт <strong>Linux</strong> HA (www.linux-ha.org) доступен даже на японском. Огромное<br />

количество ссылок в разделе Press наглядно свидетельствует<br />

о популярности, завоеванной проектом с момента его основания.<br />

Через месяц Распределите нагрузку на виртуальный сервер по нескольким реальным.<br />

Январь 2008 <strong>Linux</strong> <strong>Format</strong> 89

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!