Скрипт автоматического запуска NodeManager для Oracle Linux | Securny

Скрипт автоматического запуска NodeManager для Oracle Linux

Скрипт автоматического запуска NodeManager для Oracle Linux

   Очень простой пост о том, как я запускаю НодМенеджер в операционной системе Оракл Линукс. Один из лучших скриптов для этого мне удалось найти тут: https://blogs.oracle.com/johngraves/entry/nodemanager_initd_script. Чтобы НодМенеджер автоматически стартовал при загрузке операционной системы нужно под пользователем root создать файл nodemgr в /etc/init.d следующего содержания:

#!/bin/sh
#
### BEGIN INIT INFO
# Provides: nodemanager
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: WebLogic Nodemanager
### END INIT INFO
#
# nodemgr Oracle Weblogic NodeManager service
#
# chkconfig: 345 85 15
# description: Oracle Weblogic NodeManager service
#
#
### BEGIN INIT INFO
# Provides: nodemgr
# Required-Start: $network $local_fs
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: Oracle Weblogic NodeManager service.
# Description: Starts and stops Oracle Weblogic NodeManager.
### END INIT INFO
#
# Source function library.
. /lib/lsb/init-functions
#
# set Weblogic environment defining CLASSPATH and LD_LIBRARY_PATH
# to start/stop various components.
export MW_HOME=/opt/app/wls10.3.4
#
# Note:
# The setWLSEnv.sh not only does a good job of setting the environment,
# but also advertises the fact explicitly in the console! Silence it.
#
. $MW_HOME/wlserver_10.3/server/bin/setWLSEnv.sh > /dev/null
#
# set NodeManager environment
export NodeManagerHome=$WL_HOME/common/nodemanager
NodeManagerLockFile=$NodeManagerHome/nodemanager.log.lck
#
# check JAVA_HOME
if [ -z ${JAVA_HOME:-} ]; then
export JAVA_HOME=/opt/sun/products/java/jdk1.6.0_18
fi
#
exec=$MW_HOME/wlserver_10.3/server/bin/startNodeManager.sh
prog='nodemanager'
user='weblogic'
#
is_nodemgr_running() {
local nodemgr_cnt=`ps -ef | \
grep -i 'java ' | \
grep -i ' weblogic.NodeManager ' | \
grep -v grep | \
wc -l`
echo $nodemgr_cnt
}
#
get_nodemgr_pid() {
nodemgr_pid=0
if [ `is_nodemgr_running` -eq 1 ]; then
nodemgr_pid=`ps -ef | \
grep -i 'java ' | \
grep -i ' weblogic.NodeManager ' | \
grep -v grep | \
tr -s ' ' | \
cut -d' ' -f2`
fi
echo $nodemgr_pid
}
#
check_nodemgr_status () {
local retval=0
local nodemgr_cnt=`is_nodemgr_running`
if [ $nodemgr_cnt -eq 0 ]; then
if [ -f $NodeManagerLockFile ]; then
retval=2
else
retval=3
fi
elif [ $nodemgr_cnt -gt 1 ]; then
retval=4
else
retval=0
fi
#
echo $retval
}
#
start() {
ulimit -n 65535
[ -x $exec ] || exit 5
echo -n $"Starting $prog: "
su $user -c "$exec &"
retval=$?
echo
return $retval
}
#
stop() {
echo -n $"Stopping $prog: "
kill -s 9 `get_nodemgr_pid` &> /dev/null
retval=$?
echo
[ $retval -eq 0 ] && rm -f $NodeManagerLockFile
return $retval
}
#
restart() {
stop
start
}
#
reload() {
restart
}
#
force_reload() {
restart
}
#
rh_status() {
local retval=`check_nodemgr_status`
if [ $retval -eq 0 ]; then
echo "$prog (pid:`get_nodemgr_pid`) is running..."
elif [ $retval -eq 4 ]; then
echo "Multiple instances of $prog are running..."
else
echo "$prog is stopped"
fi
return $retval
}
#
rh_status_q() {
rh_status >/dev/null 2>&1
}
#
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
restart
;;
*)
echo -n "Usage: $0 {"
echo -n "start|"
echo -n "stop|"
echo -n "status|"
echo -n "restart|"
echo -n "condrestart|"
echo -n "try-restart|"
echo -n "reload|"
echo -n "force-reload"
echo "}"
#
exit 2
esac
exit $?

   Не забудьте исправить пути в значениях переменных $MW_HOME и $JAVA_HOME. После создания файла нужно выполнить:

