Есть ли у кого-нибудь опыт настройки 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 имеет ничего что с этим делать.