Migrating to WebSphere 9
Make a migration plan
Requirements
- Migrate WebSphere profiles into the new WebSphere
- Keep profiles' locations as the original path
Prepare
- Install the new WebSphere
- Setup variables
At first, we need to record variables related to the migration.
set WAS_HOME_Old=C:IBMWebSphereAppServer
set WAS_Root_New=C:IBMWebSphere9
set WAS_HOME_New=%WAS_Root_New%AppServer
set Dmgr_Profile_Path=C:ProductprofilesxxxDmgr
set Dmgr_Profile_Name=xxxDmgr
set Prod_Cell_Name=xxxCell
set Prod_Ear=xxx.ear
set Node_Profile_Path=C:ProductprofilesxxxNode1
set Node_Profile_Name=xxxNode1
set DmgrHost=localhost
set DmgrPort=8879
set DmgrUser=admin
set DmgrPassword=password
- Stop all services of the old WebSphere
Migrating
Overall steps
- Copy extension library
- Backup source profiles
- Migrate from source profiles
- Move source profiles, we will create new profiles at same places
- Create target profiles
- Migrate to target profiles
- Sync nodes
- Some post steps may need
Copy extension library
Copy old WebSphere extension libraries which are used by existing servers into the new WebSphere.
echo Copy extension library
copy "%WAS_HOME_Old%libext*.*" "%WAS_HOME_New%libext"
Backup source profiles
pushd "%WAS_HOME_Old%in"
echo Create profile backup folders
mkdir %WAS_HOME_Old%profilesBackup
echo Backup source profiles
call backupConfig.bat "%WAS_HOME_Old%profilesBackupMigrationBackup_%Dmgr_Profile_Name%.zip" -nostop -profileName %Dmgr_Profile_Name%
call backupConfig.bat "%WAS_HOME_Old%profilesBackupMigrationBackup_%Node_Profile_Name%.zip" -nostop -profileName %Node_Profile_Name%
popd
Migrate from source profiles
pushd "%WAS_HOME_New%in"
echo Migrate from source profiles
call WASPreUpgrade.bat "%WAS_Root_New%WSMigration\%Node_Profile_Name%" "%WAS_HOME_Old%" -oldProfile %Node_Profile_Name% -keepDmgrEnabled false
call WASPreUpgrade.bat "%WAS_Root_New%WSMigration\%Dmgr_Profile_Name%" "%WAS_HOME_Old%" -oldProfile %Dmgr_Profile_Name% -keepDmgrEnabled false -username %DmgrUser% -password %DmgrPassword%
popd
Move source profiles
echo Move source profiles
rename "%Dmgr_Profile_Path%" %Dmgr_Profile_Name%_Old
rename "%Node_Profile_Path%" %Node_Profile_Name%_Old
Create target profiles
pushd "%WAS_HOME_New%in"
echo Create target profiles
call manageprofiles.bat -create -profileName %Dmgr_Profile_Name% -profilePath "%Dmgr_Profile_Path%" -templatePath management -nodeName %Dmgr_Profile_Name%Node -cellName %Prod_Cell_Name%
call manageprofiles.bat -create -profileName %Node_Profile_Name% -profilePath "%Node_Profile_Path%" -templatePath managed -nodeName %Node_Profile_Name% -dmgrHost %DmgrHost% -dmgrPort %DmgrPort% -dmgrAdminUserName %DmgrUser% -dmgrAdminPassword %DmgrPassword%,-cellName %Prod_Cell_Name% -federateLater true
popd
Migrate to target profiles
pushd "%WAS_HOME_New%in"
echo Migrate to the deployment manager profile
call WASPostUpgrade.bat "%WAS_Root_New%WSMigration\%Dmgr_Profile_Name%" -oldProfile %Dmgr_Profile_Name% -profileName %Dmgr_Profile_Name% -setPorts useOld -resolvePortConflicts incrementCurrent -includeApps true -keepAppDirectory true -keepDmgrEnabled true -clone false
call startManager.bat
echo Migrate to the node profile
call WASPostUpgrade.bat "%WAS_Root_New%WSMigration\%Node_Profile_Name%" -oldProfile %Node_Profile_Name% -profileName %Node_Profile_Name% -setPorts useOld -resolvePortConflicts incrementCurrent -keepDmgrEnabled true -username %DmgrUser% -password %DmgrPassword% -clone false
popd
NOTE: There is another choice to use switch "-includeApps script", if in this case, we need to run the following command manually to install applications.
cd /d "%WAS_Root_New%WSMigration%Dmgr_Profile_Name%"
"%WAS_HOME_New%inwsadmin.bat" -f "install_%Prod_Ear%.jy" -CONNTYPE none -lang jython"
Sync nodes
pushd "%Node_Profile_Path%"in
rem node agent disablement reversal
if exist "%Dmgr_Profile_Path%configcells\%Prod_Cell_Name%
odes\%Node_Profile_Name%serverindex.xml_disabled" (
echo Node agent disablement reversal
rename "%Dmgr_Profile_Path%configcells\%Prod_Cell_Name%
odes\%Node_Profile_Name%serverindex.xml" serverindex.xml_nonagent
rename "%Dmgr_Profile_Path%configcells\%Prod_Cell_Name%
odes\%Node_Profile_Name%serverindex.xml_disabled" serverindex.xml
)
echo Sync node
call SyncNode.bat %DmgrHost% %DmgrPort% -username %DmgrUser% -password %DmgrPassword%
echo Remove jsp built folders
for /D %%i in (%Node_Profile_Path%installedApps\%Prod_Cell_Name%\%Prod_Ear%*) DO (
if exist "%%iWEB-INFclasses" (
echo Clear jsp classes "%%iWEB-INFclasses"
del /F /S /Q "%%iWEB-INFclasses*"
)
)
popd
NOTE: default node agent is disabled, we need to enable node agent.
NOTE: Removing jsp cache will avoid jsp errors during application initialize.
Post steps of migration
- Remove old Windows services of the product
- Add new Windows services for the product
- Reset any arguments whose values are related to WebSphere location in the WebSphere Server
- Set JAVA_HOME if need
End
-
Uninstall the old version WebSphere
-
Remove the backup folders to save disk
%WAS_HOME_Old%profilesBackup
%WAS_Root_New%WSMigration
%Dmgr_Profile_Path%_Old
%Node_Profile_Path%_Old
Frequent Issues
Node agent failed to start
- Symptom
We can find following message is the node agent SystemOut.log file
com.ibm.ws.naming.distcos.NameSpaceConfigurationException: Missing host name info in bootstrap address of server "nodeagent" in node "<Node Name>".
-
Cause
Node agent is disabled default. -
Solution
Enable node agent and sync node
If there is a serverindex.xml_disabled file in the deployment manager configuration, remove serverindex.xml and rename serverindex.xml_disabled as serverindex.xml.
Run SyncNode.bat from the node profile bin folder.
echo node agent disablement reversal
if exist "%Dmgr_Profile_Path%configcells\%Prod_Cell_Name%
odes\%Node_Profile_Name%serverindex.xml_disabled" (
echo Node agent disablement reversal
rename "%Dmgr_Profile_Path%configcells\%Prod_Cell_Name%
odes\%Node_Profile_Name%serverindex.xml" serverindex.xml_nonagent
rename "%Dmgr_Profile_Path%configcells\%Prod_Cell_Name%
odes\%Node_Profile_Name%serverindex.xml_disabled" serverindex.xml
)
pushd "%Node_Profile_Path%"in
echo Sync node
call SyncNode.bat %DmgrHost% %DmgrPort% -username %DmgrUser% -password %DmgrPassword%
popd