Как использовать Pacemaker для перезапуска httpd

У нас есть два сервера с настройкой Pacemaker (crm), которая включает основной/резервный кластер. В настоящее время есть две службы, контролируемые/отслеживаемые Pacemaker, которые, если одна из них выйдет из строя, вызовет отработку отказа на резервную службу, нашу собственную специальную службу (далее называемую customservice1) и mysql.

customservice1 и mysql остановлены на резервном сервере и работают на основном (очевидно). Когда происходит аварийное переключение, кажется, что кардиостимулятор остановит оба (или обеспечит их остановку, если по какой-то причине произошел сбой только одного, я не совсем понимаю этот момент), изменит IP-адрес основного и резервного (так, чтобы псевдоним в DNS всегда будет идти к основному), затем запустите customservice1 и mysql на том, что ранее было резервным.

Я хотел бы добавить к этому шаг, управляемый кардиостимулятором, который будет просто перезапускать httpd всякий раз, когда происходит аварийное переключение. В настоящее время httpd постоянно работает как на основном, так и на резервном сервере. Сбой в httpd в настоящее время не вызывает отработки отказа, и я не очень заинтересован в добавлении этого мониторинга, я просто хочу, чтобы кардиостимулятор запускал эквивалент «перезапуска службы httpd», когда резервный сервер становится основным.

Каков правильный синтаксис для добавления нового примитива, который только перезапускает службу?

Текущая конфигурация кардиостимулятора приведена ниже:

node $id="XX" some.machine.name \
        attributes standby="off"
node $id="YY" another.machine.name
primitive customservice1 lsb:customservice1 \
        op monitor interval="30s" timeout="30s" \
        op start interval="0" timeout="120" \
        op stop interval="0" timeout="120" \
        meta target-role="Started"
primitive mysql-server ocf:heartbeat:mysql \
        params binary="/usr/bin/mysqld_safe" config="/etc/my.cnf" datadir="/some/data/dir" user="mysql" pid="/var/lib/mysql/mysql.pid" socket="/var/lib/mysql/mysql.sock" \
        op monitor interval="30s" timeout="30s" \
        op start interval="0" timeout="120" \
        op stop interval="0" timeout="120"
primitive node1-stonith stonith:external/riloe \
        params hostlist="some.machine.name" ilo_user="Administrator" ilo_hostname="some-ilo.machine.name" ilo_password="<ilopassword>" ilo_can_reset="1" ilo_protocol="2.0" ilo_powerdown_method="button" \
        op monitor interval="120s" timeout="40s" \
        meta target-role="Started"
primitive node2-stonith stonith:external/riloe \
        params hostlist="another.machine.name" ilo_user="Administrator" ilo_hostname="another-ilo.machine.name" ilo_password="<ilopassword>" ilo_can_reset="1" ilo_protocol="2.0" ilo_powerdown_method="button" \
        op monitor interval="120s" timeout="40s" \
        meta target-role="Started"
primitive node_one_ip ocf:heartbeat:IPaddr2 \
        params ip="1.1.1.1" cidr_netmask="255.255.255.0" nic="eth0" \
        op monitor interval="40s" timeout="20s"
primitive node_two_ip ocf:heartbeat:IPaddr2 \
        params ip="1.1.1.2" cidr_netmask="255.255.255.0" nic="eth0" \
        op monitor interval="40s" timeout="20s" \
        meta target-role="Started"
group only-group node_one_ip mysql-server customservice1
property $id="cib-bootstrap-options" \
        dc-version="1.0.9-89bd754939df5150de7cd76835f98fe90851b677" \
        cluster-infrastructure="Heartbeat" \
        no-quorum-policy="ignore" \
        last-lrm-refresh="1287686604" \
        default-resource-stickiness="1"

person twilbrand    schedule 16.08.2011    source источник


Ответы (2)


Чтобы Pacemaker мог это сделать, вам нужно поставить http-сервер под контроль Pacemaker, а затем создать ограничение порядка между группой и http-демоном. По памяти вам нужно убедиться, что оценка> 0 в ограничении.

В противном случае вам нужно будет изменить сценарий существующего ресурса, чтобы при необходимости перезапустить httpd.

person Beekhof    schedule 17.08.2011
comment
Означает ли перевод http-сервера под контроль Pacemaker нечто большее, чем добавление для него примитива? Предполагая, что нет, могу ли я просто сделать свой новый примитив членом существующей группы? На самом деле нет порядка, который нужно соблюдать в отношении httpd по сравнению с другими членами группы, но я, вероятно, просто сделаю это первым. - person twilbrand; 18.08.2011

Вам нужно добавить примитив httpd на Pacemaker :

primitive apache2 ocf:heartbeat:apache \
    params configfile="/etc/apache2/apache2.conf" \
    op monitor interval="30s" timeout="20s" \
    op start interval="0" timeout="40s" \
    op stop interval="0" timeout="60s"

Или, если вы хотите использовать скрипт LSB:

primitive apache2 lsb:apache2 \
     op monitor interval="30s" timeout="20s" \
     op start interval="0" timeout="40s" \ 
     op stop interval="0" timeout="60s"

И добавьте «apache2» в свою группу «только группа» (заботьтесь о порядке)

group only-group node_one_ip mysql-server customservice1 apache2
person Cedrik    schedule 31.07.2013