weblogic之-使用节点管理器控制服务器
使用节点管理器控制服务器
节点管理器概述
WebLogic Server 生产环境中的服务器实例通常分布在多个域、计算机和地理位置上。节点管理器是一个 WebLogic Server 实用工具,可以使用它来启动、关闭和重新启动远程位置上的管理服务器和受管服务器实例。尽管节点服务器是可选工具,但如果您的 WebLogic Server 环境所承载的应用程序具有较高的可用性要求,则建议您使用该工具。
节点管理器进程与特定 WebLogic 域无关,而与计算机有关。只要服务器实例与节点管理器进程驻留于同一台计算机上,您就可以使用同一个节点管理器进程控制任意 WebLogic Server 域中的服务器实例。节点管理器必须在承载要通过节点管理器控制的 WebLogic Server 实例(管理服务器或受管服务器)的计算机。
基于 Java 和基于脚本的节点管理器
WebLogic Server 提供两种版本的节点管理器:基于 Java 的节点管理器和基于脚本的节点管理器,两者功能类似。但是,每个版本的配置和安全注意事项不同。
基于 Java 的节点管理器
基于 Java 的节点管理器在 Java 虚拟机(Java Virtual Machine,简称 JVM)进程中运行。建议在 Windows 平台上将其作为 Windows 服务运行,而在 UNIX 平台上将其用作一种操作服务运行,以便重新引导系统时可以自动重新启动该节点管理器。
BEA 针对 Windows、Solaris、HP UX、Linux on Intel、Linux on Z-Series 以及 AIX 操作系统提供本地节点管理器库。
注意: | Open VMS、OS/390、AS400、UnixWare 或 Tru64 UNIX 不支持节点管理器。 |
此版本的节点管理器将根据 nodemanager.properties 文件确定其配置。请参阅配置基于 Java 的节点管理器。
与基于脚本的版本相比,基于 Java 的节点管理器可以提供更高的安全性。请参阅配置基于 Java 的节点管理器的安全。
基于脚本的节点管理器
对于 UNIX 和 Linux 系统,WebLogic Server 提供基于脚本版的节点管理器。该脚本基于 UNIX 外壳脚本,但它使用 SSH 提供更高的安全性。SSH 使用基于用户 ID 的安全。
有关配置脚本版节点管理器的详细信息,请参阅配置基于脚本的节点管理器。有关使用此版本节点管理器的信息,请参阅运行基于脚本的节点管理器。
此版本所提供的安全性低于基于 Java 的版本。但是,基于脚本的节点管理器的优势在于,它能够通过已配置为使用 SSH 的网络来远程管理服务器。不需要任何其他服务器安装。只需要将脚本复制到远程计算机上。
注意: | 建议将基于脚本的节点管理器作为一种操作系统服务来运行,以使它能够在重新引导系统时自动重新启动。 |
决定使用哪个节点管理器版本
使用哪个节点管理器版本取决于 WebLogic Server 环境的需要。下列注意事项会有助于您决定哪个版本适合您的环境:
如果在 Windows 系统上安装 WebLogic Server,必须使用 Java 版的节点管理器。Windows 不支持脚本版的节点管理器。在使用 Java 版本的节点管理器时,使用 db-less 租用(一致租用),您可能会看到更快的性能。基于脚本的节点管理器需要的安全配置要比 Java 版本需要的安全配置简单很多。RSH 和 SSH 通常比 SSL 要容易配置,SSL是 Java 版本的节点管理器使用的安全方法。脚本版的节点管理器需要的空间占用也比 Java 版本需要的空间占用少很多。在受支持的 UNIX 系统上,Java 版的节点管理器可以与inetd
组合使用。inetd
允许节点管理器在已配置的端口上收到请求时自动重新启动。
访问节点管理器
相对于要进行通信的节点管理器,节点管理器客户端可以在本地,也可以是远程。您可以从下列客户端访问任意版本的节点管理器 - Java 版或基于脚本 (SSH) 的版本。(另外还提供了外壳命令模板形式的 SSH 客户端,以用于基于脚本的节点管理器。)
节点管理器可以执行的任务
启动、关闭和重新启动管理服务器
通过使用 WebLogic 脚本工具(或仅适用于基于脚本的节点管理器的 SSH 客户端),可以连接承载管理服务器的计算机上的节点管理器进程,然后发出启动、关闭或重新启动管理服务器等命令。管理服务器与节点管理器的关系随场景不同而有所不同。
启动、关闭、挂起和重新启动受管服务器
通过 WebLogic Server 脚本工具(WebLogic Server Scripting Tool,简称 WLST)命令行或脚本,可以向节点服务器发出启动、关闭、挂起和重新启动受管服务器实例和群集等命令。
如果已对受管服务器实例启用受管服务器独立(Managed Server Independence,简称 MSI)模式,则即使管理服务器不可用,节点管理器依然可以在失败后重新启动该受管服务器。默认情况下启用此特性。
注意: | 节点管理器不能启动初次进入 MSI 模式的受管服务器,因为域的管理服务器必须可用,受管服务器才能获取配置设置。 |
注意: | 节点管理器使用的命令参数与您使用脚本或从命令行启动受管服务器时所提供的参数相同。有关启动参数的信息,请参阅“WebLogic Server 命令参考”中的 weblogic.Server 命令行参考。 |
重新启动管理服务器和受管服务器
如果使用节点管理器启动的服务器实例出现故障,则节点管理器将自动重新启动该服务器实例。
注意: | 节点管理器只能重新启动通过节点管理器启动的服务器。 |
如果节点管理器出现故障或直接关闭,则它会在重新启动时确定退出时仍在其控制下的服务器实例。节点管理器可以根据需要重新启动任意的故障服务器实例。
注意: | 建议将节点管理器作为操作系统服务运行,以便它能够在主机重新启动后自动重新启动。 |
监视服务器和查看日志数据
节点管理器将创建节点管理器进程的日志文件,以及其控制的每个服务器实例的服务器输出日志文件。您可以使用管理控制台或 WLST 命令查看这些日志文件以及服务器实例的日志文件。
节点管理器在 WebLogic Server 环境下如何工作
下列部分提供一个“大图”,以图表方式介绍节点管理器在 WebLogic Server 环境中的角色,以及节点管理器用于与服务器进行通信的进程的图解与描述:
节点管理器和服务器的图表
图 3-1 描绘了节点管理器、其客户端及其控制的服务器实例之间的关系。

