Серверы · 2 min read · Oct 21, 2025

Получение удовольствия с Ленни - Страница 5

После настройки вышеуказанных 2 файлов, haresources - это то место, где мы хотим контролировать поведение Heartbeat. Это пример для 1 Vserver, который мы настроим позже.

nano /etc/ha.d/haresources
node1 drbddisk::r1 LVM::drbdvg1 Filesystem::/dev/drbdvg1/web::/VSERVERS/web::ext3 vserver-web SendArp::123.123.123.125/eth0

Вышеуказанное по умолчанию назначает Vserver с именем web на node1 и указывает точки монтирования, скрипт vserver-web будет запускать и останавливать его, sendarp предназначен для уведомления сети о том, что этот IP может быть найден где-то еще, а не там, где он был раньше. (Я добавил SendArp еще раз ниже для лучшего результата.)

Скрипт vserver-web по сути является упрощенной версией оригинального агента стиля R2 от Мартина Фика, который можно найти здесь: http://www.theficks.name/bin/lib/ocf/VServer. Я удалил разумную верхнюю часть и заменил “$OCF_RESKEY_vserver” на конкретное имя Vserver, также добавил дополнительную строку /etc/ha.d/resource.d/SendArp 123.123.123.126/eth0 start в часть запуска, потому что у меня были различные результаты, когда это выполнялось Heartbeat.

nano /etc/ha.d/resource.d/Vserver-web
#!/bin/sh
#
# Лицензия: GNU General Public License (GPL)
# Автор:  Мартин Фик <[email protected]>
# Дата:    04/19/07
# Версия: 1.1
#
#    Этот скрипт управляет экземпляром VServer
#
#    Он может запускать или останавливать VServer
#
#    использование: $0 {start|stop|status|monitor|meta-data}
#
#
#       Параметры OCF указаны ниже
#       OCF_RESKEY_vserver
#
#######################################################################
# Инициализация:
#
#. /usr/lib/heartbeat/ocf-shellfuncs
#
#USAGE="использование: $0 {start|stop|status|monitor|meta-data}";
#
#######################################################################
#
#
#meta_data() {
#        cat <
#
#
# 1.0
# 
#Этот скрипт управляет экземпляром VServer.
#Он может запускать или останавливать VServer.
# 
# Скрипт VServer, совместимый с OCF Resource Agent.
#
#
#
#   
#Имя vserver - это имя, найденное в /etc/vservers
#   
#   Имя VServer
#    
#   
# 
#
# 
#  
#  
#  
#  
#  
# 
#
#END
#}
vserver_reload() {
    vserver_stop || return
    vserver_start
}
vserver_stop() {
  #
  #    VServer уже остановлен?
  #
    vserver_status
    [ $? -ne 0 ] && return 0
    /usr/sbin/vserver "web" "stop"
    vserver_status
    [ $? -ne 0 ] && return 0
    return 1
}
vserver_start() {
    vserver_status
    [ $? -eq 0 ] && return 0
    /usr/sbin/vserver "web" "start"
    vserver_status
    /etc/ha.d/resource.d/SendArp 123.123.123.125/eth0 start
}
vserver_status() {
    /usr/sbin/vserver "web" "status"
    rc=$?
    if [ $rc -eq 0 ]; then
    echo "работает"
        return 0
    elif [ $rc -eq 3 ]; then
    echo "остановлен"
    else
    echo "неизвестно"
    fi
    return 7
}
vserver_monitor() {
  vserver_status
}
vserver_usage() {
  echo $USAGE >&2
}
vserver_info() {
cat - <