Its
been a while having a weblogic related blog entry, So this week with some free time, its the mood to get some weblogic stuff added into the blog, This blog will have the instructions to clone
a existing WebLogic Server software + running domains on a new computer.
To
perform this task, follow sections
ü
Source environment cloning,
ü
Target environment deployment
(a) Source
environment to prepare and copy it to the target environment.
a.1. Set Environment variables
Connect
to the source environment host.
Set
up the following environment variables:
TGT_HOST
– a fully qualified target host name, e.g. ajithpathiyil2.lab.com
SRC_CLONE_DIR
– a directory of the source environment for preparation of clone files
TGT_CLONE_DIR
– a directory of the target environment for copying of clone files
You
may also need to update:
·
Mount
point directory u01 to an actual
value (note that u01 in
TGT_CLONE_DIR is for the target environment)
·
Middleware
home directory mw_1, if you clone
another home, e.g. mw_2
[ajithpathiyil1::oracle]> TGT_HOST=ajithpathiyil2.lab.com
[ajithpathiyil1::oracle]>. /u01/app/oracle/fusion/mw_1/wlserver_10.3/server/bin/setWLSEnv.sh
[ajithpathiyil1::oracle]>SRC_CLONE_DIR=${MW_HOME%/*}/clone/${TGT_HOST}
[ajithpathiyil1::oracle]>TGT_CLONE_DIR=/u01/app/oracle/fusion/clone/${TGT_HOST}
Check
values of environment variables
[ajithpathiyil1::oracle]> for var in
MW_HOME SRC_CLONE_DIR TGT_CLONE_DIR TGT_HOST
> do
> echo $var" = "`eval echo
'$'$var`
> done
MW_HOME =/u01/app/oracle/fusion/mw_1
SRC_CLONE_DIR =
/u01/app/oracle/fusion/clone/ajithpathiyil2.lab.com
TGT_CLONE_DIR = /u01/app/oracle/fusion/clone/ajithpathiyil2.lab.com
TGT_HOST = ajithpathiyil2.lab.com
[ajithpathiyil1::oracle]>
a.2. Clone directories creation
Create
directory for clone files on the source environment
[ajithpathiyil1::oracle]>mkdir -p $SRC_CLONE_DIR
[ajithpathiyil1::oracle]>ls -ltr $SRC_CLONE_DIR
If
this directory existed, there may be some files there left from previous
cloning. You need to delete them.
Create
directory for clone files on the target environment (you are doing it from the
source environment console, enter password if needed)
[ajithpathiyil1::oracle]> ssh $TGT_HOST mkdir -p $TGT_CLONE_DIR
a.3. Software preparation
You
must perform these actions once per WebLogic software home.
Prepare
WebLogic software for cloning
[ajithpathiyil1::oracle]> MW_CLONE_FILE=$SRC_CLONE_DIR/mwhome.jar
[ajithpathiyil1::oracle]> [ -f $MW_CLONE_FILE ] && rm $MW_CLONE_FILE
[ajithpathiyil1::oracle]> cd $MW_HOME/utils/clone
[ajithpathiyil1::oracle]>./clone.sh $JAVA_HOME $MW_CLONE_FILE
Prepare
JDK for cloning (you may skip this step if you want to install JDK on the
target environment from installation package)
[ajithpathiyil1::oracle]> JAVA_CLONE_FILE=$SRC_CLONE_DIR/java.tgz
[ajithpathiyil1::oracle]> [ -f $JAVA_CLONE_FILE ] && rm
$JAVA_CLONE_FILE
[ajithpathiyil1::oracle]> cd $JAVA_HOME/..
[ajithpathiyil1::oracle]> tar czf - ${JAVA_HOME##*/} > $JAVA_CLONE_FILE
a.4. Domains preparation
You
must perform these actions once per WebLogic software home. All domains you
need to clone from this WebLogic home will be prepared at once.
Set
the environment variable for the file containing a domain list
[ajithpathiyil1::oracle]> DOMAIN_LIST_FILE=$SRC_CLONE_DIR/domain_list.txt
Prepare
list of WebLogic domain directories in the source environment
[ajithpathiyil1::oracle]> cat
/dev/null > $DOMAIN_LIST_FILE
> grep "domain location"
$MW_HOME/domain-registry.xml | while read line
> do
> line=${line#*
> line=${line%\"/>}
> echo $line >> $DOMAIN_LIST_FILE
> done
[ajithpathiyil1::oracle]>
Observe
your source domain directories in the prepared file; remove those you do not
want to clone.
[ajithpathiyil1::oracle]> vi $DOMAIN_LIST_FILE
Prepare
the domains from the created list for cloning
[ajithpathiyil1::oracle]> cat
$DOMAIN_LIST_FILE | while read DOMAIN_HOME
> do
> DOMAIN_NAME=${DOMAIN_HOME##*/}
> . $DOMAIN_HOME/bin/setDomainEnv.sh
> DOMAIN_CLONE_FILE=$SRC_CLONE_DIR/${DOMAIN_NAME}.jar
> [ -f $DOMAIN_CLONE_FILE ]
&& rm $DOMAIN_CLONE_FILE
> $WL_HOME/common/bin/pack.sh -domain=$DOMAIN_HOME
-template=$DOMAIN_CLONE_FILE
> -template_name=$DOMAIN_NAME
> done
[ajithpathiyil1::oracle]>
[ajithpathiyil1::oracle]>
cat $DOMAIN_LIST_FILE | while read DOMAIN_HOME
a.5. Copying from source to target
Review
the prepared archives (you may need to parallelize copy process if archives
size is too large).
[ajithpathiyil1::oracle]> ll $SRC_CLONE_DIR
Copy
clone files to the target environment (enter password if needed)
[ajithpathiyil1::oracle]> cd $SRC_CLONE_DIR
[ajithpathiyil1::oracle]> scp * ${TGT_HOST}:${TGT_CLONE_DIR}
You
perform the following actions on the target environment to roll out a WebLogic
clone from the archives copied from the source environment.
b.1. Environment variables
Connect
to the target environment host.
Set
up the following environment variables:
FUSION_BASE
– a base directory for Oracle Fusion Middleware software of the target
environment
MW_HOME
– Middleware home directory
WL_HOME
– WebLogic Server home directory
TGT_CLONE_DIR
– a directory of the target environment with clone files copied from the source
environment
You
may also need to update:
·
mount
point directory u01 to an actual value
·
Middleware
home directory mw_1, if you clone to another target home, e.g. mw_2
[ajithpathiyil2::oracle]> FUSION_BASE=/u01/app/oracle/fusion
[ajithpathiyil2::oracle]> MW_HOME=$FUSION_BASE/mw_1
[ajithpathiyil2::oracle]> WL_HOME=$MW_HOME/wlserver_10.3
[ajithpathiyil2::oracle]> TGT_CLONE_DIR=$FUSION_BASE/clone/`hostname -f`
[ajithpathiyil2::oracle]> export MW_HOME WL_HOME
Check
values of environment variables
[ajithpathiyil2::oracle]> for var in FUSION_BASE MW_HOME WL_HOME
TGT_CLONE_DIR
> do
> echo $var" = "`eval echo '$'$var`
> done
b.2. Software deployment
You
must perform these actions once per WebLogic software home.
Set
up the following environment variables:
JAVA_HOME
– JDK home directory
[ajithpathiyil2::oracle]> JAVA_HOME=$MW_HOME/java/jdk
[ajithpathiyil2::oracle]> PATH=$JAVA_HOME/bin:$PATH
[ajithpathiyil2::oracle]> export JAVA_HOME PATH
Check
values of environment variables
[ajithpathiyil2::oracle]> for var in JAVA_HOME PATH
> do
> echo $var" = "`eval echo '$'$var`
> done
b.2.2 Restore
weblogic software
Unpack
JDK from the archive (you may skip this step if you have installed JDK on the
target environment from installation package)
mkdir -p ${JAVA_HOME%/*}
cd ${JAVA_HOME%/*}
tar xzf $TGT_CLONE_DIR/java.tgz
Unpack
WebLogic software from the archive
[ajithpathiyil2::oracle]> mkdir -p $MW_HOME
[ajithpathiyil2::oracle]> cd $MW_HOME
[ajithpathiyil2::oracle]> jar xf $TGT_CLONE_DIR/mwhome.jar
Preserve
nodemanager.properties, otherwise it will be deleted during execution of
restore.sh script
[ajithpathiyil2::oracle]> cp
$WL_HOME/common/nodemanager/nodemanager.properties [ajithpathiyil2::oracle]> $WL_HOME/common/nodemanager/nodemanager.properties.bak
Run
restore.sh
[ajithpathiyil2::oracle]> cd $MW_HOME/utils/clone
[ajithpathiyil2::oracle]> chmod u+x ./restore.sh
[ajithpathiyil2::oracle]>./restore.sh $JAVA_HOME
Set
server environment
[ajithpathiyil2::oracle]>. $WL_HOME/server/bin/setWLSEnv.sh
b.2.3. Delete domains registration from Node Manager
Clear
the list of domains previously enrolled to the Node Manager
[ajithpathiyil2::oracle]> cat /dev/null >
$WL_HOME/common/nodemanager/nodemanager.domains
b.2.4. Start Node
Manager
Start
Node Manager
[ajithpathiyil2::oracle]> cd $WL_HOME/common/nodemanager
[ajithpathiyil2::oracle]> nohup $WL_HOME/server/bin/startNodeManager.sh &
Check
the output of the Node Manager process
[ajithpathiyil2::oracle]> tail -50f $WL_HOME/common/nodemanager/nohup.out
b.3. Domains Deployment
You
must perform these actions once per WebLogic software home except item 3.3.4 with sub-items which must be repeated for each
domain.
Set
server environment
[ajithpathiyil2::oracle]>. $WL_HOME/server/bin/setWLSEnv.sh
Check
values of environment variables
[ajithpathiyil2::oracle]> for var in MW_HOME WL_HOME JAVA_HOME TGT_CLONE_DIR
> do
> echo $var" = "`eval echo '$'$var`
> done
b.3.2. Specify
new names for domains
New
domain names must NOT match the domain names existing on the target
environment.
You
can check the domain names existing on the target environment by
[ajithpathiyil2::oracle]> ll
$MW_HOME/../user_projects/domains
Open
the domain list for editing
[ajithpathiyil2::oracle]> vi
$TGT_CLONE_DIR/domain_list.txt
Enter
new domain names next to the domain directories listed in the file. Use space
as a delimiter.
For
example
[ajithpathiyil2::oracle]> /u01/app/oracle/otc1d_cl/wlserver/user_projects/domains/ajith_domain
ajithclone
Save
the domain list.
If
directory $HOME/dbs does not exist, create it
[ajithpathiyil2::oracle]> mkdir
$HOME/dbs
Restore
all domains specified in the domain list in cycle at once.
Links
to the domain environment files will also be created.
[ajithpathiyil2::oracle]> cat
$TGT_CLONE_DIR/domain_list.txt | while read DOMAIN_LINE
> do
>
SRC_DOMAIN_HOME=`echo $DOMAIN_LINE | cut -d' ' -f 1`
>
SRC_DOMAIN_NAME=${SRC_DOMAIN_HOME##*/}
>
TGT_DOMAIN_NAME=`echo $DOMAIN_LINE | cut -d' ' -s -f 2`
>
TGT_DOMAIN_NAME=${TGT_DOMAIN_NAME:-$SRC_DOMAIN_NAME}
>
TGT_DOMAIN_HOME=${MW_HOME%/*}/user_projects/domains/$TGT_DOMAIN_NAME.
>
echo "Unpacking domain "$SRC_DOMAIN_NAME" as
"$TGT_DOMAIN_NAME" to "$TGT_DOMAIN_HOME
>
$WL_HOME/common/bin/unpack.sh -domain=$TGT_DOMAIN_HOME
> -template=$TGT_CLONE_DIR/${SRC_DOMAIN_NAME}.jar
>
ln -s $TGT_DOMAIN_HOME/bin/setDomainEnv.sh ~/dbs/init_`echo ${TGT_DOMAIN_NAME}
> | tr [:lower:][:upper:]`_wl.sh
> done
Sample
output
Unpacking domain ajith_domain1 as ajithclone
to /u01/app/oracle/fusion/user_projects/domains/ajithclone
<< read template from
"/u01/app/oracle/fusion/clone/ajith_domain_apps.jar"
>> succeed: read template from
"/u01/app/oracle/fusion/clone/ajith_domain_apps.jar"
<< write Domain to
"/u01/app/oracle/fusion/user_projects/domains/ajithclone"
...............................................................................................
>> succeed: write Domain to "/u01/app/oracle/fusion/user_projects/domains/ajithclone"
<< close template
>> succeed: close template
You
must perform these actions for each domain you are cloning.
You
can always obtain the list of domains being cloned by the following script
[ajithpathiyil2::oracle]> cat
$TGT_CLONE_DIR/domain_list.txt | while read DOMAIN_LINE
> do
> SRC_DOMAIN_HOME=`echo $DOMAIN_LINE
| cut -d' ' -f 1`
> SRC_DOMAIN_NAME=${SRC_DOMAIN_HOME##*/}
> TGT_DOMAIN_NAME=`echo $DOMAIN_LINE
| cut -d' ' -s -f 2`
> TGT_DOMAIN_NAME=${TGT_DOMAIN_NAME:-$SRC_DOMAIN_NAME}
> TGT_DOMAIN_HOME=${MW_HOME%/*}/user_projects/domains/$TGT_DOMAIN_NAME
> echo
"======================================================================="
> echo "Domain name: $TGT_DOMAIN_NAME"
> echo "Domain home:
$TGT_DOMAIN_HOME"
> echo "Domain environment: . ~/dbs/init_`echo
${TGT_DOMAIN_NAME} | tr [:lower:] [:upper:]`_wl.sh"
> done
[ajithpathiyil2::oracle]>
b.3.4.1. Environment
variables
Set
the domain environment
Note:
You can simply copy the corresponding environment command from the output of
previous script
[ajithpathiyil2::oracle]> . ~/dbs/init__wl.sh
b.3.4.2.
Edit config.xml
Edit
the domain configuration file
[ajithpathiyil2::oracle]> vi $DOMAIN_HOME/config/config.xml
Note:
You can correct hostname at once by using vi command, e.g.
:%s:old_hostname:new_hostname:g
When
choosing ports check that the chosen port is not in use by
[ajithpathiyil2::oracle]> netstat
-anp | grep
Save
the domain configuration file config.xml.
Start
WLST utility
[ajithpathiyil2::oracle]> java
weblogic.WLST
Start
the domain Administration Server via Node Manager. Specify your Node Manager
username, password and the domain name.
[ajithpathiyil2::oracle]> nmConnect(username='weblogic',password=’*********’,domainName='')
> nmStart('AdminServer')
> exit()
Connect
to the Administration console and start the Management Servers as appropriate.
To
connect to the Administration console the URL should be formed as follows using
values for Administration server.
https://:/console
(c) Change passwords
Change the domain administrator (user weblogic) password:
1. Connect
to the Administration Console
2. Click
'Security Realms' in the Domain Structure
3. Click
'myrealm'
4. Select
'Users and Groups' tab
5. Select
'Users' sub-tab
6. Click
user 'weblogic'
7. Select
'Passwords' tab
8. Enter
a new password into 2 fields
9. Click
'Save'
Change the Node Manager password for current domain:
1. Connect
to the Administration Console
2. Click
on the domain name in the Domain Structure
3. Select
'Security' tab
4. Select
'General' sub-tab
5. Click
'Advanced' link
6. Enter
the new Node Manager password into the fields 'NodeManager Password' and 'Confirm
NodeManager Password'
7. Click
'Save'
(d)
Set
up data sources
Set up connection strings and passwords in the data
sources:
1. Connect
to the Administration Console
2. Click
'Services / Data Sources' in the Domain Structure
3. Click
on the data source name
4. Select
'Configuration' tab
5. Select
'Connection Pool' sub-tab
6. Correct
the connection descriptor in the 'URL' field
7. Locate
the user name in the 'Properties' field
8. Enter
the new password for this user into the fields 'Password' and 'Confirm
Password'
9. Click
'Save'
10. Repeat
for each data source
Configuration of the WebLogic domain is completed. The
Managed servers of this domain can be started:
1. Connect
to the Administration Console
2. Click
'Environment / Servers' in the Domain Structure
3. Select
'Control' tab
4. Mark
checkboxes for all Managed servers that need to be started
5. Click
'Start' button
6. You
may click on button to periodically refresh the table and
observe the status of the starting servers.
HAPPY LEARNING!
No comments:
Post a Comment
Thanks for you valuable comments !