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

DRBD / Heartbeat на виртуальных машинах

Есть ли у кого-нибудь опыт настройки drbd с сердцебиением между 2 виртуальными машинами linux (инфраструктура VMWare)?

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

Однако на виртуальной машине последовательный порт и порт Ethernet (и все другие порты) являются виртуальными - так что на самом деле существует только один путь к данным (правильно?)

(Я знаю, что VMWare поддерживает физические последовательные кабели между устройствами, но наши виртуальные машины размещаются удаленно, а физические кабели будут препятствовать миграции хоста, что неприемлемо.)

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

Как настроить drbd / heartbeat для большей надежности при работе на виртуальных машинах

Вы смотрели, жалуются ли виртуальные машины на сброшенные прерывания или подобные вещи - возможно, оборудование хоста просто перегружено или вашим виртуальным машинам выделено недостаточно ресурсов?

Если это ненадежная или перегруженная сеть, правильным решением будет, конечно, исправить это; но если вашему хостинг-провайдеру это не нравится, можно ли использовать несколько физических путей, подключив несколько мостовых сетей к разным хост-устройствам (надеюсь, на разных коммутаторах)?

В этом случае не повредит просто использование избыточных сетевых путей через 802.3ad.

Комментатор по другому вопросу упомянул разделение мозга - это то, чего вы хотите избежать любой ценой: обычно сценарий STONITH, например, отключите сетевой блок PDU на другом хосте, чтобы другой хост не работал для уверенности; в виртуальной машине вы можете попробовать сценарий, который отключает другую виртуальную машину с помощью VMware API.

Наконец - возможно, DRBD просто не подходит для вашего сценария. Если у вас есть SAN, вы можете открыть одно и то же устройство в структуре на обеих виртуальных машинах как необработанный диск, а затем запустить на нем OCFS2 или аналогичную кластерную FS. Друзья видели, как OCFS2 безупречно работает на четырех узлах одновременно, что освободит вас для создания многоузловых кластеров с heartbeat2 вместо того, чтобы быть заблокированным с помощью двухузлового переключения при отказе, как в heartbeat 1 от drbd.

Caveat emptor: heartbeat 2 использует файлы конфигурации XML. Не всем (например, мне) это нравится.

Идея иметь несколько путей к данным не нова. Это основная концепция, позволяющая избежать ситуаций с разделением мозга.

Но вы сталкиваетесь с точно такой же проблемой на физических серверах - я не понимаю, почему вы связываете этот вопрос с виртуальными машинами?

С помощью физически различного сетевого оборудования можно установить несколько путей к данным, что также имеет смысл в больших средах, когда вы отделяете серверную часть от исходной части серверов. Это даст вам две сети, к которым вы также можете получить доступ на виртуальных машинах.

Если в игру вступают DRBD и heartbeat, третья физически отличная сеть может иметь смысл для высокоскоростной выделенной репликации данных (также часто рекомендуется для iSCSI) - это также может быть третья hb-сеть.

Теперь о моем собственном опыте: у нас есть эти три отдельные сети, которые присутствуют на виртуальных серверах и также соединяются с виртуальными машинами, поэтому они могут запускать биение по трем отдельным линиям ...

Еще одна возможность избежать сбоев в сети - это связать устройства для одних и тех же сетей. Если в вашей сетевой системе нет SPOF - тоже хорошее решение (которое дает вам хотя бы одну HA-сеть).

DRBD не только не использует последовательный кабель, но и не могу! Понятия не имею, о чем вы говорите!

Вдобавок ко всему, он не занимается несколькими путями данных, он просто связывается с другим узлом через простое старое TCP-соединение. Маршрутизация ядра, коммутаторы, маршрутизаторы и межсетевые экраны справляются с этим, DRBD имеет ничего что с этим делать.