IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  WebSphere  >

WebSphere 反向投资者: 在 WebSphere Application Server 中修改主机名称并迁移概要文件

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

英文原文

英文原文


级别: 中级

Tom Alcott, IT 咨询专家, IBM, Software Group

2009 年 7 月 22 日

Journal icon 如果您打算迁移 IBM® WebSphere® Application Server 配置或您的环境,那么可能需要修改主机名并将概要文件从一台机器上移动到另一台。WebSphere 反向投资者将告诉您如何完成这个过程,不管您使用的是 WebSphere Application Server Version 5.x、6.x 还是 7。

来自 IBM WebSphere Developer Technical Journal

在每篇专栏文章中,“WebSphere 反向投资者” 将回答问题、提供指导和讨论与 WebSphere 产品使用相关的基础主题,经常会给出与流行的看法相悖的经过实践验证的建议。

改变的时机来了吗?

希腊哲学家赫拉克利特曾说过 “惟一不变的就是变化本身”,并且这句话在过去 2500 年来都被证明是正确的,在某些情况下您很可能需要修改 WebSphere Application Server 系统上的主机名。与此相关的问题非常多,可见这是一个常见实践。与我如何修改主机名 类似,如何在不同机器之间迁移 WebSphere Application Server 概要文件 就是指将您的配置从一个测试环境迁移到另一个测试环境。理想情况下,您使用 wsadmin 为所有配置流程编写了脚本,因此现在只需要使用新的主机名来重新运行脚本。什么?脚本不见了?我知道有许多用户为了这个目的而维护了一个非常全面的脚本库(也许您也会这样做),但是幸运的是,WebSphere Application Server V6.x 和 V7 提供了一些功能可以帮助您完成所有这些任务。(并且如果您在将 WebSphere Application Server 版本升级到受支持发行版时遇到困难,我还将给出有关修改 V5.x 主机名的建议)。





回页首


修改主机名

让我们首先从修改部署管理器机器上的主机名开始。初始配置如图 1 所示,其中部署管理器节点 SONOMACellManager01 位于主机 SONOMA.xd61stew.ibm.com 中。


图 1. 初始配置
图 1. 初始配置

停止部署管理器后,在作出任何改变之前,使用 WebSphere Application Server 备份工具 backupConfig.(sh/bat) 对您的配置进行备份始终是个好主意,如清单 1 所示。并不是说您希望出现任何错误,但是在出现问题时能够恢复到起点总是不错的。


清单 1
SONOMA:/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin # 
		./backupConfig.sh /root/FullSonomaCellBackup.zip
ADMU0116I: Tool information is being logged in file
           /opt/IBM/WebSphere/AppServer/profiles/Dmgr01/logs/backupConfig.log
ADMU0128I: Starting tool with the Dmgr01 profile
ADMU5001I: Backing up config directory
           /opt/IBM/WebSphere/AppServer/profiles/Dmgr01/config to file
           /root/FullSonomaCellBackup.zip
ADMU0505I: Servers found in configuration:
ADMU0506I: Server name: dmgr
ADMU2010I: Stopping all server processes for node SONOMACellManager01
ADMU0512I: Server dmgr cannot be reached. It appears to be stopped.
.....................................................................................
ADMU5002I: 939 files successfully backed up
SONOMA:/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin #

现在应当启动 wsadmin,但是不要连接到 WebSphere 进程。这可以通过指定 -conntype NONE 完成,如清单 2 所示。


清单 2
SONOMA:/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin # ./wsadmin.sh -conntype NONE 
	-lang jython
WASX7357I: By request, this scripting client is not connected to any server process. 
	Certain configuration and application operations will be available in local mode.
WASX7031I: For help, enter: "print Help.help()"
wsadmin>

如果这是您第一次使用 Jython 运行 wsadmin,而不是使用默认的 Jacl,那么当第一次处理 Jython JAR 文件时,将看到大量类似于下面的信息:

*sys-package-mgr*: processing new jar,
'/opt/IBM/WebSphere/AppServer/deploytool/itp/plugins/com.ibm.etools.ejbdeploy/runtime/batch.jar'

准备好 wsadmin 之后,对 AdminTask 对象调用 changeHostName 实用命令。清单 3 所示的 AdminTask 输出显示了交互模式,它提示您进行输入并根据您的输入构建 wsadmin 命令。

在本例中,主机名由 “SONOMA.xd61stew.ibm.com” 修改为 “NAPA.xd61stew.ibm.com”(图 1)。nodeName 参数告诉 wsadmin 哪个特定节点被修改;在本例中,这个节点是托管部署管理器的节点,而主机名参数则指定新的主机名。可以看到,我们还选择重新生成 SSL 证书作为修改的一部分。您还将注意到 AdminTask 根据您的输入显示它生成的命令,这使您能够将未来要使用的命令拷贝到一个文件中。一旦 AdminTask 生成的命令得到执行后,修改将被保存并且您将退出 wsadmin。


清单 3
wsadmin>AdminTask.changeHostName ('[-interactive]')
Change Host Name

Change the host name of a node

