Помогите пожалуйсто!
Задача:
Есть две ноды debian lenny,с ядром хен, у них есть обшее файловое хранилише (DRBD c OCFS2),
в этом хранилище живут 4-е виртуальные машины (srv,srv1,srv2,srv3).
В нормальном режиме на каждой ноде должно крутиться по 2-е виртуалки ,
если одна нода падает ,то вторая должна подхватить упавшие виртуалки, и когда нода поднимится ,
отдать их обратно.Вопрос:Я уже настроил все из этого, кроме одного.При падении ноды виртуалки поднимаются на второй,
но не отдаются обратно,когда она поднимается то на ней запускается вторая копия этих виртуалок.
Как победить это?(нужно чтобы в любой момент времени была запушена лишь одна копия виртуалки)конфиг:Вот мой конфиг для /etc/ha.d/haresources
debianxen1 mountvirtual.sh start.sh
debianxen2 mountvirtual.sh start.shскрипт mountvirtual.sh служит для монтирования общей фаиловой системы
drbdadm primary vlad
mount.ocfs2 /dev/drbd5 /home/virtual
скрипт start.sh служит для старта виртуалок упавшей ноды
на debianxen1
xm create srv2.cfg
xm create srv3.cfg
на debianxen2
xm create srv.cfg
xm create srv1.cfg
А каким образом поднимаются вир.машины на той ноде, которая поднимается после после падения?
По xm create?
Думаю надо поднимать на ней виртуалки методом xm migrate --liveТ.е. про запуске ноды должна осуществляться проверка, какие вирмашины запущены на другой ноде. Если запущены все 4, то 2 из них перетаскивать xm migrate --live <domain> <node>.
Если какие то вирмашины не запущены(а вдруг), то поднимать методом xm create <вирмашина>
heartbeat должен работать во втором режиме т.е. в файле ha.cf должно:crm on
Тогда heartbeat будет управлять ресурсами отдельно, исходя из какой то политики, к примеру балансировка. В случае краха одной из машин она может быть запущена на второй ноде. А в первом варианте настройки, которая как я понимаю у вас - он обеспечивает только запуск всех приложений на второй ноде в случае краха первой. для справок http://linux-ha.org
>heartbeat должен работать во втором режиме т.е. в файле ha.cf должно:
>
>crm on
>
>Тогда heartbeat будет управлять ресурсами отдельно, исходя из какой то политики, к
>примеру балансировка. В случае краха одной из машин она может быть
>запущена на второй ноде. А в первом варианте настройки, которая как
>я понимаю у вас - он обеспечивает только запуск всех приложений
>на второй ноде в случае краха первой. для справок http://linux-ha.orgСпасибо большое за советы , но не могли бы вы помочь с конфигом cluster resources , а
то сколько не читаю никак не могу понять как же это применить к моей задачке
>[оверквотинг удален]
>>Тогда heartbeat будет управлять ресурсами отдельно, исходя из какой то политики, к
>>примеру балансировка. В случае краха одной из машин она может быть
>>запущена на второй ноде. А в первом варианте настройки, которая как
>>я понимаю у вас - он обеспечивает только запуск всех приложений
>>на второй ноде в случае краха первой. для справок http://linux-ha.org
>
>Спасибо большое за советы , но не могли бы вы помочь с
>конфигом cluster resources , а
> то сколько не читаю никак не могу понять как же это
>применить к моей задачкевот пример описания ресурса как у меня:
<resources>
<primitive class="ocf" type="Xen" provider="heartbeat" id="r001">
<instance_attributes id="r001_instance_attrs">
<attributes>
<nvpair id="r001_xmfile" name="xmfile" value="/etc/xen/r001"/>
<nvpair name="target_role" id="r001-target_role" value="started"/>
<nvpair id="r001-allow_migrate" name="allow_migrate" value="1"/>
<nvpair name="resource_stickiness" id="r001-resource_stickiness" value="0"/>
</attributes>
</instance_attributes>
<operations>
<op id="r001_stop" name="stop" timeout="180s"/>
<op id="r001_monitor" name="monitor" interval="10s" timeout="60s" prereq="nothing" start_delay="20"/>
<op id="r001_start" name="start" timeout="60s" start_delay="0"/>
</operations>
</primitive>
</resources>
>[оверквотинг удален]
> <nvpair name="resource_stickiness" id="r001-resource_stickiness" value="0"/>
> </attributes>
> </instance_attributes>
> <operations>
> <op id="r001_stop" name="stop" timeout="180s"/>
> <op id="r001_monitor" name="monitor" interval="10s" timeout="60s" prereq="nothing" start_delay="20"/>
> <op id="r001_start" name="start" timeout="60s" start_delay="0"/>
> </operations>
> </primitive>
> </resources>Пробую, пробую, но ничего пока не получается .
Создаю 5 файлов (bootstrap.xml,host1.xml-host4.xml)
перезапускаю heartbeat , но ресурсы не стартуют. Запускаю их вручную и смотрю crm_mon
те ресурсы которые расположены на текушей машине работают а на остальные показывает ошибку
Не подскажите что это за напасть такая?
PS:Заранее спасибо :)
1 bootstrap.xml
<cluster_property_set id="bootstrap">
<attributes>
<nvpair id="bootstrap01" name="transition_idle_timeout" value="60"/>
<nvpair id="bootstrap02" name="default_resource_stickiness" value="0"/>
<nvpair id="bootstrap03" name="default_resource_failure_stickiness" value="-500"/>
<nvpair id="bootstrap04" name="stonith_enabled" value="false"/>
<nvpair id="bootstrap05" name="stonith_action" value="reboot"/>
<nvpair id="bootstrap06" name="symmetric_cluster" value="false"/>
<nvpair id="bootstrap07" name="no_quorum_policy" value="stop"/>
<nvpair id="bootstrap08" name="stop_orphan_resources" value="true"/>
<nvpair id="bootstrap09" name="stop_orphan_actions" value="true"/>
<nvpair id="bootstrap10" name="is_managed_default" value="true"/>
</attributes>
</cluster_property_set>2-5 host1.xml
<resources>
<primitive class="ocf" type="Xen" provider="heartbeat" id="vm1">
<instance_attributes id="vm1_instance_attrs">
<attributes>
<nvpair id="vm1_xmfile" name="xmfile" value="/home/virtual/srv1.cfg"/>
<nvpair name="target_role" id="vm1-target_role" value="started"/>
<nvpair id="vm1-allow_migrate" name="allow_migrate" value="1"/>
<nvpair name="resource_stickiness" id="vm1-resource_stickiness" value="0"/>
</attributes>
</instance_attributes>
<operations>
<op id="vm1_stop" name="stop" timeout="180s"/>
<op id="vm1_monitor" name="monitor" interval="10s" timeout="60s" prereq="nothing" start_delay="20"/>
<op id="vm1_start" name="start" timeout="60s" start_delay="0"/>
</operations>
</primitive>
</resources>
/home/virtual -обший drbd ресурс который монтируется к обоим нодам
Да, чуть не забыл добавить , после выключения одной из нод ее виртуалки не мигрируют на вторую !
Все, решил, всеработает!!!
Спасибо всем кто откликнулся :) в особености valentine31
Были созданы 2-е группы по 2- виртуалки, каждая группа запускается на преферед ноде
Рабочие конфиги :
debianxen2:~# cat bootstrap.xml
<cluster_property_set id="bootstrap">
<attributes>
<nvpair id="bootstrap01" name="transition_idle_timeout" value="60"/>
<nvpair id="bootstrap02" name="default_resource_stickiness" value="0"/>
<nvpair id="bootstrap03" name="default_resource_failure_stickiness" value="-500"/>
<nvpair id="bootstrap04" name="stonith_enabled" value="false"/>
<nvpair id="bootstrap05" name="stonith_action" value="reboot"/>
<nvpair id="bootstrap06" name="symmetric_cluster" value="true"/>
<nvpair id="bootstrap07" name="no_quorum_policy" value="stop"/>
<nvpair id="bootstrap08" name="stop_orphan_resources" value="true"/>
<nvpair id="bootstrap09" name="stop_orphan_actions" value="true"/>
<nvpair id="bootstrap10" name="is_managed_default" value="true"/>
</attributes>
</cluster_property_set>debianxen2:~# cat group1.xml
<group id="group_1">
<primitive class="ocf" type="Xen" provider="heartbeat" id="vm1">
<instance_attributes id="vm1_instance_attrs">
<attributes>
<nvpair id="vm1_xmfile" name="xmfile" value="/home/virtual/srv.cfg"/>
<nvpair name="target_role" id="vm1-target_role" value="started"/>
<nvpair id="vm1-allow_migrate" name="allow_migrate" value="1"/>
<nvpair name="resource_stickiness" id="vm1-resource_stickiness" value="0"/>
</attributes>
</instance_attributes>
<operations>
<op id="vm1_stop" name="stop" timeout="180s"/>
<op id="vm1_monitor" name="monitor" interval="10s" timeout="60s" prereq="nothing" start_delay="20"/>
<op id="vm1_start" name="start" timeout="60s" start_delay="0"/>
</operations>
</primitive>
<primitive class="ocf" type="Xen" provider="heartbeat" id="vm2">
<instance_attributes id="vm2_instance_attrs">
<attributes>
<nvpair id="vm2_xmfile" name="xmfile" value="/home/virtual/srv1.cfg"/>
<nvpair name="target_role" id="vm2-target_role" value="started"/>
<nvpair id="vm2-allow_migrate" name="allow_migrate" value="1"/>
<nvpair name="resource_stickiness" id="vm2-resource_stickiness" value="0"/>
</attributes>
</instance_attributes>
<operations>
<op id="vm2_stop" name="stop" timeout="180s"/>
<op id="vm2_monitor" name="monitor" interval="10s" timeout="60s" prereq="nothing" start_delay="20"/>
<op id="vm2_start" name="start" timeout="60s" start_delay="0"/>
</operations>
</primitive>
</group>
Блин, поспешил я!
Все работает почти нормально , при выключении ресурсы мигрируют, но не всегда(не понятно почему)!
Да и не могу понять как настроить чтобы на упавшем хосте отрубались виртуалки!
Т.е если во время работы вытаскиваю кабель то на второй ноде появляются виртуалки первой,
но они также продолжают работать и на первой ногде. И когда я врубаю сеть обратно то получается что виртуалки первой ноды запущены в двойном экзэмпляре.
Знаю что надо использовать stonith но почему то никак не получается настроить!
Может у кого есть рабочие конфиги ,и не жаль поделиться? :)
Заранее спасибо за помощь :)
А вот не подскажет никто, как еще ocfs2 монтировать через сrm?
>А вот не подскажет никто, как еще ocfs2 монтировать через сrm?Посмотри здесь:
http://clusterlabs.org/wiki/Dual_Primary_DRBD_%2B_OCFS2
Но у меня это как то криво завелось , работало через раз, так что пока настраиваю в v1 stile