Weblogic Server Auto Restart with Node Manager as Linux service

Sometimes servers need to reboot and then it’s nice to have certain services to start automatically. Oracle Weblogic’s Node Manager is one of them and in order to have Node Manager start automatically it must be configured as a daemon. Unfortunately Oracle doesn’t provide init scripts to run it as a Linux service but it’s pretty simple to create your own startup scripts. Just create a new nodemgr script under /etc/init.d/, add it as a service and you’re done, as Oracle Fusion Middleware -blog writes.

For example on Red Hat Enterprise Linux Server 5.6 with Oracle Weblogic Server 10.3.5 the /etc/init.d/nodemgr looks like this (edit the script to reflect your Weblogic installation path):


#!/bin/sh
#
# 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

. /etc/rc.d/init.d/functions

# Your WLS home directory (where wlserver_10.3 is)
export MW_HOME="/oracle/product/mw11g"
export JAVA_HOME="/oracle/java/jdk1.6.0_29"
DAEMON_USER="oracle"
PROCESS_STRING="^.*/oracle/product/mw11g/.*weblogic.NodeManager.*"

source $MW_HOME/wlserver_10.3/server/bin/setWLSEnv.sh > /dev/null
export NodeManagerHome="$WL_HOME/common/nodemanager"
NodeManagerLockFile="$NodeManagerHome/nodemanager.log.lck"

PROGRAM="$MW_HOME/wlserver_10.3/server/bin/startNodeManager.sh"
SERVICE_NAME=`/bin/basename $0`
LOCKFILE="/var/lock/subsys/$SERVICE_NAME"

RETVAL=0

start() {
        OLDPID=`/usr/bin/pgrep -f $PROCESS_STRING`
        if [ ! -z "$OLDPID" ]; then
            echo "$SERVICE_NAME is already running (pid $OLDPID) !"
            exit
        fi

        echo -n $"Starting $SERVICE_NAME: "
        /bin/su $DAEMON_USER -c "$PROGRAM &"

        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch $LOCKFILE
}

stop() {
        echo -n $"Stopping $SERVICE_NAME: "
        OLDPID=`/usr/bin/pgrep -f $PROCESS_STRING`
        if [ "$OLDPID" != "" ]; then
            /bin/kill -TERM $OLDPID
        else
            /bin/echo "$SERVICE_NAME is stopped"
        fi
        echo
        /bin/rm -f $NodeManagerLockFile
        [ $RETVAL -eq 0 ] && rm -f $LOCKFILE

}

restart() {
        stop
        sleep 10
        start
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart|force-reload|reload)
        restart
        ;;
  condrestart|try-restart)
        [ -f $LOCKFILE ] && restart
        ;;
  status)
        OLDPID=`/usr/bin/pgrep -f $PROCESS_STRING`
        if [ "$OLDPID" != "" ]; then
            /bin/echo "$SERVICE_NAME is running (pid: $OLDPID)"
        else
            /bin/echo "$SERVICE_NAME is stopped"
        fi
        RETVAL=$?
        ;;
  *)
        echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}"
        exit 1
esac

exit $RETVAL


Add the Node Manager to start after server reboot:

# chmod +x /etc/init.d/nodemgr
# chkconfig --add nodemgr
# chkconfig --list
nodemgr         0:off   1:off   2:off   3:on    4:on    5:on    6:off

Also now the Node Manager can be controlled via the service command (e.g. service nodemgr restart).

When you have the Node Manager restarting automatically after a system reboot, you can also have Weblogic managed servers automatically restarted by Node Manager. Managed servers will be restarted only if they were running at the time the shutdown was issued. Just activate the Auto Restart option in the Administration Console (Environment > Servers > selected server > Health Monitoring) and you might also need to set the CrashRecoveryEnabled to “true” in $WL_HOME/wlserver_10.3/common/nodemanager/nodemanager.properties.

With little scripting and configuration your sysadmin tasks have now become a little easier.


Posted

in

by

Comments