节点管理器如何启动管理服务器
图 3-2 描绘了使用节点管理器启动管理服务器的过程。
本部分假定您已经安装管理服务器,而且已经使用 Configuration Wizard 为管理服务器创建域目录。
节点管理器在承载管理服务器的计算机 A 上运行。独立节点管理器位于远程。

授权用户发出 WLST 脱机命令 nmConnect,以连接承载管理服务器的计算机上的节点管理器进程,然后发出一条命令启动该管理服务器。(如果节点管理器实例是 SSH 版本,则用户可以使用SSH 客户端进行连接)。
启动命令中会标识要启动的域和服务器实例,如果使用的是 Java 节点管理器,还要向节点管理器提供用户名和密码。
注意: | 如果用户以前曾经连接该节点管理器,则已存在 boot.properties 文件,该用户不必再提供用户名和密码。 |
节点管理器如何启动受管服务器
图 3-3 描绘了使用节点管理器启动受管服务器的过程。
节点管理器在承载受管服务器 1 的计算机 B 上运行。域的管理服务器正在计算机 A 上运行。

注意: | 独立客户端还会发出启动受管服务器的命令。 |
管理服务器向计算机 B 上的节点管理器发出启动受管服务器 1 的命令,提供为受管服务器 1 配置的远程启动属性。 有关参数以及如何指定参数的信息,请参阅配置远程启动参数。节点管理器启动受管服务器 1。
节点管理器将使用节点管理器进程运行所在的根目录启动受管服务器。要在其他目录下运行受管服务器,请在“服务器”->“配置”->“服务器启动”控制台页面中设置“根目录”特性。
节点管理器如何重新启动管理服务器
图 3-4 描绘了使用节点管理器重新启动管理服务器的过程。
节点管理器在承载管理服务器的计算机上运行。最初使用节点管理器启动的管理服务器已经退出。管理服务器的 AutoRestart
特性设置为 true
。
注意: | 如果服务器实例的 AutoRestart 特性设置为 false ,则节点管理器不会重新启动该实例。 |

节点管理器如何重新启动受管服务器
图 3-5 描绘了使用节点管理器重新启动受管服务器的过程。
节点管理器在承载受管服务器 1 的计算机 B 上运行。最初使用节点管理器启动的受管服务器 1 已经退出。受管服务器 1 的 AutoRestart
特性设置为 true
。
注意: | 如果服务器实例的 AutoRestart 特性设置为 false ,则节点管理器不会重新启动该实例。 |

节点管理器如何关闭服务器实例
图 3-6 描绘了节点管理器控制下的受管服务器在关闭过程中进行的通信。根据受管服务器的状态及其是否可用,节点管理器可能需要尝试备用策略以成功启动关闭过程。