*Node Name (nodeName): SONOMACellManager01
*Host Name (hostName): NAPA.xd61stew.ibm.com
System Name (systemName): SONOMA
Regenerate Certificates (regenDefaultCert):

Change Host Name

F (Finish)
C (Cancel)

Select [F, C]: [F] F
WASX7278I: Generated command line: AdminTask.changeHostName
	('[-nodeName SONOMACellManager01 
	-hostName NAPA.xd61stew.ibm.com -systemName SONOMA ]')
''
wsadmin>AdminConfig.save()
''
wsadmin>exit

重新启动部署管理器后,可以看到修改被反映到管理控制台中,如图 2 所示,其中部署管理器节点的主机名现在变为 “NAPA.xd61stew.ibm.com”。顺便提一下,如果您在输入主机名时出现错误,那么很可能无法启动部署管理器,并且将需要查看日志。表示新主机名拼写错误的消息为:

<your new host name> and the exception is java.net.UnknownHostException:

另一个相关的错误消息为:

Host name <your new host name> is not registered in DNS.

如果是这样的话,只需重新运行 AdminTask.changeHostName 并正确地输入新的主机名,然后像往常一样保存并退出。


图 2. 修改主机名后的配置
图 2. 修改主机名后的配置

这时应该逐一停止所有节点代理并使用新的部署管理器主机名运行 syncNode,如清单 4 所示,然后在 syncNode 完成后启动节点代理。


清单 4
AVALON:/opt/WAS70/AppServer\profiles/AppSrv01/bin>./syncNode.sh NAPA
ADMU0116I: Tool information is being logged in file
           /opt/WAS70/AppServer/profiles/AppSrv01/logs/syncNode.log
ADMU0128I: Starting tool with the AppSrv01 profile
ADMU0401I: Begin syncNode operation for node AVALONNode01 with Deployment
           Manager NAPA: 8879
ADMU0016I: Synchronizing configuration between node and cell.
ADMU0402I: The configuration for node AVALONNode01 has been synchronized with
           Deployment Manager NAPA: 8879





回页首


将概要文件迁移到一个新主机

当然,并不是所有情况都像在服务器上保持 WebSphere Application Server 等中间件并仅需要修改主机名这么简单。更常见的情况是,您需要将运行时从一台机器迁移到另一台机器,修改主机名只是迁移过程中的一个步骤。假设您并不仅仅是将现有服务器的主机名从 “SONOMA” 修改为 “NAPA”,您实际上希望将部署管理器(或任何其他 WebSphere Application Server 进程)移动到另一台机器,并修改 WebSphere Application Server 配置来反映新服务器上的主机名。如果结合使用 manageprofiles 命令和 AdminTask.changeHostName,那么您就可以实现上述目的。

要开始此过程,首先停止服务器上运行的所有进程,然后使用 backupProfile 选项运行 manageprofiles 命令,同时指定将要备份的文件和所需的文件名,如清单 5 所示。


清单 5
SONOMA:/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin # ./manageprofiles.sh 
	-backupProfile -profileName Dmgr01 -backupFile /root/SONOMADmgr01Backup.zip
INSTCONFSUCCESS: Success: The profile backup operation was successful.

当备份完成后,使用您喜欢的文件拷贝工具将备份文件从旧服务器上转移到新服务器上。新服务器需要安装 WebSphere Application Server,但是不需要创建任何概要文件,但是有一个预配置项可以使您的转移更加顺利:目标系统上的目录结构应当匹配源系统上的目录结构。虽然 WebSphere Application Server V7 似乎消除了大部分(但不是全部)指向 WAS_HOME 目录位置的硬编码目录路径,但是目前为止 Version 6.1 中还有超过 200 个路径。因此,如果您没有在机器之间维护目录结构的一致性,您将需要手动修改目录结构,以及对目录路径 in setupCmdLine.sh(bat) 和 variables.xml 的引用。当然,我不会对这 200 多个实例以及修改方式进行归档。相反,我仅仅是建议您将 WebSphere Application Server 安装到源机器和目标机器上的相同位置。这样的话,只需要使用 restoreProfile 选项运行 manageprofiles,如清单 6 所示。


清单 6
NAPA:/opt/IBM/WebSphere/AppServer/bin # ./manageprofiles.sh  -restoreProfile 
	-backupFile /root/SONOMADmgr01Backup.zip
INSTCONFSUCCESS: Success: The profile was successfully restored.

现在,只需调用 wsadmin AdminTask.changeHostName 命令,如前所示,保存您的修改并退出。部署管理器(或其他 WebSphere Application Server 进程)现在已经准备好在新的服务器上启动。WebSphere Application Server 概要文件以外的任何配置内容(比如在非默认位置展开的应用程序、共享库 JAR、JDBC 提供者使用的数据库驱动器、独立的连接器模块,等等)都必须手动拷贝。此外,如果是在使用 Sun™ Solaris™ 或 HP JDK 的机器和运行 IBM JDK 的机器之间迁移(反之亦然),那么也必须手动修改 JVM 设置中的任何 Sun、HP 或 IBM JDK 特定的 -X 标志。