5 responses to “Weblogic Server Auto Restart with Node Manager as Linux service”

  1. Bhargav K Avatar
    Bhargav K

    I am using this script in RHEL Linux 5.6 with /etc/init.d path. when i reboot, the nodemanager is not starting automatically. kindly any one let me the solutions. i given every path correctly.

    please assist me. Thanks in Advance…

  2. User1 Avatar
    User1

    The error is due to the wrong hostname set in Listen Address feild.

    1. Nicolas Avatar
      Nicolas

      I have the same error. If I execute “service nodemgr start” or “service nodemgr restart” or “service nodemgr stop” the error is “SEVERE: Fatal error in node manager server java.net.UnknownHostException: start: Name or service not known”. I have in my nodemanager.properties the option ListenAddress set. But I don’t know why when the system tries to init the service, executes the option “service … start” and aparently ignores the nodemanager.properties…. Any solution?

  3. Daniel Avatar
    Daniel

    I tried to use your solution and I did install it as a service.
    But on my tests trying to start, stop, restart and get the status with the command
    service nodemgr start I get this

    v121d058:/dsv/dba:service nodemgr start
    ++ CLASSPATH=/u01/app/oracle/middleware/11g/patch_wls1036/profiles/default/sys_manifest_classpath/weblogic_patch.jar:/u01/app/oracle/middleware/11g/patch_ocp371/profiles/default/sys_manifest_classpath/weblogic_patch.jar:/u01/app/oracle/middleware/java/jrockit-jdk1.6.0_45-R28.2.7-4.1.0/lib/tools.jar:/u01/app/oracle/middleware/11g/wlserver_10.3/server/lib/weblogic_sp.jar:/u01/app/oracle/middleware/11g/wlserver_10.3/server/lib/weblogic.jar:/u01/app/oracle/middleware/11g/modules/features/weblogic.server.modules_10.3.6.0.jar:/u01/app/oracle/middleware/11g/wlserver_10.3/server/lib/webservices.jar:/u01/app/oracle/middleware/11g/modules/org.apache.ant_1.7.1/lib/ant-all.jar:/u01/app/oracle/middleware/11g/modules/net.sf.antcontrib_1.1.0.0_1-0b2/lib/ant-contrib.jar::/u01/app/oracle/middleware/11g
    ++ ‘[‘ ‘!’ -z ” ‘]’
    ++ ‘[‘ ‘!’ -z ” ‘]’
    ++ export CLASSPATH
    ++ export PATH
    ++ cd /u01/app/oracle/middleware/11g/wlserver_10.3/common/nodemanager
    ++ set -x
    ++ ‘[‘ ” ‘!=’ ” ‘]’
    ++ ‘[‘ start ‘!=’ ” ‘]’
    ++ /u01/app/oracle/middleware/java/jrockit-jdk1.6.0_45-R28.2.7-4.1.0/bin/java -jrockit -Xms128m -Xmx256m -Dcoherence.home=/u01/app/oracle/middleware/11g/coherence_3.7 -Dbea.home=/u01/app/oracle/middleware/11g -Xverify:none -Djava.security.policy=/u01/app/oracle/middleware/11g/wlserver_10.3/server/lib/weblogic.policy -Dweblogic.nodemanager.javaHome=/u01/app/oracle/middleware/java/jrockit-jdk1.6.0_45-R28.2.7-4.1.0 -DListenAddress=start weblogic.NodeManager -v

    Nov 1, 2013 4:17:57 PM weblogic.nodemanager.server.NMServerConfig initDomainsMap
    INFO: Loading domains file: /u01/app/oracle/middleware/11g/wlserver_10.3/common/nodemanager/nodemanager.domains

    Nov 1, 2013 4:17:57 PM weblogic.nodemanager.server.NMServer
    INFO: Loaded node manager configuration properties from ‘/u01/app/oracle/middleware/11g/wlserver_10.3/common/nodemanager/nodemanager.properties’
    Node manager v10.3

    Configuration settings:

    NodeManagerHome=/u01/app/oracle/middleware/11g/wlserver_10.3/common/nodemanager
    ListenAddress=start
    ListenPort=5556
    ListenBacklog=50
    SecureListener=false
    AuthenticationEnabled=true
    NativeVersionEnabled=true
    CrashRecoveryEnabled=true
    JavaHome=/u01/app/oracle/middleware/java/jrockit-jdk1.6.0_45-R28.2.7-4.1.0/jre
    StartScriptEnabled=true
    StopScriptEnabled=false
    StartScriptName=startWebLogic.sh
    StopScriptName=
    LogFile=/u01/app/oracle/middleware/11g/wlserver_10.3/common/nodemanager/nodemanager.log
    LogLevel=INFO
    LogLimit=0
    LogCount=1
    LogAppend=true
    LogToStderr=true
    LogFormatter=weblogic.nodemanager.server.LogFormatter
    DomainsFile=/u01/app/oracle/middleware/11g/wlserver_10.3/common/nodemanager/nodemanager.domains
    DomainsFileEnabled=true
    StateCheckInterval=500
    UseMACBroadcast=false
    DomainRegistrationEnabled=false
    DomainsDirRemoteSharingEnabled=false

    Domain name mappings:

    dwcc_domain -> /u01/app/oracle/domains/dwcc_domain

    Nov 1, 2013 4:17:58 PM weblogic.nodemanager.server.AbstractServerManager log
    INFO: Startup configuration properties loaded from “/u01/app/oracle/domains/dwcc_domain/servers/IBR_server2/data/nodemanager/startup.properties”

    Nov 1, 2013 4:17:59 PM weblogic.nodemanager.server.AbstractServerManager log
    INFO: Resume monitoring of active server process (pid = 21402)

    Nov 1, 2013 4:17:59 PM weblogic.nodemanager.server.AbstractServerManager log
    INFO: Initializing ServerMonitor for weblogic.nodemanager.server.ServerManager@1e60fe07 : with config : weblogic.nodemanager.common.StartupConfig@1e6d111a

    Nov 1, 2013 4:17:59 PM weblogic.nodemanager.server.AbstractServerManager log
    INFO: Startup configuration properties loaded from “/u01/app/oracle/domains/dwcc_domain/servers/UCM_server2/data/nodemanager/startup.properties”

    Nov 1, 2013 4:17:59 PM weblogic.nodemanager.server.AbstractServerManager log
    INFO: Resume monitoring of active server process (pid = 26020)

    Nov 1, 2013 4:17:59 PM weblogic.nodemanager.server.AbstractServerManager log
    INFO: Initializing ServerMonitor for weblogic.nodemanager.server.ServerManager@1e6d262c : with config : weblogic.nodemanager.common.StartupConfig@1e6d39ac

    java.net.UnknownHostException: start
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
    at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:876)
    at java.net.InetAddress.getAddressFromNameService(InetAddress.java:1229)
    at java.net.InetAddress.getAllByName0(InetAddress.java:1180)
    at java.net.InetAddress.getAllByName(InetAddress.java:1110)
    at java.net.InetAddress.getAllByName(InetAddress.java:1046)
    at java.net.InetAddress.getByName(InetAddress.java:996)
    at weblogic.nodemanager.server.Listener.(Listener.java:34)
    at weblogic.nodemanager.server.NMServer.start(NMServer.java:203)
    at weblogic.nodemanager.server.NMServer.main(NMServer.java:382)
    at weblogic.NodeManager.main(NodeManager.java:31)

    Nov 1, 2013 4:17:59 PM weblogic.nodemanager.server.NMServer main
    SEVERE: Fatal error in node manager server
    java.net.UnknownHostException: start
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
    at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:876)
    at java.net.InetAddress.getAddressFromNameService(InetAddress.java:1229)
    at java.net.InetAddress.getAllByName0(InetAddress.java:1180)
    at java.net.InetAddress.getAllByName(InetAddress.java:1110)
    at java.net.InetAddress.getAllByName(InetAddress.java:1046)
    at java.net.InetAddress.getByName(InetAddress.java:996)
    at weblogic.nodemanager.server.Listener.(Listener.java:34)
    at weblogic.nodemanager.server.NMServer.start(NMServer.java:203)
    at weblogic.nodemanager.server.NMServer.main(NMServer.java:382)
    at weblogic.NodeManager.main(NodeManager.java:31)

    Why?

    1. Hector T. Avatar
      Hector T.

      Hi,

      if you put ListenAddress=”start” that means the machine name is “start” so is that name in DNS or in host file (/etc/hosts) to decode the name to IP?

      Regards,
      HT

Leave a Reply to Daniel Cancel reply

Your email address will not be published. Required fields are marked *