|
| 1 | +#!/bin/bash |
| 2 | + |
| 3 | +domain_uid=$1 |
| 4 | +server_name=$2 |
| 5 | +domain_name=$3 |
| 6 | +as_name=$4 |
| 7 | +as_port=$5 |
| 8 | +as_hostname=$1-$4 |
| 9 | + |
| 10 | +echo "debug arguments are $1 $2 $3 $4 $5" |
| 11 | + |
| 12 | +nmProp="/u01/nodemanager/nodemanager.properties" |
| 13 | + |
| 14 | +# TODO: parameterize shared home and domain name |
| 15 | +export DOMAIN_HOME=/shared/domain/$domain_name |
| 16 | + |
| 17 | +# |
| 18 | +# Create a folder |
| 19 | +# $1 - path of folder to create |
| 20 | +function createFolder { |
| 21 | + mkdir -m 777 -p $1 |
| 22 | + if [ ! -d $1 ]; then |
| 23 | + fail "Unable to create folder $1" |
| 24 | + fi |
| 25 | +} |
| 26 | + |
| 27 | +# Function to create server specific scripts and properties (e.g startup.properties, etc) |
| 28 | +# $1 - Domain UID |
| 29 | +# $2 - Server Name |
| 30 | +# $3 - Domain Name |
| 31 | +# $4 - Admin Server Hostname (only passed for managed servers) |
| 32 | +# $5 - Admin Server port (only passed for managed servers) |
| 33 | +function createServerScriptsProperties() { |
| 34 | + |
| 35 | + # Create nodemanager home for the server |
| 36 | + srvr_nmdir=/u01/nodemanager |
| 37 | + createFolder ${srvr_nmdir} |
| 38 | + cp /shared/domain/$3/nodemanager/nodemanager.domains ${srvr_nmdir} |
| 39 | + cp /shared/domain/$3/bin/startNodeManager.sh ${srvr_nmdir} |
| 40 | + |
| 41 | + # Edit the start nodemanager script to use the home for the server |
| 42 | + sed -i -e "s:/shared/domain/$3/nodemanager:/u01/nodemanager:g" ${srvr_nmdir}/startNodeManager.sh |
| 43 | + |
| 44 | + # Create startup.properties file |
| 45 | + datadir=${DOMAIN_HOME}/servers/$2/data/nodemanager |
| 46 | + nmdir=${DOMAIN_HOME}/nodemgr_home |
| 47 | + stateFile=${datadir}/$2.state |
| 48 | + startProp=${datadir}/startup.properties |
| 49 | + if [ -f "$startProp" ]; then |
| 50 | + echo "startup.properties already exists" |
| 51 | + return 0 |
| 52 | + fi |
| 53 | + |
| 54 | + createFolder ${datadir} |
| 55 | + echo "# Server startup properties" > ${startProp} |
| 56 | + echo "AutoRestart=true" >> ${startProp} |
| 57 | + if [ -n "$4" ]; then |
| 58 | + echo "AdminURL=http\://$4\:$5" >> ${startProp} |
| 59 | + fi |
| 60 | + echo "RestartMax=2" >> ${startProp} |
| 61 | + echo "RotateLogOnStartup=false" >> ${startProp} |
| 62 | + echo "RotationType=bySize" >> ${startProp} |
| 63 | + echo "RotationTimeStart=00\:00" >> ${startProp} |
| 64 | + echo "RotatedFileCount=100" >> ${startProp} |
| 65 | + echo "RestartDelaySeconds=0" >> ${startProp} |
| 66 | + echo "FileSizeKB=5000" >> ${startProp} |
| 67 | + echo "FileTimeSpanFactor=3600000" >> ${startProp} |
| 68 | + echo "RestartInterval=3600" >> ${startProp} |
| 69 | + echo "NumberOfFilesLimited=true" >> ${startProp} |
| 70 | + echo "FileTimeSpan=24" >> ${startProp} |
| 71 | + echo "NMHostName=$1-$2" >> ${startProp} |
| 72 | +} |
| 73 | + |
| 74 | +# Check for stale state file and remove if found" |
| 75 | +if [ -f "$stateFile" ]; then |
| 76 | + echo "Removing stale file $stateFile" |
| 77 | + rm ${stateFile} |
| 78 | +fi |
| 79 | + |
| 80 | +# Create nodemanager home directory that is local to the k8s node |
| 81 | +mkdir -p /u01/nodemanager |
| 82 | +cp ${DOMAIN_HOME}/nodemanager/* /u01/nodemanager/ |
| 83 | + |
| 84 | +# Edit the nodemanager properties file to use the home for the server |
| 85 | +sed -i -e "s:DomainsFile=.*:DomainsFile=/u01/nodemanager/nodemanager.domains:g" /u01/nodemanager/nodemanager.properties |
| 86 | +sed -i -e "s:NodeManagerHome=.*:NodeManagerHome=/u01/nodemanager:g" /u01/nodemanager/nodemanager.properties |
| 87 | +sed -i -e "s:ListenAddress=.*:ListenAddress=$1-$2:g" /u01/nodemanager/nodemanager.properties |
| 88 | +sed -i -e "s:LogFile=.*:LogFile=/shared/logs/nodemanager-$2.log:g" /u01/nodemanager/nodemanager.properties |
| 89 | + |
| 90 | +export JAVA_PROPERTIES="-DLogFile=/shared/logs/nodemanager-$server_name.log -DNodeManagerHome=/u01/nodemanager" |
| 91 | +export NODEMGR_HOME="/u01/nodemanager" |
| 92 | + |
| 93 | + |
| 94 | +# Create startup.properties |
| 95 | +echo "Create startup.properties" |
| 96 | +if [ -n "$4" ]; then |
| 97 | + echo "this is managed server" |
| 98 | + createServerScriptsProperties $domain_uid $server_name $domain_name $as_hostname $as_port |
| 99 | +else |
| 100 | + echo "this is admin server" |
| 101 | + createServerScriptsProperties $domain_uid $server_name $domain_name |
| 102 | +fi |
| 103 | + |
| 104 | +echo "Start the nodemanager" |
| 105 | +. ${NODEMGR_HOME}/startNodeManager.sh & |
| 106 | + |
| 107 | +echo "Allow the nodemanager some time to start before attempting to connect" |
| 108 | +sleep 15 |
| 109 | +echo "Finished waiting for the nodemanager to start" |
| 110 | + |
| 111 | +echo "Update JVM arguments" |
| 112 | +echo "Arguments=${USER_MEM_ARGS} -XX\:+UnlockExperimentalVMOptions -XX\:+UseCGroupMemoryLimitForHeap ${JAVA_OPTIONS}" >> ${startProp} |
| 113 | + |
| 114 | +admin_server_t3_url= |
| 115 | +if [ -n "$4" ]; then |
| 116 | + admin_server_t3_url=t3://$domain_uid-$as_name:$as_port |
| 117 | +fi |
| 118 | + |
| 119 | +echo "Start the server" |
| 120 | +wlst.sh -skipWLSModuleScanning /weblogic-operator/scripts/start-server.py $domain_uid $server_name $domain_name $admin_server_t3_url |
| 121 | + |
| 122 | +echo "Wait indefinitely so that the Kubernetes pod does not exit and try to restart" |
| 123 | +while true; do sleep 60; done |
| 124 | + |
0 commit comments