在结束本节之前,需要注意上述过程也可以用于将您的 WebSphere Application Server 配置从 32 位安装迁移到 64 位安装,反之亦然。您可能会问,为什么要从 64 位迁移到 32 位?这是因为,在完成测试后,您可能会发现 64 位的性能不如您预期的那样好,这可能有多个原因





回页首


另一个选项

AdminTask.changeHostName 命令的另一个选择是使用基于属性文件的配置实用工具,该工具是 WebSphere Application Server V7 附带的一部分。在本例中,仍然使用 wsadmin 来提取配置,然后验证并应用变更。

如前所述,在不使用连接的情况下启动 wsadmin(-conntype NONE)并且将被修改的进程会停止。这一次,AdminTask extractConfigProperties 实用工具按以下方式调用:


清单 7
wsadmin >AdminTask.extractConfigProperties('[-propertiesFileName /root/
	SONOMA.cell.props]')

在本例中,创建了一个属性文件 SONOMA.cell.props,您可以使用任何文本编辑器进行编辑。只需要找到 “from” 主机名,在本例中为 “SONOMA.xd61stew.ibm.com”(清单 8),将其修改为新主机名,保存文件并退出。


清单 8
# End of Section 1.0# Cell=!{cellName}
#
#
#
EnvironmentVariablesSection
#
#
#Environment Variables
nodeName=AVALONNode01
applicationName3=isclite
applicationName2=ibmasyncrsp
applicationName1=WebSphereWSDM
serverName3=nodeagent
serverName2=dmgr
serverName1=clusterserver2
serverName=clusterserver1
nodeName2=SONOMACellManager01
nodeName1=AVALONNode02
applicationName=DefaultApplication
cellName=SONOMACell01
coreGroup=DefaultCoreGroup
hostName=AVALON.xd61stew.ibm.com
nodeGroup=DefaultNodeGroup
hostName6=${LOCALHOST_NAME}
clusterName=defaultcluster
hostName5=SONOMA.xd61stew.ibm.com
hostName4=localhost
hostName3=232.133.104.73
hostName2=ff01::1
hostName1=*

编辑完文件后,在退出 wasdmin 前需要运行另外三个 wsadmin 命令(清单 9):

  • AdminTask.validateConfigProperties 将验证所做的修改。
  • AdminTask.applyConfigProperties 将所做的修改应用到库。
  • AdminConfig.save 将保存修改。

清单 9
wsadmin> AdminTask.validateConfigProperties('[-propertiesFileName 
/root/SONOMA.cell.props ]')
'true'
wsadmin> AdminTask.applyConfigProperties('[-propertiesFileName 
/root/SONOMA.cell.props ]')
''
wsadmin>AdminConfig.save()
''
wsadmin>exit

如前所述,启动部署管理器并运行 syncNode,在停止每个节点代理后确保修改被全部传播,然后重启节点代理。





回页首


真正执行修改

如果您仍然在运行 WebSphere Application Server V5.x —— 即使它不再受到支持 —— 并且您需要对 Version 5.x 环境做出修改,那么您可以使用一些工具,但是这些工具不同于 V6.x 和 V7.0 中使用的工具。要在 WebSphere Application Server V5.x 中修改现有系统的主机名,可以使用与 在 V7.0 中修改主机名 相同的过程;由于这个过程提供了 wsadmin Jython 语法而 V5.x wsadmin 使用的是 Jacl,我在清单 10 中提供了修改后的 Jacl 语法。


清单 10
wsadmin>$AdminConfig list ServerIndex
(cells/AvalonNetwork/nodes/Avalon:serverindex.xml#ServerIndex_1)
(cells/AvalonNetwork/nodes/AvalonManager:serverindex.xml#ServerIndex_1)

wsadmin>$AdminConfig modify (cells/AvalonNetwork/nodes/AvalonManager:serverindex.xml
	#ServerIndex_1) {{hostName AVALON.xd61stew.ibm.com}}

wsadmin>$AdminConfig save

除了像上面那样修改主机名外,WebSphere Application Server V7.0 Information Center 中还提供了一组 wsadmin 样例脚本,应该能够用于这个目的。





回页首


结束语

希望您现在已经从 WebSphere Application Server 的角度了解了这两种常见修改。即使修改非常频繁,但这并不总是坏事或者非常困难,如果您想要寻找一个始终变化 并且十分复杂 的恒量,那么可以尝试去计算哈勃常数。





回页首


致谢

非常感谢 Ajay Apte 和 Keys Botzum 提出建议和评论。



参考资料

学习

获得产品和技术


关于作者

Tom Alcott 是 IBM 美国的一位 IT 咨询专家。自 1998 年 Worldwide WebSphere Technical Sales Support 小组成立以来,他就一直是该小组的成员。在此期间,他花费了大部分时间来编写用户手册。在开始研究 WebSphere 之前,他是 IBM 的 Transarc 实验室的一名系统工程师,负责支持 TXSeries。他有 20 多年从事基于大型机和分布式系统的应用程序设计与开发工作的背景。他撰写并发表了大量关于 WebSphere 运行时问题的文章。




对本文的评价










回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款