Виртуализация · 3 min read · Dec 01, 2025
Репликация виртуальных машин и аварийное переключение с VMWare Server и Debian Etch (4.0) - Страница 3
4. Настройка пакета Heartbeat
Установка пакета Heartbeat позволит включить автоматическое аварийное переключение и управление ресурсами в случае сбоя ресурсов и/или оборудования.
В этом руководстве я буду использовать Heartbeat по сети, но также возможно использовать Heartbeat с помощью последовательного кабеля и других методов. Heartbeat будет проверять обновления с обоих серверов, и когда не будет получать больше обновлений, инициирует аварийное переключение и захват указанных ресурсов (в нашем случае, DRBD и VMWare).
ЕСЛИ НЕ УКАЗАНО ИНОЕ, ВСЕ КОМАНДЫ ВЫПОЛНЯЮТСЯ НА ОБОИХ СЕРВЕРАХ
Хорошо, перейдем к настройке. Для вашего удобства вы можете использовать следующие конфигурационные файлы, так как они адаптированы для этого руководства. Heartbeat требует настройки 3 файлов, а именно: “ha.cf”, “haresources” и “authkeys”. Отредактируйте их соответственно с помощью вашего любимого редактора:
nano /etc/ha.d/ha.cflogfile /var/log/ha-log
logfacility local0
keepalive 1
deadtime 10
warntime 10
udpport 694
bcast heth1
auto_failback off
node server1 ## убедитесь, что оба имени доступны - проверьте /etc/hosts
node server2
ping 192.168.0.254 ## Введите IP-адрес, который можно пинговать из сети ETH0 !!
respawn hacluster /usr/lib/heartbeat/ipfailПРИМЕЧАНИЕ: Этот файл ha.cf позволит осуществить аварийное переключение в случае сбоя сетевого соединения на ETH0 и/или общего сбоя сервера. Проблемы с ETH1 НЕ приведут к аварийному переключению!
Теперь редактируем файл “authkeys”:
nano /etc/ha.d/authkeysauth 3
3 md5 failover ## это просто строка, введите что хотите! auth 3 md5 использует шифрование md5Но нам также нужно изменить права доступа к этому файлу, чтобы он был доступен только для чтения “root”:
chmod 600 /etc/ha.d/authkeysИ, наконец, редактируем файл “haresources”, который содержит ресурсы для аварийного переключения.
nano /etc/ha.d/haresourcesserver1 192.168.0.10 drbddisk::vm1 Filesystem::/dev/drbd0::/var/vm::ext3 vmstart
# Объяснение:
# Имя основного сервера --> виртуальный IP-адрес, который будет использоваться --> ресурс DRBD, как настроено в /etc/drbd.conf
# --> где монтировать ресурс DRBD и тип файловой системы --> ресурс для запуска/остановки в случае аварийного переключения
# ресурс "vmstart" является пользовательским скриптом, необходимым для VMWare Server, так как вы не можете позволить Heartbeat управлять
# службами vmware, иначе вы столкнетесь с ужасными ошибками "не настроено для этой машины"!Перед тем как продолжить, нам нужно создать пользовательский скрипт “vmstart”, чтобы убедиться, что виртуальные машины автоматически запускаются на сервере в случае аварийного переключения. С другими ресурсами, такими как Apache, Mysql, NFS … мы могли бы просто удалить скрипты запуска для них из директорий rc.d, но с VMWare это невозможно, так как они необходимы для нормальной работы служб. Поэтому нам нужен пользовательский скрипт для запуска виртуальных машин в случае аварийного переключения, так как службы VMWare уже будут работать до аварийного переключения!
Скрипт “vmstart” должен находиться в папке “/etc/ha.d/resource.d/“, так как именно там Heartbeat будет его искать.
nano /etc/ha.d/resource.d/vmstart#!/bin/bash
case "$1" in
start)
/usr/bin/vmware-cmd -s register "/var/vm/'имя виртуальной машины'/'файл конфигурации vm'.vmx" 2>/dev/null
/usr/bin/vmware-cmd "/var/vm/'имя виртуальной машины'/'файл конфигурации vm'.vmx" start 2>/dev/null
;;
stop)
/usr/bin/vmware-cmd "/var/vm/'имя виртуальной машины'/'файл конфигурации vm'.vmx" stop trysoft 2> /dev/null
;;
status)
if `/usr/bin/vmware-cmd "/var/vm/'имя виртуальной машины'/'файл конфигурации vm'.vmx" getstate 2>/dev/null | grep -q "getstate() = on"`
then
echo "работает"
else
echo "остановлено"
fi
;;
*)
echo "Использование: `basename $0` 'файл виртуальной машины' {start|stop|status}"
echo "Где "файл виртуальной машины" выглядит как /var/vm/'имя виртуальной машины'/'файл конфигурации vm'.vmx"
;;
esac
exit 0Заполните директивы ‘имя виртуальной машины’ и ‘файл конфигурации vm’ необходимой информацией (проверьте директорию /var/vm). Если у вас несколько виртуальных машин, просто скопируйте строки.
Этот пользовательский скрипт сначала зарегистрирует виртуальную машину (необходимо при использовании нового установленного сервера!), а затем запустит их. Это необходимо сделать таким образом, так как VMWare Server имеет возможность автоматически запускать ВМ только при запуске системы. Теперь, когда вы все настроили, пришло время проверить, все ли в порядке. Запустите службу Heartbeat, сначала на Server1, затем на Server2.
/etc/init.d/heartbeat startЕсли все в порядке, вы должны увидеть новый виртуальный IP, появляющийся на вашем основном сервере.
ifconfig |moreВывод:
eth0 Link encap:Ethernet HWaddr 00:11:09:00:BB:5D
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::211:9ff:fe00:bb5d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1025774 errors:0 dropped:0 overruns:0 frame:0
TX packets:227653 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:281072399 (268.0 MiB) TX bytes:56403081 (53.7 MiB)
eth0:0 Link encap:Ethernet HWaddr 00:11:09:00:BB:5D
inet addr:192.168.0.10 Bcast:192.168.0.255 Mask:255.255.255.0
...Хорошо, если вы чувствуете себя удачливым и следовали этому руководству с некоторым здравым смыслом, то теперь пришло время выдернуть этот шнур питания, держитесь за свою чашку кофе и смотрите, как виртуальная машина выходит в онлайн на вашем втором сервере.
5. Ссылки
- Debian: http://www.debian.org
- Проект высокой доступности Linux: http://www.linux-ha.org
- DRBD: http://www.drbd.org
- VMware Server: http://www.vmware.com/products/server
- Каталог VMware Appliance http://www.vmware.com/vmtn/appliances/
Get new posts in your inbox
No spam. Unsubscribe anytime.