This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
решение_hast [2012/09/04 15:02] val |
решение_hast [2017/09/29 10:01] val |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Решение HAST ====== | ====== Решение HAST ====== | ||
- | [[http://wiki.freebsd.org/HAST]] | + | * [[http://wiki.freebsd.org/HAST|HAST - Highly Available Storage]] |
===== Подготовка узлов ===== | ===== Подготовка узлов ===== | ||
Line 8: | Line 8: | ||
<code> | <code> | ||
- | nodeN# dmesg | grep ad1 | + | nodeN# dmesg | grep ada1 |
nodeN# mkdir /disk2 | nodeN# mkdir /disk2 | ||
Line 19: | Line 19: | ||
resource r0 { | resource r0 { | ||
on node1 { | on node1 { | ||
- | local /dev/ad1 | + | local /dev/ada1 |
- | # local /dev/ad1s1d | + | remote 10.Z.M.200+X |
- | remote 10.5.9.200+X | + | |
} | } | ||
on node2 { | on node2 { | ||
- | local /dev/ad1 | + | local /dev/ada1 |
- | # local /dev/ad1s1d | + | remote 10.Z.M.100+X |
- | remote 10.5.9.100+X | + | |
} | } | ||
} | } | ||
</code><code> | </code><code> | ||
- | nodeN# cat /etc/rc.conf | + | nodeN# service hastd rcvar |
- | </code><code> | + | |
- | ... | + | nodeN# service hastd start |
- | hastd_enable=yes | + | |
- | </code><code> | + | |
- | nodeN# /etc/rc.d/hastd start | + | |
</code> | </code> | ||
===== Инициализация ===== | ===== Инициализация ===== | ||
<code> | <code> | ||
+ | nodeN# hastctl status | ||
+ | |||
nodeN# hastctl create r0 | nodeN# hastctl create r0 | ||
Line 75: | Line 72: | ||
</code> | </code> | ||
- | ===== Дополнительные материалы ===== | + | ===== Решение ситуации split brain ===== |
- | + | ||
- | ==== Решение ситуации split brain ==== | + | |
Выбираем узел, данные которого будут затерты. | Выбираем узел, данные которого будут затерты. | ||
Line 92: | Line 87: | ||
</code> | </code> | ||
+ | ===== HAST и HEARTBEAT ===== | ||
+ | |||
+ | - Состояние init возникает при запуске hastd на secondary узле, если он остановился и стартует раньше primary | ||
+ | - Ситуация Split-Brain возникает при запуске hastd на secondary узле, если он остановился позже primary и heartbeat успел его назначить primary, а запускаются оба узла синхронно и heartbeat считает что primary должен оставаться прежним. | ||
+ | |||
+ | <code> | ||
+ | nodeN# service heartbeat stop | ||
+ | |||
+ | nodeN# cat /usr/local/etc/ha.d/resource.d/hast | ||
+ | </code><code> | ||
+ | #!/bin/sh | ||
+ | case $1 in | ||
+ | status) | ||
+ | hastctl status r0 | grep -q 'init' && hastctl role secondary r0 | ||
+ | ;; | ||
+ | start) | ||
+ | hastctl role primary r0 | ||
+ | sleep 60 | ||
+ | fsck -y -t ufs /dev/hast/r0 | ||
+ | mount /dev/hast/r0 /disk2 | ||
+ | ;; | ||
+ | stop) | ||
+ | mount | grep -q hast && umount /disk2 | ||
+ | hastctl role secondary r0 | ||
+ | ;; | ||
+ | esac | ||
+ | |||
+ | exit 0 | ||
+ | </code><code> | ||
+ | nodeN# chmod +x /usr/local/etc/ha.d/resource.d/hast | ||
+ | |||
+ | nodeN# cat /usr/local/etc/ha.d/haresources | ||
+ | </code><code> | ||
+ | node1.corpX.un hast | ||
+ | </code><code> | ||
+ | nodeN# service heartbeat start | ||
+ | </code> |