powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Pacemaker беспрерывно перезагружает ресурс
5 сообщений из 5, страница 1 из 1
Pacemaker беспрерывно перезагружает ресурс
    #39472394
Фотография Immunitet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дано:
RHEL 7.3
двухузловой failover кластер на базе pacemaker:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
[root@Node1]# pcs cluster status
Cluster Status:
 Stack: corosync
 Current DC: Node1 (version 1.1.15-11.el7-e174ec8) - partition with quorum
 Last updated: Thu Jun 15 17:04:27 2017         Last change: Thu Jun 15 16:59:16 2017 by root via cibadmin on Node1
 2 nodes and 2 resources configured

Online: [ Node1 Node2 ]

Full list of resources:

 ClusterIP      (ocf::heartbeat:IPaddr2):       Started Node1
 My_Application     (lsb:my_script.sh):    Stopped


Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled



Здесь my_script.sh - мой самописный скрипт для запуска/остановки и контроля приложения. Параметры start/stop/monitor.
Проверял логику его работы по алгоритму из доки по RHEL
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
To test if the script satisfy the requirement of Red Hat Cluster Suite, please do the following testing:
1.	A normal start-status-stop cycle:
Raw
# Service not yet start, status return failure
$ service script_name status; echo $?
1
# Start the service, return success
$ service script_name start; echo $?
0
# Already started, status return success
$ service script_name status; echo $?
0
# Stop the service, return success
$ service script_name stop; echo $?
0
# Service is stopped, status return failure
$ service script_name status; echo $?
1
1.	Stop the service even if the service is already stopped:
Raw
# Start the service, return success
$ service script_name start; echo $?
0
# Stop the service, return success
$ service script_name stop; echo $?
0
# Stop the service again, return success
$ service script_name stop; echo $?
0
1.	Report error status when the process exit abnormally:
Raw
# Stop the service, return success
$ service script_name start; echo $?
0
# Already started, status return success
$ service script_name status; echo $?
0
# Kill the process
$ killall process_name
# The process was killed, status return failure
$ service script_name status; echo $?
1
# Stop the service even if it exited abnormally, return success
$ service script_name stop; echo $?
0



Скрипт возвращает правильные значения (0 или 1) в зависимости от состояния приложения. При этом, вижу (из лога скрипта), что pacemaker беспрерывно посылает по очереди команды start и stop этому моему скрипту.

Есть соображения куда копать? Может кто сталкивался с этим?
Отдельный вопрос: какие есть особенности по вталкиванию lsb-скрипта в кластер?
...
Рейтинг: 0 / 0
Pacemaker беспрерывно перезагружает ресурс
    #39472465
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почему вы тестируете сервис script_name
>service script_name status

а ресурс называется my_script.sh ? И он вообще сервисом сделан или нет?
>My_Application (lsb:my_script.sh)
...
Рейтинг: 0 / 0
Pacemaker беспрерывно перезагружает ресурс
    #39472805
Фотография Immunitet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторпочему вы тестируете сервис script_name
>service script_name status

Это пример из документации RHEL - я приложил его, чтобы показать логику, которую я проверял для своего скрипта. Конечно, при тестировании я использовал имя своего скрипта.

Сам скрипт расположен в /etc/init.d
Также он добавлен в кластер командой:

Код: plaintext
1.
pcs resource create My_application lsb:my_script.sh op monitor interval=40s start timeout=20s stop timeout=20s
...
Рейтинг: 0 / 0
Pacemaker беспрерывно перезагружает ресурс
    #39473007
Фотография Immunitet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раскопал проблему:
При чтении документации по добавлению ресурса в кластер увидел вот что:
Configuring the Red Hat High Availability Add-On with PacemakerFor example, the following command creates a resource with the name VirtualIP of standard ocf, provider heartbeat, and type IPaddr2. The floating address of this resource is 192.168.0.120, the system will check whether the resource is running every 30 seconds.
Код: plaintext
1.
# pcs resource create VirtualIP ocf:heartbeat:IPaddr2 ip=192.168.0.120 cidr_netmask=24 op monitor interval=30s



Потом вот такой пример:
Configuring the Red Hat High Availability Add-On with PacemakerIn the following example, there is an existing resource named dummy_resource. This command sets the failure-timeout meta option to 20 seconds, so that the resource can attempt to restart on the same node in 20 seconds.
Код: plaintext
1.
# pcs resource meta dummy_resource failure-timeout=20s 


After executing this command, you can display the values for the resource to verity that failure-timeout=20s is set.
Код: c#
1.
2.
3.
4.
5.
6.
# pcs resource show dummy_resource
 Resource: dummy_resource (class=ocf provider=heartbeat type=Dummy)
  Meta Attrs: failure-timeout=20s
  Operations: start interval=0s timeout=20 (dummy_resource-start-timeout-20)
              stop interval=0s timeout=20 (dummy_resource-stop-timeout-20)
              monitor interval=10 timeout=20 (dummy_resource-monitor-interval-10)



Из чего сделал вывод, что кластер управляет скриптом посредством команд "start/stop/monitor" и тут же исправил в своем скрипте "status" на "monitor".

Затем в логах corosync наблюдал следующее (выдержки без лишнего трафика):
corosync.logInitiating monitor operation My_application_monitor_0 locally on Node2
Result of monitor operation for My_application on Node2: 7 (not running)
Initiating start operation My_application_start_0 locally on Node2
Result of start operation for My_application on Node2: 0 (ok)
Initiating monitor operation My_application_monitor_30000 locally on Node2
Result of monitor operation for My_application on Node2: 7 (not running)
Initiating stop operation My_application_stop_0 locally on Node2 | action 2
Result of stop operation for My_application on Node2: 0 (ok)


Ну и так далее по кругу. Было очевидно, что monitor возвращает неверный ответ, хотя вручную все работает на урра.
В общем, было принято стратегическое решение "вернуть взад" параметр status вместо monitor и все завелось.

С одной стороны, я, конечно, сам дурак - в спецификации lsb нет никакого monitor. Но вот pacemaker тоже порадовал - и в параметрах команда status обозвана monitor и в логах corosync.
...
Рейтинг: 0 / 0
Pacemaker беспрерывно перезагружает ресурс
    #39473057
Фотография Immunitet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дальнейший анализ показал следующее:
Я использовал LSB-стандарт для написания скрипта, в то время как для Pacemaker приоритетным является более современный - OCF-стандарт, в котором как раз "status" изменен на "monitor".

Теперь все более-менее понятно, но... осадок остался )))
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Pacemaker беспрерывно перезагружает ресурс
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]