[root@server ~]# chkconfig --add nodemgr
[root@server ~]# chkconfig nodemgr on

   Другой вариант запуска НодМенеджера описан в документации сервера приложений Веблоджик: http://docs.oracle.com/cd/E28271_01/web.1111/e13740/java_nodemgr.htm#i10... . В этом случае запуск НодМенеджера осуществляется через службу xinitd. Чтобы настроить запуск НодМенеджера через службу xinitd, нужно под пользователем root создать файл nodemgrsvc в /etc/xinet.d следующего содержания:

# default: off
# description: nodemanager as a service
service nodemgrsvc
{
type = UNLISTED
disable = no
socket_type = stream
protocol = tcp
wait = yes
user = < username >
port = 5556
flags = NOLIBWRAP
log_on_success += DURATION HOST USERID
server = < path-to-java >/java
env = CLASSPATH=< cp > LD_LIBRARY_PATH=< ldpath >
server_args = -client -DNodeManagerHome=< NMHome > < java options >
< nodemanager options > weblogic. NodeManager -v
}

   С первыми параметрами, которые необходимо поменять, всё просто:

user = oracle
server = /oracle/jdk1.6.0_34/bin/java

   Далее чуть сложнее. Переменные $CLASSPATH и $LD_LIBRARY_PATH берутся из $MW_HOME/wlserver_10.3/server/bin/setWLSEnv.sh и $MW_HOME/wlserver_10.3/common/bin/commEnv.sh. Чтобы узнать их значения, нужно в терминале выполнить:
source /oracle/Middleware/wlserver_10.3/server/bin/setWLSEnv.sh
source /oracle/Middleware/wlserver_10.3/common/bin/commEnv.sh
echo $CLASSPATH
echo $LD_LIBRARY_PATH

   В результате этот параметр у меня выглядит так:

env = CLASSPATH=/oracle/Middleware/patch_wls1036/profiles/default/sys_manifest_classpath/weblogic_patch.jar:/oracle/Middleware/patch_ocp371/profiles/default/sys_manifest_classpath/weblogic_patch.jar:/oracle/jdk1.6.0_34/lib/tools.jar:/oracle/Middleware/wlserver_10.3/server/lib/weblogic_sp.jar:/oracle/Middleware/wlserver_10.3/server/lib/weblogic.jar:/oracle/Middleware/modules/features/weblogic.server.modules_10.3.6.0.jar:/oracle/Middleware/wlserver_10.3/server/lib/webservices.jar:/oracle/Middleware/modules/org.apache.ant_1.7.1/lib/ant-all.jar:/oracle/Middleware/modules/net.sf.antcontrib_1.1.0.0_1-0b2/lib/ant-contrib.jar: LD_LIBRARY_PATH=/oracle/Middleware/patch_wls1036/profiles/default/native:/oracle/Middleware/patch_ocp371/profiles/default/native:/oracle/Middleware/patch_wls1036/profiles/default/native:/oracle/Middleware/patch_ocp371/profiles/default/native:/oracle/Middleware/patch_wls1036/profiles/default/native:/oracle/Middleware/patch_ocp371/profiles/default/native:/oracle/Middleware/wlserver_10.3/server/native/linux/x86_64:/oracle/Middleware/wlserver_10.3/server/native/linux/x86_64/oci920_8:/oracle/Middleware/wlserver_10.3/server/native/linux/x86_64:/oracle/Middleware/wlserver_10.3/server/native/linux/x86_64/oci920_8:/oracle/Middleware/wlserver_10.3/server/native/linux/x86_64:/oracle/Middleware/wlserver_10.3/server/native/linux/x86_64/oci920_8

   Ну и остается параметр server_args. Значение параметра "-DNodeManagerHome" должно быть равным вот этому пути ${WL_HOME}/common/nodemanager, а значения для < java options > и < nodemanager options > берутся из файла $MW_HOME/wlserver_10.3/server/bin/startNodeManager.sh и должны быть равны примерно такому выражению ${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS} -Djava.security.policy="${WL_HOME}/server/lib/weblogic.policy" -Dweblogic.nodemanager.javaHome="${JAVA_HOME}". Все их можно посмотреть:

echo $JAVA_VM
echo $MEM_ARGS
echo $JAVA_OPTIONS
echo $JAVA_HOME

   В результате в моей тестовой системе это выглядит так:

