Автор: Худяков Андрей
Тема: Обеспечение высокой доступности сервера EM Grid Control
Источник: Russian Oracle User Group
Номер документа: 6.1
Дата публикации: 23.06.2009
Последнее изменение: 23.06.2009
В документе Note 405642.1 представленна инструкция,
которая описывает конфигурацию OMS Grid Control в среде Active/Passive используя виртуальный хост и разделяемы диски.
Цель данной работы является реализация OMS Grid Control в среде Active/Passive, используя методы отказоустойчивости,
предоставляемые Oracle Clusterware, при этом не используя разделяемые диски.
В качестве платформы использована ОС Enterprise Linux Server release 5.3, на которую установлен Oracle RAC 10.2.0.4 c использование ASM. Кластерная среда после установки имеет следующие параметры
Node1 Node2 Name Cluster1 Cluster2 Public IP 10.1.11.234 10.1.11.235 Virtual name Cluster1-vip Cluster2-vip Virtual IP 10.1.11.239 10.1.11.240 Private name Cluster1-priv Cluster2-priv Private IP 10.1.10.210 10.1.10.211Установка и настройка OMS
Перед тем, как преступить к установке ОМS, "создадим" виртуальный IP-адрес (cluster-vip 10.1.11.236), который буде служить "реальным хостом" для ОМС. Для обеспечения отказоустойчивости cluster-vip, создадим профиль для ресурса, который будет контролировать виртуальный IP, используя команду crs_profile.
-bash-3.2$ crs_profile -create oms_ip -t application -a /u01/app/crs/bin/usrvip -o oi=eth0,ov=10.1.11.236,on=255.255.255.0Команда создаст файл oms_ip.cap в директории $ORA_CRS_HOME/crs/public с параметрами, которые будут нужны для регистрации ресурса oms_ip. Проверяем на наличие и соответствующие права
-bash-3.2$ ls -la /u01/app/crs/crs/public/oms_ip.cap -rw-r--r-- 1 oracle oinstall 771 May 22 16:03 /u01/app/crs/crs/public/oms_ip.capПараметры команды следующие:
/u01/app/crs/bin/usrvip - определяет, каким скриптом будет контролироваться сетевой интерфейс oi=eth1,ov=192.168.23.20,on=255.255.255.0 - определяют параметры интерфейса.После конфигурации регистрируем ресурс
bash-3.2$ crs_register oms_ipПосле регистрации ресурса изменяем владельца ресурса, а также даем права на выполнение данного «скрипта» пользователю oracle. (as root)
bash-3.2$ $ORA_CRS_HOME/bin/crs_setperm oms_ip -o root bash-3.2$ $ORA_CRS_HOME/bin/crs_setperm oms_ip -u user:oracle:r-xПосле того, как ресурс зарегистрирован, необходимо перенести конфигурационные файлы на остальные ноды кластера.
bash-3.2$ scp $ORA_CRS_HOME/crs/public/* cluster2:$ORA_CRS_HOME/crs/public/Далее стартуем ресурс на ноде cluster1
bash-3.2$ crs_start oms_ip -с cluster1 Attempting to start `oms_ip` on member `cluster2` Start of `oms_ip` on member `cluster2` succeeded.. The resource is started.После того, как cluster-vip поднят, подсоединяемся к этому адресу, и устанавливаем OMS.
bash-3.2$ $AGENT_HOME/bin/emctl stop agent bash-3.2$ $OMS_HOME/opmn/bin/opmnctl stopallПосле успешной остановки производим обновление OMS до 10.2.0.5 (optional) , а так же производим удаление агента, который был установлен вместе с OMS. После обновления опять останавливаем все сервисы OMS. После того как все операции на Cluster1 завершены, «опускаем» cluster-vip и поднимаем его на ноде Cluster2.
bash-3.2$ crs_relocate oms_ipДалее опять подсоединяемся к cluster-vip и устанавливаем Additional OMS (чтобы не уничтожить уже существующий репозиторий). В качестве хоста, на котором расположена БД репозитория, указываем cluster2-vip. После того как, установка OMS и агента завершена, останавливаем сервисы агента и OMS.
После успешной остановки производим обновление OMS до 10.2.0.5(Additional и Main OMS должны быть одной версии) , и производим удаление агента, который был установлен вместе с OMS. После обновления опять останавливаем все сервисы OMS. После того, как OMS успешно установлен на обоих нодах кластера, необходимо реконфигурировать secure OMS на виртуальный хост (cluster-vip) используя команду
bash-3.2$ emctl secure oms -sysman_pwd _sysman_pwd -reg_pwd _agent_reg_pwd - host _slb_full_name -secure_port _port_num _sysman_pwd - пароль пользователя SYSMAN _agent_reg_pwd - пароль для доступа к https-порту OMS для агента _slb_full_name - виртуальный хост (cluster-vip) _port_num - порт для https доступаДанную команду необходимо запустить поочередно на каждой из нод, предварительно подняв на ней cluster-vip и запустив OMS ($OMS_HOME/opmn/bin/opmnctl startall).
1. bash-3.2$ shh oracle@cluster1 2. bash-3.2$ crs_relocate oms_ip #последний раз ресурс был поднят на ноде cluster2 3. bash-3.2$ $OMS_HOME/opmn/bin/opmnctl startall 4. bash-3.2$ emctl secure oms -sysman_pwd _sysman_pwd -reg_pwd _agent_reg_pwd -host cluster-vip -secure_port 1159 5. bash-3.2$ $OMS_HOME/opmn/bin/opmnctl stopall 6. bash-3.2$ crs_relocate oms_ip 7. bash-3.2$ shh oracle@cluster2 8. ………(пункты 3, 4)После того, как OMS переконфигурирован на виртуальный хост, устанавливаем на ноды Cluster1 и Cluster2 агентов (в Local installation), и в качестве хоста OMS указываем cluster-vip.
Регистрация OMS в Clusterware
Создадим профиль для регистрации сервисов OMS
bash-3.2$ crs_profile -create oms-grid -t application -B $OMS_HOME/opmn/bin/opmn -d \ "OMS Grid Control" -r oms_ip -p favored -h "cluster1 cluster2" -a oms.scr -o ci=30,ra=5,st=200После создания профиля, в папке $ORA_CRS_HOME/crs/public появился файл oms.scr, который генерируется автоматически CRS-ом из шаблона при условии указания параметра -В Редактируем oms.scr следующим образом
export OMS_HOME=.... #указываем полный путь к OMS home
PROBE_PROCS="HTTP_Server home OC4J_EMPROV OC4J_EM OCMRepeater WebCache WebCacheAdmin" # перечень копонентов, необходимых для функционирования OMS
START_APPCMD="$OMS_HOME/opmn/bin/opmnctl startall" #необходимо прописать полный путь без переменных
STOP_APPCMD="$OMS_HOME/opmn/bin/opmnctl stopall" #необходимо прописать полный путь без переменных
#-- закоментируем дефолтную функцию getpid и определим собственную
#getpid () {
# if [ -n "$1" ]; then
# GETMYPID=$1
# shift
# /bin/ps -e -o pid,comm | while read mypid command args
# do
# if [ "$command" = "$GETMYPID" ]; then
# echo "$mypid"
# fi
# done
# fi
#}
getpid () {
if [ -n "$1" ]; then
process=$1
pid=`$OMS_HOME/opmn/bin/opmnctl status process-type=$process -fmt %pid -noheaders | tr -d ' '`
echo "$pid"
fi
}
#-- функцию checkdaemon также закоментируем. Вместо нее будет использоваться фунция checkprocess
#checkdaemon () {
# R=`getpid $1 | wc -l`
# return $R
#}
checkprocess ()
{
proc=$1
comp=`$OMS_HOME/opmn/bin/opmnctl status process-type=$proc -fmt %prt%sta -noheaders`
case "$comp" in
"$proc | Alive" ) R=0 ;;
"$proc | Down" ) R=1 ;;
*) R=666 ;;
esac
return $R
}
# функцию zapdaemon отредактируем основываясь на изменениях, внесенных ранее
zapdaemon () {
typeset ret=0
for i in ${1}
do
#checkdaemon ${i}
checkprocess ${i}
#if [ $? -ne 0 ]; then
if [ $? -eq 0 ]; then
kill `getpid ${i}`
#checkdaemon ${i}
checkprocess ${i}
#if [ $? -ne 0 ]; then
if [ $? -eq 0 ]; then
kill -9 `getpid ${i}`
#checkdaemon ${i}
checkprocess ${i}
#if [ $? -ne 0 ]; then
if [ $? -eq 0 ]; then
postevent $ERROR_PRIORITY "${i}: stuck - could not kill -KILL"
ret=1
else
postevent $ERROR_PRIORITY "${i}: killed with -KILL"
fi
else
postevent "" "${i}: killed"
fi
fi
done
return $ret
}
# функцию probeapp так же отредактируем
probeapp () {
#checkdaemon $1
checkprocess $1
#if [ $? -ne 0 ]; then
if [ $? -eq 0 ]; then
postevent $DEBUG_PRIORITY "$1 check OK"
return 0
else
postevent $DEBUG_PRIORITY "$1 check failed"
return 1
fi
}
После регистрируем oms-grid
bash-3.2$ crs_register oms-gridИ изменяем права и владельца ресурса
bash-3.2$ $ORA_CRS_HOME/bin/crs_setperm oms-grid -o root bash-3.2$ $ORA_CRS_HOME/bin/crs_setperm oms-grid -u user:oracle:r-xПосле того, как ресурс зарегистрирован, необходимо перенести конфигурационные файлы на остальные ноды кластера.
bash-3.2$ scp $ORA_CRS_HOME/crs/public/* cluster2:$ORA_CRS_HOME/crs/public/Перед тем как предпринимать старт ресурса, необходимо что все сервисы ompn остановлены. То есть, необходимо выполнить $OMS_HOME/opmn/bin/opmnctl stopall на каждой ноде. Так же, предварительно можно «потушить» виртуальный хост cluster-vip После чего запускаtv ресурс oms-grid
bash-3.2$ crs_stat -t Name Type Target State Host ------------------------------------------------------------ oms-grid application OFFLINE OFFLINE oms_ip application OFFLINE OFFLINE ora....P1.inst application ONLINE ONLINE cluster1 ora....P2.inst application ONLINE ONLINE cluster2 ora.REP.db application ONLINE ONLINE cluster2 ora....SM1.asm application ONLINE ONLINE cluster1 ora....R1.lsnr application ONLINE ONLINE cluster1 ora....er1.gsd application ONLINE ONLINE cluster1 ora....er1.ons application ONLINE ONLINE cluster1 ora....er1.vip application ONLINE ONLINE cluster1 ora....SM2.asm application ONLINE ONLINE cluster2 ora....R2.lsnr application ONLINE ONLINE cluster2 ora....er2.gsd application ONLINE ONLINE cluster2 ora....er2.ons application ONLINE ONLINE cluster2 ora....er2.vip application ONLINE ONLINE cluster2 bash-3.2$ crs_start oms-grid Attempting to start `oms_ip` on member `cluster1` Start of `oms_ip` on member `cluster1` succeeded. Attempting to start `oms-grid` on member `cluster1` Start of `oms-grid` on member `cluster1` succeeded. bash-3.2$ crs_stat -t Name Type Target State Host ------------------------------------------------------------ oms-grid application ONLINE ONLINE cluster1 oms_ip application ONLINE ONLINE cluster1 ora....P1.inst application ONLINE ONLINE cluster1 ora....P2.inst application ONLINE ONLINE cluster2 ora.REP.db application ONLINE ONLINE cluster2 ora....SM1.asm application ONLINE ONLINE cluster1 ora....R1.lsnr application ONLINE ONLINE cluster1 ora....er1.gsd application ONLINE ONLINE cluster1 ora....er1.ons application ONLINE ONLINE cluster1 ora....er1.vip application ONLINE ONLINE cluster1 ora....SM2.asm application ONLINE ONLINE cluster2 ora....R2.lsnr application ONLINE ONLINE cluster2 ora....er2.gsd application ONLINE ONLINE cluster2 ora....er2.ons application ONLINE ONLINE cluster2 ora....er2.vip application ONLINE ONLINE cluster2