null

OpenDS как ресурс Open HA Cluster

Одним из вариантов повышения отказоустойчивости сервиса является интеграция его в кластерное окружение.
Данная статья посвящена некоторым вопросам конфигурации ресурсов Open HA cluster для OpenDS.
Начнем с инсталяции OpenDS. Самый простой вариант установить соответствующий пакет из репозитория OpenSolaris.
На всех нодах кластера устанавливаем пакет opends:
root@rainy:~# pkg install -v pkg:/service/network/ldap/opends@2.2.0-0.111
<cut>
root@rainy:~# pkg info pkg:/service/network/ldap/opends@2.2.0-0.111
          Name: service/network/ldap/opends
       Summary: OpenDS, an open source LDAP directory server
      Category: System/Administration and Configuration
         State: Installed
     Publisher: opensolaris.org
       Version: 2.2.0
 Build Release: 5.11
        Branch: 0.111
Packaging Date: Sat Mar  6 00:27:10 2010
          Size: 20.37 MB
          FMRI: pkg:/service/network/ldap/opends@2.2.0,5.11-0.111:20100306T002710Z
root@rainy:~#

На одной из нод кластера создаем ресурсную группу и добавляем в нее базовае ресурсы HAStoragePlus и LogicalHostname
root@rainy:~# clrg create -n rainy,cloudy openDS-rg
root@rainy:~# zpool create -m legacy openDSpool c7t0d0
root@rainy:~# zfs create -o mountpoint=/global/opends openDSpool/opends
root@rainy:~# clrs create -g openDS-rg -t HAStoragePlus -p Zpools=openDSpool openDS-stor
root@rainy:~# clrslh create -g openDS-rg openDS-lh
root@rainy:~# clrg online -M openDS-rg
root@rainy:~#

Используем созданную файловую систему для создания экземпляра OpenDS
root@rainy:~# /usr/opends/configure --instancePath /global/opends --userName root
root@rainy:~# /usr/opends/setup --cli

OpenDS Directory Server 2.2.0
Please wait while the setup program initializes...
<cut>
See /var/tmp/opends-setup-2414890264076726971.log for a detailed log of this operation.

To see basic server configuration status and configuration you can launch /usr/opends/bin/status
root@rainy:~#

Создаем скрипт для запуска, остановки и мониторинга
root@rainy:~# cat /global/opends/control_opends
#! /bin/sh
#
RES=0
case "$1" in
'start')
    /usr/opends/bin/start-ds --exec
    RES=$?
    ;;

'stop')
    echo 'yes' | /usr/opends/bin/stop-ds --exec
    RES=$?
    ;;
'probe')
    PROBE_RES=`/usr/opends/bin/status -s | grep 'Server Run Status:' | /bin/awk  '{print $4}'`
    if [ "${PROBE_RES}" = "Started" ]
    then
    RES=0
    else
    RES=100
    fi
    ;;
'validate')
    echo ''
    RES=0
    ;;
*)
    echo "Usage: $0 { start | stop | probe | validate }"
    exit 1
    ;;
esac
exit ${RES}
root@rainy:~#
На остальных нодах кластера создаем указатели на экземпляр OpenDS
root@cloudy:~# mkdir /etc/opends 
root@cloudy:~# scp kabor@rainy:/etc/opends/instance.loc /etc/opends
Password:
instance.loc         100% |***************************************|    14       00:00   
root@cloudy:~#

Теперь осталось создать ресурс для управления OpenDS
root@rainy:~# clrs create -g openDS-rg -t SUNW.gds \
    -p Scalable=false -p Resource_dependencies=openDS-stor \
    -p Network_resources_used=openDS-lh -p Port_list="4444/tcp" \
    -p Start_command="/global/opends/control_opends start" \
    -p Stop_command="/global/opends/control_opends stop" \
    -p Probe_command="/global/opends/control_opends probe" \
    -p Validate_command="/global/opends/control_opends validate" \
    -p Failover_enabled=TRUE openDS-rs
root@rainy:~#
root@rainy:~# clrs status

=== Cluster Resources ===

Resource Name       Node Name      State        Status Message
-------------       ---------      -----        --------------
<cut>
openDS-lh           rainy          Online       Online - LogicalHostname online.
                    cloudy         Offline      Offline - LogicalHostname offline.

openDS-stor         rainy          Online       Online
                    cloudy         Offline      Offline

openDS-rs           rainy          Online       Online - Service is online.
                    cloudy         Offline      Offline
<cut>
root@rainy:~#


Используя команды 'clrg switch' проверяем работоспособность ресурсной группы на всех нодах. Если все работает - то отказоустойчивость службы каталогов обеспечена.

Konstantin Borzov, Baku 2009

Коротко о себе:

Закончил Пушкинское высшее училище радиоэлектроники противовоздушной обороны (ПВУРЭ ПВО).

Служил в ВС и МВД, работал в народном хозяйстве. В настоящее время сотрудник компании Tune-It.

Привлекает решение "стандартных" задач - создание конфет из имеющегося сырья подручными средствами.

Ненавижу питерские пробки. Еще больше ненавижу общественный транспорт. В результате ежедневно пару часов провожу за рулем.