server_args = -client -DNodeManagerHome=/oracle/Middleware/wlserver_10.3/common/nodemanager -Xms32m -Xmx200m -XX:MaxPermSize=128m -Dcoherence.home=/oracle/Middleware/coherence_3.7 -Dbea.home=/oracle/Middleware -Xverify:none -Xverify:none -Djava.security.policy=/oracle/Middleware/wlserver_10.3/server/lib/weblogic.policy -Dweblogic.nodemanager.javaHome=/oracle/jdk1.6.0_34 weblogic.NodeManager -v

   Теперь у нас есть полностью сконфигурированный файл /etc/xinet.d/ nodemgrsvc :

# default: off
# description:nodemanager as a service
service nodemgrsvc
{
type = UNLISTED
disable = no
socket_type = stream
protocol = tcp
wait = yes
user = oracle
port = 5556
flags = NOLIBWRAP
log_on_success += DURATION HOST USERID
server = /oracle/jdk1.6.0_34/bin/java
env = CLASSPATH=/oracle/Middleware/patch_wls1036/profiles/default/sys_manifest_classpath/weblogic_patch.jar:/oracle/Middleware/patch_ocp371/profiles/default/sys_manifest_classpath/weblogic_patch.jar:/oracle/jdk1.6.0_34/lib/tools.jar:/oracle/Middleware/wlserver_10.3/server/lib/weblogic_sp.jar:/oracle/Middleware/wlserver_10.3/server/lib/weblogic.jar:/oracle/Middleware/modules/features/weblogic.server.modules_10.3.6.0.jar:/oracle/Middleware/wlserver_10.3/server/lib/webservices.jar:/oracle/Middleware/modules/org.apache.ant_1.7.1/lib/ant-all.jar:/oracle/Middleware/modules/net.sf.antcontrib_1.1.0.0_1-0b2/lib/ant-contrib.jar: LD_LIBRARY_PATH=/oracle/Middleware/patch_wls1036/profiles/default/native:/oracle/Middleware/patch_ocp371/profiles/default/native:/oracle/Middleware/patch_wls1036/profiles/default/native:/oracle/Middleware/patch_ocp371/profiles/default/native:/oracle/Middleware/patch_wls1036/profiles/default/native:/oracle/Middleware/patch_ocp371/profiles/default/native:/oracle/Middleware/wlserver_10.3/server/native/linux/x86_64:/oracle/Middleware/wlserver_10.3/server/native/linux/x86_64/oci920_8:/oracle/Middleware/wlserver_10.3/server/native/linux/x86_64:/oracle/Middleware/wlserver_10.3/server/native/linux/x86_64/oci920_8:/oracle/Middleware/wlserver_10.3/server/native/linux/x86_64:/oracle/Middleware/wlserver_10.3/server/native/linux/x86_64/oci920_8
server_args = -client -DNodeManagerHome=/oracle/Middleware/wlserver_10.3/common/nodemanager -Xms32m -Xmx200m - XX:MaxPermSize=128m -Dcoherence.home=/oracle/Middleware/coherence_3.7 -Dbea.home=/oracle/Middleware -Xverify:none -Xverify:none -Djava.security.policy=/oracle/Middleware/wlserver_10.3/server/lib/weblogic.policy -Dweblogic.nodemanager.javaHome=/oracle/jdk1.6.0_34 weblogic.NodeManager -v
}

   Чтобы xinetd запустил НодМенеджер, нужно выполнить запрос на порт 5556, например с помощью команды " telnet имя_сервера 5556". Особенность и преимущество службы xinetd, как раз и заключается в запуске настроенных сервисов по запросу, что помогает более рационально расходовать ресурсы сервера. Такой вариант запуска НодМенеджера может быть полезен для управления Managed-серверами Веблоджика. Проверить наличие запущенного НодМенеджера можно следующим образом:

[root@server ~]# ps -ef | grep java
oracle 3606 2753 89 13:19 ? 00:00:04 java -client -DNodeManagerHome=/oracle/Middleware/wlserver_10.3/common/nodemanager -Xms32m -Xmx200m -XX:MaxPermSize=128m -DListenPort=5556 -Dcoherence.home=/oracle/Middleware/coherence_3.7 -Dbea.home=/oracle/Middleware -Xverify:none -Xverify:none -Djava.security.policy=/oracle/Middleware/wlserver_10.3/server/lib/weblogic.policy -Dweblogic.nodemanager.javaHome=/oracle/jdk1.6.0_34 weblogic.NodeManager -v

   После успешного запуска НодМенеджера, он сам запустит нужные серверы Веблоджика (АдминСервер и управляемые серверы). О том, как это сделать, я расскажу в одном из следующих постов.

Оставить комментарий