Skip to main content

Добавление кастомного ресурса в Oracle Clusterware: практическое руководство

Введение

Oracle Clusterware (ранее известный как Oracle Cluster Ready Services) предоставляет надежную платформу для управления высокодоступными приложениями в кластерной среде. В некоторых случаях возникает необходимость интегрировать в кластер пользовательские приложения или сервисы, которые не являются стандартными компонентами Oracle. В этой статье рассмотрим пошаговый процесс добавления кастомного ресурса в кластерную инфраструктуру.

Преимущества интеграции кастомных ресурсов

  • Автоматический запуск и остановка приложения при переключении узлов
  • Мониторинг состояния приложения кластером
  • Интеграция в общую систему управления кластером
  • Зависимости между ресурсами для корректного порядка запуска

Подготовительные шаги

1. Настройка прав sudo для сервисного пользователя

Создаем файл конфигурации sudo для пользователя grid:

sudo visudo -f /etc/sudoers.d/custom_service

Добавляем содержимое:

# Sudo permissions for service user to manage custom_service
Defaults:grid !requiretty

Cmnd_Alias CUSTOM_SERVICE_CTL = \
    /usr/bin/systemctl start custom_service.service, \
    /usr/bin/systemctl stop custom_service.service, \
    /usr/bin/systemctl is-active --quiet custom_service.service

grid ALL=(root) NOPASSWD: CUSTOM_SERVICE_CTL

2. Создание враппер-скриптов

Создаем скрипты-обертки для управления сервисом:

/usr/local/bin/cs_start.sh:

#!/bin/bash
exec /usr/bin/sudo /usr/bin/systemctl start custom_service.service

/usr/local/bin/cs_stop.sh:

#!/bin/bash
exec /usr/bin/sudo /usr/bin/systemctl stop custom_service.service

/usr/local/bin/cs_check.sh:

#!/bin/bash
exec /usr/bin/sudo /usr/bin/systemctl is-active --quiet custom_service.service

3. Настройка прав доступа к скриптам

chown root:root /usr/local/bin/cs_start.sh /usr/local/bin/cs_stop.sh /usr/local/bin/cs_check.sh
chmod 755 /usr/local/bin/cs_start.sh /usr/local/bin/cs_stop.sh /usr/local/bin/cs_check.sh

Интеграция с Oracle Clusterware

4. Создание пользовательского типа ресурса

crsctl add resourcegrouptype custom_app_type -basetype cluster_resourcegroup

5. Добавление ресурсной группы

crsctl add resourcegroup custom_service_rg -type custom_app_type

6. Создание ресурса в кластере

crsctl add resource custom_service \
  -type generic_application \
  -group custom_service_rg \
  -attr "START_PROGRAM='/usr/local/bin/cs_start.sh', \
STOP_PROGRAM='/usr/local/bin/cs_stop.sh', \
CLEAN_PROGRAM='/usr/local/bin/cs_stop.sh', \
CHECK_PROGRAMS='/usr/local/bin/cs_check.sh'"

7. Настройка зависимостей ресурса

Указываем зависимости от других ресурсов кластера (в примере - от группы ASM):

crsctl modify resourcegroup custom_service_rg -attr "START_DEPENDENCIES='hard(ora.asmgroup)'"

Тестирование конфигурации

Запуск ресурса

crsctl start resource custom_service

Ожидаемый результат:

CRS-2672: Attempting to start 'custom_service' on 'node01'
CRS-2676: Start of 'custom_service' on 'node01' succeeded

Проверка статуса

crsctl status resource custom_service -t

Ожидаемый результат:

--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
custom_service(custom_service_rg)
      1        ONLINE  ONLINE       node01                   STABLE
--------------------------------------------------------------------------------

Остановка ресурса

crsctl stop resourcegroup custom_service_rg

Ожидаемый результат:

CRS-33673: Attempting to stop resource group 'custom_service_rg' on server 'node01'
CRS-2673: Attempting to stop 'custom_service' on 'node01'
CRS-2677: Stop of 'custom_service' on 'node01' succeeded

Рекомендации и лучшие практики

  1. Тестирование отказоустойчивости - убедитесь, что ресурс корректно перезапускается при переключении узлов
  2. Логирование - настройте детальное логирование для диагностики проблем
  3. Таймауты - при необходимости настройте параметры времени ожидания для операций
  4. Зависимости - тщательно продумайте зависимости между ресурсами

Заключение

Интеграция кастомных приложений в Oracle Clusterware позволяет создать единую систему управления всеми критически важными компонентами инфраструктуры. Представленная методика обеспечивает надежное функционирование пользовательских сервисов в высокодоступной среде с минимальными затратами на администрирование.