授权用户从管理控制台中发出关闭受管服务器 1 的命令。管理服务器直接向受管服务器 1 发出关闭命令。如果成功地与受管服务器 1 建立联系,受管服务器 1 将执行“管理服务器启动和关闭”的 正常关闭中所述的关闭步骤。在前一步骤中,如果管理服务器无法联系到受管服务器 1,则它将向计算机 B 上的节点服务器发出关闭受管服务器 1 的命令。节点管理器将向操作系统发出取消受管服务器 1 的请求。操作系统将结束受管服务器 1 进程。
节点管理器和系统崩溃恢复
重新启动系统后,节点管理器检查 nodemanager.domains 文件中指定的每个受管域,然后确定是否存在任何尚未完全关闭的服务器实例。这可以通过创建 WebLogic Server 进程时是否存在由节点管理器创建的锁定文件而确定。该锁定文件包含 WebLogic Server 启动脚本的进程标识符。如果存在锁定文件,但进程 ID 并未运行,则节点管理器将尝试自动重新启动该服务器。
如果该进程正在运行,节点管理器还将访问进程中运行的管理 Servlet 并进一步检查,从而验证与该进程 ID 对应的进程是一个 WebLogic Server 实例。
注意: | 当节点管理器访问管理 Servlet 而执行检查时,服务器日志中可能会显示有关非正常凭据的警告。 |
节点管理器配置和日志文件
在管理多个服务器的过程中,节点管理器使用多个配置文件,并向多个目录输出日志文件,如下图所示。有关这些文件的说明,请参阅节点管理器配置和日志文件。

