LinuxForum.Fans
Тема

[Решено]resource agent HA pgbouncer

Автор: i2ks 2 сообщений 1917 просмотров
#376630

сабж.
Написал агента HA для pgbouncer

text

lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 6.0.9 (squeeze)
Release:        6.0.9
Codename:       squeeze

Сам скрипт ресур агента

text

#!/bin/sh

####################################################################### # Initialization:

: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/resource.d/heartbeat} . ${OCF_FUNCTIONS_DIR}/.ocf-shellfuncs

#######################################################################

meta_data() { cat <<END <?xml version="1.0"?> <!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd"> <resource-agent name="Pgbouncer" version="1.0"> <version>1.0</version>

<longdesc lang="en"> Pgbouncer </longdesc> <shortdesc lang="en">Pgbouncer resource agent</shortdesc>

<parameters>

<parameter name="binfile" required="0" unique="0"> <longdesc lang="en"> </longdesc> <shortdesc lang="en">Pgbouncer binary</shortdesc> <content type="string" default="/usr/sbin/pgbouncer" /> </parameter>

<parameter name="config" required="0" unique="0"> <longdesc lang="en"> </longdesc> <shortdesc lang="en">params config</shortdesc> <content type="string" default="/etc/pgbouncer" /> </parameter>

<parameter name="user" required="0" unique="0"> <longdesc lang="en"> </longdesc> <shortdesc lang="en">user</shortdesc> <content type="string" default="postgres" /> </parameter>

</parameters>

<actions> <action name="start" timeout="20" /> <action name="stop" timeout="20" /> <action name="monitor" timeout="20" interval="10" depth="0" /> </actions> </resource-agent> END }

: ${OCF_RESKEY_config=/etc/pgbouncer/pgbouncer.ini} : ${OCF_RESKEY_binfile=/usr/sbin/pgbouncer} : ${OCF_RESKEY_user=postgres}

#######################################################################

pgbouncer_usage() { cat <<END usage: $0 {start|stop|monitor}

Expects to have a fully populated OCF RA-compliant environment set. END }

isalive_pgbouncer() { pgrep -f $OCF_RESKEY_config }

pgbouncer_monitor() { isalive_pgbouncer || return $OCF_NOT_RUNNING return $OCF_SUCCESS } pgbouncer_start() { pgbouncer_monitor if [ $? = $OCF_SUCCESS ]; then return $OCF_SUCCESS else $OCF_RESKEY_binfile -d $OCF_RESKEY_config -u $OCF_RESKEY_user fi }

pgbouncer_stop() { kill -9 `pgrep -f $OCF_RESKEY_config` }

case $__OCF_ACTION in meta-data) meta_data exit $OCF_SUCCESS ;; start) pgbouncer_start;; stop) pgbouncer_stop;; monitor) pgbouncer_monitor;; usage|help) pgbouncer_usage exit $OCF_SUCCESS ;; *) pgbouncer_usage exit $OCF_ERR_UNIMPLEMENTED ;; esac rc=$? ocf_log debug "${OCF_RESOURCE_INSTANCE} $__OCF_ACTION : $rc" exit $rc

Фишка вот в чем, если взять и убить процесс pgbouncer то он автоматом не стартует, если делать все через консоль управления:
crm resource stop/start pgbouncer или перезагружать к примеру сервер или останавливать corosync, то все ок.

Вопрос вот в чем, как сделать так, что бы он стартовал автоматом, и не надо было бы выполнть crm resource cleanup pgbouncer

Может какую проверку не указал еще? *SCRATCH*

#376638

Сам спросил, сам ответил!
изменил секцию:

text

pgbouncer_stop() {
        pgbouncer_monitor
        if [ $? = $OCF_SUCCESS ]; then
                return $OCF_SUCCESS
        else
        kill -9 `pgrep -f $OCF_RESKEY_config`
        return $OCF_SUCCESS
        fi
}
Войдите или зарегистрируйтесь, чтобы ответить.