配置文件
除特别说明外,配置文件均适用于基于 Java 的节点管理器和基于脚本的节点管理器。
nodemanager.properties
这是基于 Java 版本的节点管理器使用的配置文件。请参阅检查 nodemanager.properties。
此文件位于 WL_HOME/common/nodemanager
。
nodemanager.domains
此文件包含节点管理器管理的域的名称及其对应目录之间的映射。请参阅配置 nodemanager.domains 文件。
此文件位于 WL_HOME/common/nodemanager
。
nm_data.properties
此文件中存储了节点管理器使用对称加密密钥加密的数据。数据以加密格式存储。
此文件位于 WL_HOME/common/nodemanager
。
nm_password.properties
此文件存储节点管理器的用户名和密码。请参阅指定节点管理器的用户名和密码。
此文件位于 DOMAIN_HOME/config/nodemanager
下。
boot.properties
节点管理器使用此文件指定启动服务器时的引导标识。请参阅常规节点管理器配置。
此文件位于 domain-name/servers/server_name/data/nodemanager
下。
startup.properties
每个受管服务器实例都有自己的 startup.properties
文件,该文件具有可以控制节点管理器如何启动和控制服务器的属性。通过使用最后一次通过管理器服务器启动服务器时向节点管理器传递的属性,节点管理器自动创建此文件。这允许节点管理器客户端或启动脚本使用管理服务器最后一次使用的属性重新启动受管服务器。
有关 startup.properties 的详细信息,请参阅设置服务器启动属性。这些属性与 ServerStartMBean 包含的服务器启动特性以及 ServerStartMBean 中的运行状况监视特性相对应。
此文件位于 domain-name/servers/server_name
/data/nodemanager。
server_name.addr
server_name.addr 存储服务器启动或迁移时增加的 IP 地址。在迁移期间,此文件在服务器 IP 地址成功联机之后生成。server_name.addr 在 IP 地址脱机后删除。服务器 IP 地址用于验证删除请求,防止关闭服务器时误删地址。
此文件位于 domain-name/servers/server_name/data/nodemanager
中。
server_name.lck
每个服务器都会生成 server_name.lck
,其中包含内部使用的锁定 ID。
此文件位于 domain-name/servers/server_name
/data/nodemanager。
server_name.pid
每个服务器都将生成 server_name.pid
,其中包含服务器的进程 ID。节点管理器检查服务器在崩溃恢复期间所生成的进程 ID。
此文件位于 domain-name/servers/server_name
/data/nodemanager。
server_name.state
服务器会生成 server_name.state
,其中包含服务器的当前状态。节点管理器会监视此文件的内容,以便确定服务器的当前状态。
注意: | 请勿删除或更改此文件。如果没有此文件,节点管理器无法确定服务器的当前状态。 |
此文件位于 domain-name/servers/server_name
/data/nodemanager。
日志文件
使用节点管理器和 WebLogic Server 日志文件有助于对启动或停止各个受管服务器中的问题进行故障排除。
nodemanager.log
节点管理器在 NodeManagerHome/nodemanager.log
中创建了一个日志文件。此日志文件存储与节点管理器管理的所有域有关的数据。
此日志文件由节点管理器生成,其中包含节点管理器在给定物理计算机上控制的所有域的数据。请参阅 nodemanager.log。
此文件位于 WL_HOME/common/nodemanager
。
日志输出将追加到当前 nodemanager.log
中。默认情况下禁用日志滚动,但是通过在 nodemanager.properties
中设置 LogCount
可以启用它。
server_name.out
对于它控制的每个服务器实例,节点管理器会维护一个日志文件,其中包含由服务器实例生成的 stdout
和 stderr
消息。如果已经将远程启动调试属性启用作为服务器实例的远程启动属性,或如果已启用 NodeManager 调试属性,则节点管理器将在服务器输出日志信息中包括其他调试信息。
注意: | 您不能限制节点管理器创建的日志文件的大小。默认情况下禁用向 stdout 中记录日志。 |
此文件位于 domain_name/servers/<server_name>/logs
节点管理器在服务器实例的 logs
目录中为服务器实例创建服务器输出日志,其名称为:
WebLogic Server 日志文件
除节点管理器创建的日志文件外,节点管理器控制下的服务器实例还具有自己的日志文件。
通过选择“诊断”->“日志文件”,再选择服务器日志文件,然后单击“查看”,可以查看服务器实例的定期日志文件。
常规节点管理器配置
本部分描述应用于 Java 版和脚本版节点管理器的常规节点管理器配置。应当确保已经执行了以下部分概述的所有项目。
执行常规节点管理器配置后,应当根据使用的节点管理器的版本执行在配置基于 Java 的节点管理器或配置基于脚本的节点管理器中概述的配置过程。
配置计算机运行节点管理器
节点管理器必须运行于承载要使用节点管理器控制的 WebLogic Server 实例的每台计算机上。将每台计算机配置为 WebLogic Server 中的计算机,并将要使用节点管理器控制的每个服务器实例分配给运行该服务器实例的计算机。
理想情况是,节点管理器作为操作系统服务或守护程序运行,以便在系统出现故障或重新引导时,它可以自动重新启动。有关详细信息,请参阅“安装指南”中的将节点管理器安装为 Windows 服务。
如果您在同一台计算机上运行节点管理器和管理服务器,并使用示范 SSL 配置,则在安装 WebLogic Server 后即可运行节点管理器。默认配置下列行为:
使用 WLST 控制和配置节点管理器
WebLogic 脚本工具 (WLST) 是一种命令行脚本界面,系统管理员和操作员用它来监视和管理 WebLogic Server 实例以及域。可以将 WLST 作为节点管理器客户端,以远程或本地方式启动、停止和重新启动服务器实例。另外,WLST 可以获取服务器状态,并检索服务器输出日志的内容。
在生产环境中使用 nmConnect()
默认情况下,不能在生产环境中使用 nmConnect()
命令。必须执行下面的步骤后才能在生产环境中使用 nmConnect
。
nmEnroll('C:/bea/user_projects/domains/prod_domain',
'C:/bea/wlserver_10.0/common/nodemanager')
运行 nmEnroll()
以确保向每个受管服务器提供正确的节点管理器用户和密码标记。一旦每个受管服务器都具备这些条件,就可以在生产环境下使用 nmConnect()
。
注意: | 运行受管服务器的每台计算机上都必须运行 nmEnroll() 。另外,应该在每台计算机上针对每个域目录运行 nmEnroll() 。 |
指定节点管理器的用户名和密码
nm_password.properties 文件包含节点管理器的用户名和密码。用它们来验证客户端(例如,管理服务器)与节点管理器之间的连接。
注意: | 该用户名和密码只用来验证节点管理器和客户端之间的连接。它们与服务器管理 ID 和密码无关。 |
当创建域时,使用 nmEnroll() 将必要的配置文件从一台计算机复制到另一台计算机的时候,就创建了该文件。创建 nm_password.properties 后,可以使用管理控制台来更改节点管理器的密码和属性值。更改被传播给 mn_password.properties 文件,并被节点管理器采用。
注意: | 如果手工编辑 nm_password.properties,必须重启节点管理器,才能使更改生效。 |
nm_password.properties 文件必须存在于运行节点管理器的每一台物理计算机上。但是,域中每台计算机上的节点管理器的用户名和密码不必相同。
配置计算机使用节点管理器
WebLogic Server 计算机资源将特定计算机与其承载的服务器实例关联起来,并在该系统上指定节点管理器进程的连接特性。
在管理控制台中,通过“环境”->“计算机”->“<machine_name>”->“节点管理器”页面,为运行节点管理器进程的每台计算机配置计算机定义。在“监听地址”框中输入节点管理器进行监听的 DNS 名称或 IP 地址。
配置 nodemanager.domains 文件
nodemanager.domains
文件指定节点管理器实例控制的域。这样,独立客户端就不需要明确指定域目录。
该文件必须包含为节点管理器实例控制的每个域指定域目录的条目,格式如下:
<domain-name>=<domain-directory>
当用户对域发出命令时,节点管理器将在 nodemanager.domains
中查找域目录。
该文件通过限制节点管理器客户端访问文件中所列出的域提供更高的安全。客户端只能对 nodemanager.domains
中列出的域执行命令。
如果使用 Configuration Wizard 创建了域,则已自动创建 nodemanager.domains
文件。如果需要,您可以手工编辑 nodemanager.domains
以添加域。
注意: | 如果在 nodemanager.domains 中使用反斜杠字符 (\),则必须将其转义为 (\\)。 |
配置远程启动参数
在受管服务器的“服务器”->“配置”->“服务器启动”页面中,指定节点管理器用于启动受管服务器的启动参数。如果不为受管服务器指定启动参数,则节点管理器将使用自己的属性作为启动受管服务器的默认参数。有关详细信息,请参阅表 3-4 节点管理器属性。尽管这些默认值足以启动受管服务器,但为确保启动过程的一致性和可靠性,需要为每个受管服务器实例配置启动参数。
如果您按照“安装指南”中的将节点管理器安装为 Windows 服务中的说明,将节点管理器作为 Windows 服务运行,则必须为节点管理器控制下的每个受管服务器配置下列 JVM 属性:
如果您不设置此选项,由于以下一系列事件,重新引导系统后,节点管理器将无法重新启动受管服务器:
请使用 -Xrs
或 -Xnohup
选项启动受管服务器,通过阻止受管服务器在关闭计算机过程中立即关闭,可以避免发生此系列事件。
设置服务器启动属性
可以使用节点管理器设置服务器的启动属性。可以在 startup.properties 中定义这些属性,或使用 WLST 等管理性实用工具将属性作为对象进行传递。下列部分将概述启动属性及其有效值的设置方法。
startup.properties
节点管理器使用 startup.properties 文件确定启动服务器时的启动和配置。针对每个服务器实例定义该文件,文件位于:
domain_home/servers/server_name/data/nodemanager/startup.properties
startup.properties
的内容源自服务器 Mbean,或者群集 Mbean(如果服务器属于群集的一部分)。有关详细信息,请参阅 Mbean 参考:
使用管理性实用工具设置启动属性
使用 WLST nmStart() 命令时,无法直接确定服务器配置。因此,必须将服务器启动属性作为 WLST 属性对象传递给 nmStart() 命令。
服务器启动属性
可以将下面的服务器启动属性传递给通过节点管理器启动的服务器。
确保已定义管理服务器地址
确保要连接节点管理器进程的每个管理服务器均已定义“监听地址”。如果未定义管理服务器的“监听地址”,当节点管理器启动受管服务器时,它将引导受管服务器联系 localhost 以获取自己的配置信息。
使用管理控制台中的“服务器”->“配置”->“常规”页面设置监听地址。
设置节点管理器环境变量
您可以在命令行上手工设置这些变量,也可以创建自动设置这些变量的启动脚本。WebLogic Server 提供的示例启动脚本(startNodeManager.cmd
和 startNodeManager.sh
)可以设置必需的变量。
配置基于 Java 的节点管理器
建议您对节点管理器进行配置,将其作为操作系统服务运行或作为 Windows 系统上的 Windows 服务运行。默认情况下,操作系统服务启动节点管理器在 localhost:5556
上进行监听。
将节点管理器配置为接受来自远程系统的命令时,必须卸载默认的节点管理器服务,然后再重新安装,以便在非 localhost 监听地址上进行监听。
根据所使用的平台,请按照重新配置 Windows 安装的启动服务或配置基于 Java 的节点管理器的安全中的说明执行。
重新配置 Windows 安装的启动服务
目录 WL_HOME
\server\bin
(其中 WL_HOME
是 WebLogic Server 安装的顶级目录)中包含用于卸载节点管理器服务的脚本 uninstallNodeMgrSvc.cmd
以及将节点管理器作为服务进行安装的脚本 installNodeMgrSvc.cmd
。
配置基于 Java 的节点管理器的安全
节点管理器安全依赖于客户端和服务器之间的单向 SSL 连接。
如果要使用 WebLogic Server 脚本工具 (WLST) nmConnect
命令建立与 Java 节点管理器之间的命令行连接,则需要提供该节点管理器的用户名和密码。节点管理器将根据域的 nm_password.properties
文件验证用户名和密码。有关 nm_password.properties 的详细信息,请参阅指定节点管理器的用户名和密码。
节点管理器凭据位于“安全”>“常规”>“高级选项”控制台页面中。
管理控制台用户不需要明确提供连接节点管理器所需的凭据 - 节点管理器用户名和密码在域配置中,因此可以自动提供。
基于 Java 的节点管理器的远程服务器启动安全
需要提供远程启动用户名和密码才能使用节点管理器启动服务器实例。向管理服务器提供的凭据与向受管服务器提供的凭据不同。
由节点管理器启动的所有服务器实例都对其启动所使用的凭据进行加密并保存于服务器特定的 boot.properties
文件中,以便用于自动重新启动。
检查 nodemanager.properties
节点管理器属性可以为基于 Java 的节点管理器进程定义各种配置设置。您可以在命令行上指定节点管理器属性,或在 nodemanager.properties
文件中进行定义,该文件创建于安装 WebLogic Server 后初次启动节点管理器时所使用的目录中。在命令行上提供的值可以替代 nodemanager.properties
中的值。
nodemanager.properties
创建于 NodeManagerHome 中指定的目录中。如果未定义 NodeManagerHome,则在当前目录中创建 nodemanager.properties。
每次启动节点管理器时,它都在当前目录中查找 nodemanager.properties
,如果在该目录中找不到文件,则将创建该文件。如果节点管理器从未启动过,则无法访问该文件。
表 3-4 描述节点管理器属性。
在很多环境下,nodemanager.properties
中与 SSL 相关的属性可能是唯一需要您明确定义的节点管理器属性。但是,nodemanager.properties
还包含可能需要您指定的非 SSL 属性,具体取决于您的环境和首选项。例如:
对于非 Windows 安装,适合指定StartScriptEnabled
和NativeVersionEnabled
属性。如果节点管理器在多主系统上运行,而您又希望控制它使用的地址和端口,请定义ListenAddress
和ListenPort
。表 3-4 节点管理器属性有关这些文件的详细信息,请参阅节点管理器配置和日志文件。注意: 默认情况下, NodeManagerHome
是WL_HOME/common/nodemanager
。在生产环境下,您可能希望自定义节点管理器根目录的位置。注意: 仅在 WebLogic Server 从版本 7.x 升级到版本 9.x 的过程中才使用此属性。 注意: 仅在 WebLogic Server 从版本 7.x 升级到版本 9.x 的过程中才使用此属性。 注意: 仅在 WebLogic Server 从版本 7.x 升级到版本 9.x 的过程中才使用此属性。
不赞成使用的节点管理器属性
本部分列出了 WebLogic Server 9.x 中不赞成使用的节点管理器属性。
注意: | 发布这些属性的目的在于向后兼容,不应再使用这些属性。在迁移到 WebLogic Server 9.x 时,SSL 配置将继续生效。但是,在运行节点管理器时,不使用可信密钥库。 |
配置节点管理器使用启动脚本和停止脚本
您可以将节点管理器配置为使用脚本启动受管服务器或在服务器完成关闭后执行脚本。可以使用这些脚本在服务器启动前或关闭后执行需要执行的任务。安装和卸载远程磁盘是一个可以使用脚本执行的任务示例。
注意: | 节点管理器使用启动脚本执行任何所需要的配置,然后再启动服务器。相反,停止脚本将在服务器关闭后执行。 |
使用启动脚本
您可以使用启动脚本指定所需的各个启动属性,然后执行启动时需要执行的任何其他任务。要定义启动脚本,请执行下列步骤:
使用停止脚本
您可以使用停止脚本执行服务器关闭后需要执行的任务。要定义停止脚本,请执行下列步骤:
下例显示了可以用于卸载 UNIX 系统上的磁盘的一个停止脚本:
#!#!/bin/sh
FS=/cluster/d2
if grep $FS /etc/mnttab > /dev/null 2>&1 ; then
sync
PIDS=`/usr/local/bin/lsof $FS | awk
'{if ($2 ~/[0-9]+/) { print $2} }' | sort -u`
kill -9 $PIDS
sleep 1
sync
/usr/sbin/umount -f $FS
fi
在基于 Java 的节点管理器中使用 SSL
管理服务器和受管服务器通过单向 SSL 与基于 Java 的节点管理器进行通信。
默认的 WebLogic Server 安装中包括示范标识和信任密钥库,方便您直接使用 SSL。密钥库(DemoIdentity.jks
和 DemoTrust.jks
)安装在 WL_HOME
/server/lib
中。对于测试和开发来说,密钥库配置是完全的。
为生产环境配置 SSL 包括获取节点管理器以及与节点管理器通信的每个管理服务器和受管服务器的标识和信任,然后使用适当的标识和信任配置节点管理器、管理服务器和所有受管服务器。另外,还必须考虑使用主机名验证和管理端口。要配置生产 SSL 组件,请参阅确保 WebLogic Server 安全中的配置 SSL。
在多台计算机上配置节点管理器
如果您的域的受管服务器位于多台物理计算机上,则必须确保每台计算机上都已经安装并配置节点管理器。您可以使用 WLST 命令 nmEnroll 将全部所需的域和配置信息从一台计算机复制到另外一台计算机。有关详细信息,请参阅“WebLogic 脚本工具”中的使用 WLST 控制和配置节点管理器和 nmEnroll()。
将节点管理器配置为 xinetd 服务
配置节点管理器作为 inetd
或 xinetd
服务运行时,下面的注意事项适用:
# 默认值:off
# 描述:将节点管理器作为服务
service nodemgrsvc
{
type = UNLISTED
disable = no
socket_type = stream
protocol = tcp
wait = yes
user = <username>
port = 5556
flags = NOLIBWRAP
log_on_success += DURATION HOST USERID
server = <path-to-jave>/java
env = CLASSPATH=<cp> LD_LIBRARY_PATH=<ldpath>
server_args = -client -DNodeManagerHome=<NMHome> <java options>
<nodemanager options> weblogic.NodeManager -v
}
配置基于脚本的节点管理器
SSH 节点管理器是一个外壳脚本 wlscontrol.sh
,位于 {WL_HOME}/common/bin/
中。wlscontrol.sh
必须在每台承载要使用节点管理器控制的服务器实例的计算机上存在。可以对该脚本进行自定义以满足站点特定需求。
运行节点管理器或节点管理器客户端的每台计算机上都必须具有 SSH 客户端可执行文件。该脚本还必须位于其运行用户 ID 的路径中。通常,SSH 客户端是 Unix 或 Linux 安装的标准部分。
创建节点管理器用户
运行节点管理器之前,应该创建 UNIX 专用用户帐户来执行节点管理器功能。此用户应添加到将承载 SSH 节点管理器的所有计算机以及将承载节点管理器客户端(包括管理服务器)的所有计算机。
替代默认 SSH 端口
节点管理器使用的默认 SSH 端口为 22。可以通过下列方式替代该设置:
-Dweblogic.nodemanager.ShellCommand="ssh -o PasswordAuthentication=no -p %P %H wlscontrol.sh -d %D -r %R -s %S %C"
配置基于脚本的节点管理器安全
节点管理器 SSH 外壳脚本依赖于基于 SSH 用户的安全,以便提供不同计算机上用户之间的安全信任关系。不需要身份验证。您可以创建用于运行节点管理器命令和脚本的 UNIX 用户帐户(通常是每个域一个)。以该用户身份登录的用户无需提供用户名和密码,即可以发出节点管理器命令。
注意: | 还必须确保节点管理器和 WebLogic Server 命令位于运行它们的 UNIX 用户 ID 的路径中。 |
WebLogic Server 脚本的安全
要执行服务器迁移和其他任务,执行 wlscontrol.sh 等脚本的用户 ID 必须具有足够的安全权限。这包括能够通过网络接口启动或停止 IP 地址。
当群集主管理器检测到服务器已经出现故障时,它将执行服务器迁移。然后它将使用 SSH 启动目标计算机上的脚本开始迁移。目标计算机上的脚本将以在群集主管理器上运行服务器的用户 ID 运行。
执行服务器迁移所需要的命令是 ifconfig 和 arping。由于这些脚本需要提升的 OS 权限,注意到这样可以防止潜在的安全漏洞是很重要的。
通过使用 sudo,可以配置自己的 SSH 以仅允许使用提升权限运行 ifconfig 和 arping。
基于脚本的节点管理器的远程服务器启动安全
需要提供远程启动用户名和密码才能使用节点管理器启动服务器实例。向管理服务器提供的凭据与向受管服务器提供的凭据不同。
由节点管理器启动的所有服务器实例都对其启动所使用的凭据进行加密并保存于服务器特定的 boot.properties
文件中,以便用于自动重新启动。
生成和分发键值对
基于脚本的节点管理器使用两种类型的键值对。本部分包含向将承载节点管理器客户端或服务器的计算机分发键值对的说明。
共享键值对
此选项向将承载节点管理器客户端或服务器的所有计算机分发相同的键值对。
最简单的实现方式是设置 LAN,以在每台计算机上都安装节点管理器用户主目录。这样,计算机就能够使用键值对。否则
私钥和公钥的默认位置分别是 ~/.ssh/id_rsa
和 ~/.ssh/id_rsa.pub
。
如果这些密钥存储于其他位置,请修改 ShellCommand
模板,在 ssh
命令中添加一个指定密钥位置的选项。
command="/home/bea/server90/common/nodemanager/nodemanager.sh" 1024 33 23...2323
其中,您可以将示例中的以下字符串替换为 id_rsa.pub
中存储的自己生成的公钥
注意: | 前缀 command=<command> 可以确保使用公钥与计算机建立会话的用户只能运行指定的命令 nodemanager.sh 。这可以确保用户只能执行节点管理器功能,防止未经授权的用户访问数据、系统实用工具以及计算机上的其他资源。 |
各个键值对
启动节点管理器和服务器
下列部分提供有关如何启动和运行基于 Java 的节点管理器和基于脚本的节点管理器的信息。也提供有关使用节点管理器启动服务器的建议步骤的信息。
将节点管理器作为启动服务运行
建议您安装节点管理器以作为启动服务运行。这允许节点管理器在每次重新启动系统时自动启动。
默认情况下,节点管理器仅监听本地主机。如果希望节点管理器接受来自远程系统的命令时,您必须卸载默认节点管理器服务,然后再重新安装,以便在非 localhost 监听地址上进行监听。
使用脚本启动基于 Java 的节点管理器
虽然建议将节点管理器作为操作系统服务来运行,但也可以在命令提示符处或通过脚本手工启动节点管理器。设置节点管理器环境变量中描述了节点管理器需要的环境变量。
节点管理器的示例启动脚本安装于 WL_HOME
\server\bin
目录中,其中 WL_HOME
是 WebLogic Server 的顶级安装目录。在 Windows 系统上使用 startNodeManager.cmd
,而在 UNIX 系统上使用 startNodeManager.sh
。
该脚本设置了必需的环境变量,并在 WL_HOME
/common/nodemanager
中启动节点管理器。节点管理器使用该目录作为输出和日志文件的工作目录。要指定其他工作目录,请使用文本编辑器编辑启动脚本,并将 NODEMGR_HOME
变量的值设置为所需要的目录。
编辑示例启动脚本,以确保命令限定符可以为节点管理器进程设置正确的监听地址和端口号。
启动基于 Java 的节点管理器的命令语法
java [java_option
=value
...] -D[nodemanager_property
=value
]-D[
server_property=value
] w
eblogic.NodeManager
注意: | 如果您没有设置 CLASSPATH 环境变量,请使用 -classpath 选项标识所需要的节点管理器类。 |
nodemanager_property
是节点管理器属性。不要在命令行上提供节点管理器属性值,而应编辑nodemanager.properties
文件,该文件安装在启动节点管理器的目录下。有关详细信息,请参阅表 3-4 节点管理器属性。
注意: | 对于 UNIX 系统: |
注意: | 如果您在UNIX 操作系统(而不是 Solaris 或 HP UX)上运行节点管理器,不能在启动节点管理器时向 java 命令行传递的任何参数中包含任何空格字符。例如,由于名称“big iron ”中存在空格字符,此命令会失败。 |
注意: | 对于 UNIX 系统(而不是 Solaris、HP-UX 和 Linux 操作系统),启动节点管理器时,您必须在命令行上禁用 weblogic.nodemanager.nativeVersionEnabled 选项(或在 nodemanager.properties 中设置属性),才能使用纯 Java 版本。有关详细信息,请参阅检查 nodemanager.properties。 |
运行基于脚本的节点管理器
要使用 SSH 节点管理器命令外壳,请使用下面的命令行选项启动管理服务器:
-Dweblogic.nodemanager.ShellCommand='ssh -o PasswordAuthentication=no %H wlscontrol.sh -d
%D
-r
%R
-s
%S
%C'
weblogic.nodemanager.ShellCommand
特性指定用于与远程 SSH 节点管理器进行通信以及针对节点管理器控制的服务器实例执行节点管理器功能的命令模板。
模板假定 wlscontrol.sh
位于承载节点管理器的远程计算机的默认路径下。
ssh -o PasswordAuthentication=no %H wlscontrol.sh -d
%D
-r
%R
-s
%S
%C'
表 3-5 中列出了可能的命令行选项。表 3-5 中列出了可能的参数值。
ssh -o PasswordAuthentication=no wlscontrol.sh myserver start
SSH 服务器的监听地址和端口默认为远程计算机上节点管理器所使用的监听地址和端口。域名和域目录假定为目标服务器实例 myserver
所指定的根目录。
ssh -o PasswordAuthentication=no 172.11.111.11 wlscontrol.sh -d ProductionDomain -r ProductionDomain -s ServerA'
向 domains/ProductionDomain
目录下名为 ProductionDomain
的域中名为 ServerA
的服务器实例发出 START
命令。
-o PasswordAuthentication=no
该字符串传递 ssh PasswordAuthentication
选项。如果值为 yes
,则会导致客户端在尝试从控制台进行读取时被挂起。
停止节点管理器