[知识] 避免服务器故障并从服务器故障恢复
避免服务器故障并从服务器故障恢复
有很多种事件可能导致服务器实例故障。通常一个故障条件会导致另外一个故障。电源断电、硬件故障、操作系统崩溃、网络分区以及应用程序意外行为等都可能引起服务器实例的故障。
要满足高可用性的需求,可以实现群集体系结构,以使故障事件的影响最小化。(有关 WebLogic Server
群集中故障转移的信息,请参阅"使用 WebLogic Server 群集"中的群集中的故障转移和复制。)但是,即使在群集环境中,服务器实例也可能会定期出现故障,因此,充分准备恢复过程是很重要的。
下列部分提供服务器实例故障恢复的信息和步骤:
故障预防与恢复功能
WebLogic Server
提供了若干功能,可以帮助预防服务器故障以及从故障中恢复。
超载保护
WebLogic Server
检测可能影响应用程序性能和稳定性的系统负载增加,并允许管理员配置故障预防操作,当负载达到预定义阈值时,系统将自动执行该操作。
超载保护有助于避免因应用程序流量或资源利用达到非预期级别时导致的故障。
发生下列特定条件时,WebLogic Server
将尝试避免故障:
超过工作负荷管理器容量
HTTP 会话计数增加到预定义阈值
内存即将不足时的情况
群集服务故障转移
通过使用 WebLogic Server
群集承载应用程序,可以提高该应用程序的可靠性和可用性。可以将诸如 EJB 和 Web
应用程序等群集服务统一部署在群集中的每个受管服务器上,这样,如果部署服务的服务器实例出现故障,该服务可以故障转移至群集中的另外一个服务器上,既不会中断服务,也不会丢失状态。
有关详细信息,请参阅"使用 WebLogic Server 群集"中的群集中的故障转移和复制。
发生故障的服务器实例自动重新启动
WebLogic Server 自我监视运行状况可以提高域中服务器实例的可靠性和可用性。每个 WebLogic Server 实例中选定的子系统会根据该子系统的特定条件监视其运行状况的状态。例如,JMS 子系统监视 JMS 线程缓冲池的状况,而核心服务器子系统则监视默认和用户定义的执行队列统计信息。如果某个子系统确定它无法再一致可靠地运行,则它会在主机服务器上将其运行状况状态登记为"失败"。
反过来,每个 WebLogic Server
实例也会检查其已登记的子系统的运行状况状态,从而确定其整体运行状况。如果其一个或多个关键子系统已经转为 FAILED 状态,则服务器实例会将其自己的运行状况状态也设置为 FAILED,表示它不能可靠地承载应用程序。
使用节点管理器,服务器运行状况自我监视功能使您能够自动重新引导已发生故障的服务器。这可以提高域的整体可靠性,而且不要求管理员直接干预。
有关详细信息,请参阅使用节点管理器控制服务器。
服务器级迁移
WebLogic Server 提供迁移群集服务器实例的功能。如果群集服务器已经配置为可迁移,则出现故障时,可以根据管理员的命令或自动从一台计算机整体迁移至另外一台计算机上。迁移过程使服务器实例上运行的所有服务转移至另外一台计算机上,但发生故障时正在运行的单元集服务的状态信息除外。有关详细信息,请参阅"使用 WebLogic Server 群集"中的服务器迁移。
服务级迁移
WebLogic Server 支持单个单元集服务的迁移以及服务器级迁移功能(已在前面部分中描述)。单元集服务是在群集中运行的服务,但在所有给定时间都只能在一个实例上运行,例如 JMS 和 JTA 事务恢复系统。
管理员可以将 JMS 服务器或 JTS 事务恢复从群集中的一个服务器实例迁移到另外一个服务器实例上,该迁移可以作为对服务器故障的响应,也可以作为定期调度维护的一部分。该功能可以提高群集中固定服务的可用性,因为当主机服务器出现故障时,这些服务可以在冗余服务器上快速重新启动。
受管服务器独立模式
受管服务器可以维护域配置的本地副本。当受管服务器启动时,它将联系其管理服务器,以检索自受管服务器上次关闭后域配置所发生的更改。如果受管服务器在启动过程中无法连接管理服务器,则它将使用本地缓存的配置信息,即受管服务器最近一次关闭时的配置。如果受管服务器在启动时没有联系管理服务器对配置更新进行检查,则它将以受管服务器独立 (MSI) 模式运行。默认情况下,MSI 模式处于启用状态。有关禁用 MSI
模式的信息,请参阅"管理控制台联机帮助"中的"禁用受管服务器独立"。
故障恢复的目录和文件备份
服务器实例故障恢复要求访问域配置和安全数据。本部分介绍
WebLogic Server 自动执行的文件备份以及建议管理员执行的备份步骤。
服务器实例故障恢复要求访问域配置和安全数据。WebLogic
安全服务将其配置数据存储在 config.xml 文件以及 LDAP 仓库和其他文件中。
有关详细信息,请参阅"了解域配置"中的域配置文件。
备份域配置目录
默认情况下,管理服务器将域配置数据存储在 domain_name/config 目录下,其中 domain_name 是域的根目录。
将 config 目录备份到安全的位置,以防管理服务器出现故障时导致原始副本不可用。如果管理服务器出现故障,您可以将备份版复制到其他计算机上,然后在新计算机上重新启动管理服务器。
受管服务器每次启动时都要联系管理服务器,如果域配置有更改,受管服务器将更新其本地的域 config 目录副本。
在运行过程中,如果域配置发生更改,管理服务器将通知受管服务器更新其本地 /config 目录。因此,每个受管服务器始终在本地缓存中保存配置数据的最新副本。
备份 LDAP 仓库
随 WebLogic Server 安装的默认身份验证、授权、角色映射器和凭据映射器提供程序将其数据存储于 LDAP 服务器中。每个 WebLogic Server 都包含一个嵌入式 LDAP 服务器。管理服务器包含在所有受管服务器上复制的主 LDAP 服务器。只要有安全领域使用这些已安装的提供程序,就应该维护下列目录树的最新备份:
domain_name/servers/adminServer/data/ldap
其中 domain_name 是域的根目录,adminServer 是管理服务器存储运行时数据和安全数据的目录。
每个 WebLogic Server 都具有一个 LDAP 目录,但您仅需要备份管理服务器上的 LDAP 数据,当安全数据发生更新时,主 LDAP 服务器会复制每个受管服务器内的 LDAP 数据。域的管理服务器不可用时,WebLogic 安全提供程序无法修改安全数据。受管服务器上的 LDAP 仓库是副本,不能对其进行修改。
ldap/ldapfiles 子目录包含 LDAP 服务器的数据文件。该目录中的文件包含用户、组、组成员资格、策略和角色信息。ldap 目录下的其他子目录中包含 LDAP 服务器消息日志和关于复制的 LDAP 服务器的数据。
如果正在备份 LDAP 数据时,请勿更新安全提供程序的配置。如果备份 ldap 目录树时发生更改,例如管理员添加一个用户,则
ldapfiles 子目录中的备份可能会变得不一致。如果确实发生更改,即使数据一致,也可能已过时,但 LDAP
备份仍可用,因为服务器每天都挂起一次写操作并创建自己的 LDAP 数据备份。然后将该备份归档在 ldap/backup 目录下的一个 ZIP
文件中,然后继续执行写操作。该备份可以保证一致性,但可能不包含最新的安全数据。
有关配置 LDAP 备份的信息,请参阅"管理控制台联机帮助"中的配置嵌入式 LDAP 服务器的备份。
备份 SerializedSystemIni.dat 和安全证书
每个服务器实例都会创建一个名为 SerializedSystemIni.dat 的文件,并将其置于 /security 目录下。该文件包含经过加密的安全数据,引导服务器时需要使用这些数据。必须对该文件进行备份。
如果配置服务器使用
SSL,则还必须备份安全证书和密钥。用户可以配置这些文件的位置。
WebLogic Server 退出代码及故障后重新启动
服务器实例停止时会发出一个退出代码。退出代码的值可以提供关于服务器进程结束时所处状况的信息。当节点管理器控制下的服务器实例退出时,节点服务器将使用退出代码确定是否重新启动服务器实例。其他高可用性代理或脚本也可以使用服务器退出代码确定服务器实例退出后是否要采取一些操作。下表中定义了服务器退出代码:
表 4-1 WebLogic
Server 退出代码
退出代码值
含义
关于重新启动的建议
小于 0
负值表示服务器实例在状态转换过程中出现故障,终止时处于不稳定状况。
例如,如果向配置无效的服务器实例发出"以待机模式启动"命令,则该服务器实例将出现故障,并处于转换状态
STARTING 中,而没有转为 STANDBY 状态。
不要尝试重新启动该服务器。诊断导致服务器进程退出的问题。
0
表示服务器进程因关闭命令(正常关闭或强制关闭)而正常终止。
无。
大于 0
正值表示服务器实例认为一个或多个子系统处于不稳定状况而自行停止。
例如,服务器实例检测到内存不足或线程阻塞,然后自动关闭。
可以重新启动服务器实例。
重新启动发生故障的管理服务器
下列部分介绍如何启动发生故障的管理服务器。
注意:
可以使用节点管理器自动重新启动发生故障的管理服务器。有关详细信息,请参阅使用节点管理器控制服务器。
重新启动管理服务器
请参阅启动和停止服务器。
在同一台计算机上重新启动管理服务器
表 4-2 管理服务器重新启动的各种场景
监听地址定义
管理服务器重新启动的各种场景
同一台计算机
不同计算机
未定义
启动管理服务器。
正在运行的受管服务器将在下一个 ReconnectIntervalSecs 自动重新连接
要启动管理服务器出现故障时不在运行的
MS,不需要更改命令。
安装 WLS。
移动数据。
启动管理服务器。
正在运行的受管服务器将在管理服务器启动后与之联系时获知新的管理服务器地址。
要启动管理服务器出现故障时不在运行的
MS,请在命令行上提供新的管理服务器监听地址。
主机的 DNS 名称或 IP 地址
启动管理服务器。
正在运行的受管服务器将在下一个 ReconnectIntervalSecs 自动重新连接
要启动管理服务器出现故障时不在运行的
MS,不需要更改命令。
安装 WLS。
移动数据。
移动 IP 地址。
正在运行的受管服务器将在下一个 ReconnectIntervalSecs 自动重新连接
要启动管理服务器出现故障时不在运行的
MS,不需要更改命令。
如果不移动 IP 地址
正在运行的受管服务器将在管理服务器启动后与之联系时获知新的管理服务器地址。
要启动管理服务器出现故障时不在运行的
MS,请在命令行上提供新的管理服务器监听地址。
映射至多个主机的 DNS 名称
启动管理服务器。
正在运行的受管服务器将在下一个 ReconnectIntervalSecs 自动重新连接
要启动管理服务器出现故障时不在运行的
MS,不需要更改命令。
安装 WLS。
移动数据。
正在运行的受管服务器将在下一个 ReconnectIntervalSecs 自动重新连接
要启动管理服务器出现故障时不在运行的
MS,不需要更改命令。
在另外一台计算机上重新启动管理服务器
如果因计算机崩溃而无法在同一台计算机上重新启动管理服务器,则您必须按照下面的操作恢复对正在运行的受管服务器的管理:
在新的管理计算机上安装 WebLogic Server 软件(如果尚未安装)。
通过复制备份中的应用程序文件或使用共享磁盘,可以在新的管理服务器上使用这些应用程序文件。应用程序文件的相对位置在新文件系统上与在原管理服务器的文件系统上相同。
通过复制备份中的配置和安全数据或共享磁盘,可以在新的管理服务器上使用这些配置和安全数据。有关详细信息,请参阅故障恢复的目录和文件备份。
在新计算机上重新启动管理服务器。
受管服务器和重新启动的管理服务器
如果管理服务器停止运行,而域中的受管服务器继续运行,则每个受管服务器将以 ServerMBean 特性 AdminReconnectIntervalSeconds
指定的时间间隔定期尝试重新连接管理服务器。默认情况下,AdminReconnectIntervalSeconds 是 10 秒。
管理服务器启动时,它将与受管服务器进行通信并通知它们,管理服务器正在其他 IP 地址上运行。
重新启动发生故障的受管服务器
下列部分介绍如何启动发生故障的受管服务器。有关与事务及 JMS
相关的恢复注意事项,请参阅其他故障主题。
管理服务器可访问时启动受管服务器
如果发生故障的受管服务器可以访问管理服务器,您可以:
使用节点管理器手工重新启动或自动重新启动,但是必须对节点管理器和受管服务器进行配置以支持该行为。有关详细信息,请参阅启动、关闭、挂起和重新启动受管服务器。
通过命令或脚本手工启动。有关说明,请参阅启动和停止服务器。
管理服务器不可访问时启动受管服务器
如果受管服务器在启动期间无法连接到管理服务器,它可能会从
config
目录中读取其本地缓存中的配置数据以检索其配置。以这种方式启动的受管服务器将以受管服务器独立(Managed Server Independence,简称
MSI)模式运行。
了解受管服务器独立模式
当受管服务器启动时,它会尝试与管理服务器联系以检索它的配置信息。如果受管服务器在启动期间无法连接到管理服务器,它可能会通过直接读取配置和安全文件来检索它的配置。以这种方式启动的受管服务器将以受管服务器独立
(MSI) 模式运行。默认情况下,MSI 模式处于启用状态。有关禁用 MSI 模式的信息,请参阅"管理控制台联机帮助"中的"禁用受管服务器独立"。
在受管服务器独立模式下,受管服务器将:
在其本地 config 目录中查找
config.xml,即域的 config.xml的副本。
在其 security 目录中查找
SerializedSystemIni.dat 和 boot.properties,其中包含经过加密的用户名和密码。有关详细信息,请参阅引导标识文件。
如果 config.xml 和 SerializedSystemIni.dat
不在服务器域目录的相应位置上,则可以从管理服务器的域目录中进行复制。
MSI 模式和节点管理器
使用节点管理器只能重新启动服务器实例,而不能以 MSI
模式启动。对于例程启动,节点管理器要求访问管理服务器。如果管理服务器不可用,则必须登录受管服务器的主机才能启动受管服务器。
MSI 模式和安全领域
受管服务器必须访问安全领域才能完成其启动过程。
如果使用 WebLogic Server 所安装的安全领域,则管理服务器将维护 LDAP 服务器来存储域的安全数据。所有受管服务器都将复制该 LDAP 服务器。如果管理服务器出现故障,以 MSI 模式运行的受管服务器将使用复制的 LDAP 服务器提供安全服务。
如果使用第三方安全提供程序,则受管服务器必须能够访问安全数据,然后才能完成其启动过程。
MSI 模式和 SSL 如果对服务器设置
SSL,则每个服务器都需要使用自己的一组证书文件、密钥文件和其他与 SSL 相关的文件。尽管域配置文件中确实为每个服务器存储了 SSL
相关文件的路径名,但受管服务器不会从管理服务器中检索这些文件。除非 SSL 相关文件位于无法访问的计算机上,否则以 MSI 模式启动时并不需要复制或移动这些文件。
MSI 模式和部署
以 MSI 模式启动的受管服务器将从临时目录 serverroot/stage/appName中部署应用程序。
MSI 模式和域日志文件
每个 WebLogic Server 实例都将日志消息写入其本地日志文件和域范围内的日志文件中。域日志文件提供一个中央位置,从该位置可以查看域内所有服务器的消息。
通常,受管服务器将消息转发至管理服务器,而管理服务器将消息写入域日志文件。但是,当受管服务器以 MSI
模式运行时,它将继续在本地服务器日志文件中写入消息,却不将消息转发至域日志文件中。
有关详细信息,请参阅"配置日志文件和筛选日志消息"中的服务器实例如何将消息转发到域日志。
MSI 模式和受管服务器配置更改
如果以 MSI 模式启动受管服务器,除非它已经恢复与管理服务器之间的通信,否则您不能更改其配置。
以 MSI 模式启动受管服务器
注意:
如果发生故障的受管服务器是一个群集受管服务器,且其发生故障时是可迁移服务的活动服务器,请执行"使用
WebLogic Server 群集"中的当前活动主机不可用时的迁移中介绍的步骤。请不要以 MSI 模式启动受管服务器。
以 MSI 模式启动受管服务器:
确保受管服务器的根目录中包含 config 子目录。
如果 config 目录不存在,请从管理服务器根目录或备份中将该目录复制到受管服务器的根目录。
注意:
也可以使用 -Dweblogic.RootDirectory=path
启动选项指定已包含这些文件的根目录。
通过命令行或使用脚本启动受管服务器。
受管服务器将以 MSI
模式运行,直到管理服务器联系受管服务器为止。有关在此场景中重新启动管理服务器的信息,请参阅重新启动发生故障的管理服务器。
其他故障主题
有关从发生故障的服务器实例中恢复 JMS
数据的信息,请参阅"WebLogic JMS 编程"中的配置群集 WebLogic JMS 资源。
有关在发生故障后事务恢复的信息,请参阅"WebLogic JTA
编程"中的服务器发生故障后进行事务恢复。
了解服务器生命周期
WebLogic Server 实例转换的系列状态称作服务器生命周期。在任意时刻,WebLogic Server
实例均处于一种特定操作状态。诸如启动、停止和挂起等命令会导致服务器实例操作状态的特定更改。下列部分介绍 WebLogic Server
状态、状态转换和生命周期命令。
服务器生命周期图表
获取和使用服务器状态
了解服务器生命周期中的服务器状态
使用服务器生命周期命令
在挂起和关闭过程中处理进行中工作
服务器生命周期图表
图 5-1 描绘了服务器生命周期以及状态和生命周期命令之间的关系。
图 5-1
服务器生命周期命令的状态转换
要理解每种状态以及状态之间的关系,请参阅了解服务器生命周期中的服务器状态。有关生命周期命令的信息,请参阅使用服务器生命周期命令。
获取和使用服务器状态
WebLogic Server
将显示和存储有关服务器实例的当前状态以及该服务器实例自启动以来所发生的状态转换的信息。此信息对执行下列任务的管理员有用:
监视服务器实例及其承载的应用程序是否可用
执行日常的操作任务,包括启动和关闭过程
诊断应用程序服务的故障
计划更正性操作,例如服务器实例出现故障或崩溃时服务的迁移
通过如下方式获取服务器状态:
管理控制台 - 多个页面显示状态信息:
在"服务器概要"页面("环境""服务器")上,"服务器"表显示当前域中每个服务器实例的当前状态。
"SERVER_NAME""监视"页面显示当前运行的服务器实例的状态以及实例进入该状态的日期和时间。
"诊断""日志文件",其中包括自服务器实例上次启动后所发生的状态转换的消息(具有时间戳)。
编程方式 - 使用服务器的 weblogic.management.runtime.ServerRuntimeMBean 上的 getState() 方法。例如,要监视运行时间较长的正常关闭进程的进度,请针对独立的线程发出 getstate 查询。有关详细信息,请参阅"[/URL]/wlsmbeanref/mbeans/ServerRuntimeMBean.htmlServerRuntimeMBean。
WebLogic 脚本工具 - 请参阅"WebLogic 脚本工具"中的[URL=http://edocs.bea.com.cn/wls/docs92/config_scripting /manage_servers.html#monitor_server_state]监视服务器状态。
了解服务器生命周期中的服务器状态
这些部分介绍 WebLogic Server
生命周期中的各种状态。
SHUTDOWN 状态
在 SHUTDOWN 状态下,WebLogic Server 实例已配置但处于非活动状态。
由于执行关闭或强制关闭命令,服务器实例进入 SHUTDOWN 状态。另外,服务器实例执行自我运行状况监视而检测到自身处于不稳定状态时,它可以自行取消。只有"失败后自动取消"特性设置为 true 的服务器实例才能在检测到失败时自行取消。有关详细信息,请参阅发生故障的服务器实例自动重新启动。
可以使用"启动"、"以管理模式启动"或"以待机模式启动"命令,将处于 SHUTDOWN 状态的服务器实例转换为 STARTING 状态。
STARTING 状态
在 STARTING 状态期间,由于执行"启动"、"以管理模式启动"或"以待机模式启动"命令,WebLogic Server
实例从 SHUTDOWN 转换为 STANDBY。
在 STARTING 状态中,服务器实例无法接受任何客户端请求或管理请求。
服务器实例可以获取其配置数据:
管理服务器从其 config
目录中检索域配置数据,包括域安全配置。
受管服务器联系管理服务器以获取其配置数据和安全数据。如果配置受管服务器使用 SSL
通信,则它会使用自己的证书文件、密钥文件以及其他 SSL 相关文件,然后联系管理服务器以获取其余的配置数据和安全数据。
注意:
如果受管服务器无法联系其管理服务器,默认情况下,它将使用域 config 目录的本地缓存副本以受管服务器独立模式启动。请参阅了解受管服务器独立模式。
服务器实例将以表 5-1 中的列表顺序启动中该表中列出的服务。
表 5-1 以 STARTING 状态启动的服务
服务
函数
weblogic.management.provider.internal.BeanInfoAccessService
weblogic.management.PropertyService
weblogic.management.internal.DomainDirectoryService
weblogic.upgrade.domain.DomainUpgradeServerService
weblogic.management.upgrade.ConfigurationMigrationService
weblogic.deploy.service.internal.DeploymentService
weblogic.management.provider.internal.RuntimeAccessDeploymentReceiverService
weblogic.management.provider.internal.RuntimeAccessService
weblogic.diagnostics.lifecycle.DiagnosticInstrumentationService
weblogic.t3.srvr.LicenseService
weblogic.t3.srvr.BootService
包括诸如内核、执行队列和服务器运行时等基本服务。
weblogic.management.provider.internal.DomainAccessService
仅管理服务器服务的根。
weblogic.diagnostics.lifecycle.DiagnosticFoundationService
用于日志记录和调试的容器服务。
weblogic.nodemanager.NMService
节点管理器服务,负责通过服务器输出流将服务器状态更改报告至节点管理器。
weblogic.timers.internal.TimerService
weblogic.rjvm.RJVMService 在关闭期间,关闭所有 RJVM(管理服务器连接除外)。
weblogic.protocol.ProtocolService
weblogic.t3.srvr.DomainLibService 注册已配置的协议,使它们可用于出站流量配置和入站配置。受管服务器要求在开始启动顺序时就提供此服务,以便它们向管理服务器提供正确的寻址信息。
weblogic.server.channels.Channel
Service
此服务依赖于一致配置和所注册的协议。启动顺序进行至此,所有协议应均已注册。
此服务启动后,诸如 ServerChannelManager.findDefaultLocalServer Channel()
等寻址信息可用。
weblogic.server.channels.AdminPort
Service
weblogic.t3.srvr.ListenerService
weblogic.transaction.internal.
PrimordialTransactionService
转换助手已经初始化,能够提供各种实用工具:获取事务管理器并将事务与线程关联起来,获取 UserTransaction 对象以及执行其他任务。
注意:
启动顺序进行至此,事务服务自身并未启用。
weblogic.rmi.internal.RMIServerService
仅用于初始化的 RMI 引导服务。
weblogic.jndi.internal.NamingService
weblogic.iiop.IIOPClientService
安装 VM 范围内的委托。
weblogic.management.Primordial
ManagementService
weblogic.ldap.EmbeddedLDAP
weblogic.security.SecurityService
weblogic.jndi.internal.RemoteNaming
Service
weblogic.security.acl.internal.Remote
SecurityService
weblogic.rmi.cluster.RemoteBinder
FactoryService
weblogic.cluster.ClusterService
weblogic.iiop.IIOPService
weblogic.protocol.ProtocolHandler
Service
weblogic.management.internal.AdminService
weblogic.xml.registry.XMLService
weblogic.messaging.interception.
MessageInterceptionService
weblogic.cluster.migration.rmiservice.MigratableRMIService
weblogic.messaging.interception.
configuration.Configurator
weblogic.drs.internal.DataReplication
Service
weblogic.management.provider.internal.EditAccessService
启动管理编辑服务。
weblogic.health.HealthMonitorService
weblogic.cluster.migration.Migration
Service
weblogic.t3.srvr.T3Initialization
Service
初始化不赞成使用的 T3 服务器服务,例如
BootServicesImpl。
weblogic.server.channels.Channel
RuntimeService
启动顺序进行至此,诸如 ServerRuntime.getListenAddress() 等寻址信息和动态更新都可用。
weblogic.store.admin.DefaultStore
Service
weblogic.transaction.internal.
TransactionService
weblogic.jdbc.common.internal.
JDBCService
weblogic.connector.common.
ConnectorService
weblogic.store.admin.Store
DeploymentService
weblogic.jms.JMSServiceServerLifeCycleImpl
weblogic.jms.BridgeService
weblogic.application.Application
ShutdownService
检查正常关闭期间的待定应用程序工作。同时关闭应用程序。
weblogic.messaging.saf.internal.
SAFServerService
weblogic.ejb20.deployer.EJB20Service
weblogic.io.common.internal.File
Service
weblogic.time.server.TimerService
在关闭期间取消应用程序触发器。
weblogic.rmi.internal.HeartbeatHelperService
支持仅协议客户端内的心跳。
weblogic.servlet.internal.WebService
weblogic.webservice.conversation.
internal.ConversationServiceImpl
weblogic.wtc.gwt.WTCServerLife
CycleImpl
com.beasys.CORBA.pool.weblogic.
WLECService
weblogic.management.service.Managed
ServerNotificationService
weblogic.webservice.WSServerService
weblogic.management.mbeanservers.
runtime.internal.RuntimeServerService
运行时 JMX 服务。
weblogic.management.mbeanservers.
edit.internal.EditServerService
weblogic.management.mbeanservers.compatability.internal.
CompatabilityMBeanServerService
weblogic.management.snmp.SNMPService
weblogic.management.deploy.
classdeployment.ClassDeploymentService
添加启动和关闭类的处理。
weblogic.server.ServerLifeCycleService
处理服务器生命周期运行时 Mbean
的创建以允许控制域。
weblogic.server.channels.EnableAdmin
ListenersService
在服务器进入 ADMIN 状态之前启用管理端口。
domainweblogic.diagnostics.lifecycle.
DiagnosticSystemService
STANDBY 状态
处于 STANDBY 状态的服务器实例不处理任何请求,它的常用监听端口处于关闭状态。管理端口处于打开状态,可以接受将服务器实例转换为 RUNNING 或 SHUTDOWN 状态的生命周期命令。不接受其他管理请求。
以待机模式启动服务器实例是将其作为"热"备份的一个方法,"热"备份是高可用性环境下有用的功能。
唯一能够使服务器实例进入 STANDBY
状态并保持该状态的生命周期命令是"以待机模式启动"命令。而发出"启动"或"以管理模式启动"命令时,STANDBY 状态仅是服务器实例状态转换所经历的一个中间状态。
ADMIN 状态
在 ADMIN 状态下,WebLogic Server 启动并运行,但仅用于管理操作,您可以在此状态下执行服务器级和应用程序级管理任务。当服务器实例处于 ADMIN 状态时:
管理控制台可用。
服务器实例接受具有 admin
角色的用户的请求。拒绝非 admin 用户的请求。
应用程序在应用程序 ADMIN
状态下激活。它们仅接受具有 admin 角色的用户的请求。具有 admin 角色的用户在访问状态为 ADMIN的应用程序的同时,仍然能够继续访问所有应用程序功能,而不仅仅是访问管理功能。
JDBC、JMS 和 JTA 子系统处于活动状态,可以对它们执行管理操作。但当服务器处于 ADMIN 状态时,您无需具有管理员级特权即可访问这些子系统。
允许部署或重新部署,使用"恢复"命令将服务器实例从 ADMIN 转换为 RUNNING 状态时,这些部署生效。
ClusterService 处于活动状态,它将监听其他群集成员的心跳和公告。它可以检测到其他受管服务器已经加入群集,但其他群集成员无法看到它。
使用"以管理模式启动"、"挂起"或"强制挂起"命令可以将服务器实例转换为 ADMIN 状态。
而执行"启动"、"关闭"和"强制关闭"命令时,ADMIN 状态仅是服务器实例状态转换所经历的一个中间状态。
使用"恢复"命令可以将服务器实例由 ADMIN 状态转换为 RUNNING,或使用"关闭"或"强制关闭"命令将其转换为 SHUTDOWN。
RESUMING 状态
在此转换状态中,WebLogic Server 执行将其从 STANDBY 或 ADMIN 状态转换为 RUNNING 状态所需要的操作。
发出"恢复"命令时,服务器实例转换至 RESUMING 状态。而发出"启动"命令时,RESUMING 状态仅是服务器实例状态转换所经历的一个中间状态。
RUNNING 状态
在 RUNNING 状态下,WebLogic Server 处于完全工作状态,可以向客户端提供服务并作为一个完整的群集成员运行。
使用"启动"命令或"恢复"命令,服务器实例可以从 ADMIN 或 STANDBY 状态转换至 RUNNING 状态。
使用正常和强制"挂起"和"关闭"命令可以将服务器实例由
RUNNING 状态转换至 SUSPENDING 状态或 FORCE_SUSPENDING 状态。
SUSPENDING 状态
在此转换状态期间,WebLogic Server 执行将自身置为 ADMIN 状态所需要的操作,按顺序挂起 WebLogic Server 子系统和服务的子集,完成当前正在处理中的应用程序工作("进行中"工作)的预定义部分。
发出"挂起"命令时,服务器实例转换至 SUSPENDING 状态。而发出"关闭"命令时,SUSPENDING 状态仅是服务器实例状态转换所经历的一个中间状态。
有关进行中工作的信息,请参阅在挂起和关闭过程中处理进行中工作。
注意:
当处于 SUSPENDING 状态时,工作管理器会完成应用程序线程中待定工作的正在进行中的处理操作。有关详细信息,请参阅"配置
WebLogic Server 环境"中的了解工作管理器。
FORCE_SUSPENDING 状态
在此转换状态期间,WebLogic Server 执行将自身置为 ADMIN 状态所需要的操作,按顺序挂起 WebLogic Server 子系统和服务的子集。在 FORCE_SUSPENDING 状态期间,WebLogic Server 不能正常完成进行中工作,将放弃进行中的应用程序工作。
发出"强制挂起"或"强制关闭"命令时,FORCE_SUSPENDING 状态仅是服务器实例状态转换所经历的一个中间状态。
SHUTTING_DOWN 状态
在此转换期间,WebLogic Server 完成子系统和服务的挂起,而后不接受应用程序请求或管理请求。
发出"关闭"或"强制关闭"命令时,服务器实例转换至 SHUTTING_DOWN 状态。
FAILED 状态
正在运行的服务器实例可能会因为内存不足出现异常、应用程序线程阻塞或一个或多个关键服务无法工作而失败。服务器实例监视其自身的运行状况,一旦检测到一个或多个关键子系统处于不稳定状态,即声明自身为
FAILED。
FAILED
服务器实例无法满足管理请求或客户端请求。
当服务器实例进入 FAILED 状态时,它将尝试返回非故障状态。如果它在转换为 ADMIN 状态之前出现故障,则服务器实例将自行关闭,其退出代码小于零。有关服务器退出代码的信息,请参阅WebLogic Server 退出代码及故障后重新启动。
如果服务器实例转换为 ADMIN 状态后,但尚未转换为 RUNNING状态之前出现故障,如果已启用管理端口,则它将默认返回至 ADMIN 状态。
注意:
如果需要,您可以对转换为 ADMIN状态后失败的服务器实例进行配置,使其自行关闭,而不是返回至 ADMIN 状态服务器实例可以从任意其他状态进入 FAILED 状态。但是,一旦服务器实例进入 FAILED 状态,则无法直接返回到运行状态。FAILED 是个致命状态,服务器必须先进入 ADMIN 或 SHUTDOWN 状态,然后才能返回 RUNNING 状态。
注意:
从理论上看,进入 FAILED 状态的服务器仍可能再次可用,例如当导致故障状态的挂起线程不再挂起时。
注意:
但是,一旦进入 FAILED 状态,服务器必须先进入 ADMIN 或 SHUTDOWN 状态,然后才能返回至 RUNNING。
使用服务器生命周期命令
本部分介绍每个生命周期命令、如何发出命令及这些命令对服务器实例状态的影响效果。有关以下内容的详细信息:
如何发出生命周期命令,请参阅:
"WebLogic
脚本工具"中的生命周期命令和管理服务器和服务器生命周期
"管理控制台联机帮助"中的启动和停止服务器
启动和停止服务器
节点管理器在使用节点管理器的环境中处理关键生命周期事件的相关过程,请参阅节点管理器在 WebLogic Server
环境下如何工作。
每个生命周期状态期间发生的处理过程,请参阅了解服务器生命周期中的服务器状态。
有关服务器状态和服务器生命周期之间的关系的图解,请参阅图 5-1。
启动
"启动"命令可以将服务器实例从 SHUTDOWN 状态转换为 RUNNING
状态。根据服务器实例的初始状态,启动命令将引起下列状态转换:
SHUTDOWNSTARTINGSTANDBYADMINRESUMINGRUNNING
ServerMBean.StartupMode 特性使您可以指定服务器实例启动时所处的状态。使用 WLST 时或将该特性指定为 java weblogic.Server
启动选项时,该特性的值将显示在管理控制台中,并可在管理控制台中进行配置。如果未指定启动模式值(在命令行上、管理控制台中或 config.xml
文件中),默认值是以 RUNNING 状态启动。
有关详细信息,请参阅"管理控制台联机帮助"中的指定启动模式以及"WebLogic Server 命令参考"中的其他服务器配置选项。
命令用法
请参阅"WebLogic 脚本工具"中的 start、startServer 和
nmStart,以及"管理控制台联机帮助"中的从管理控制台启动受管服务器。
以待机模式启动
已启用待机模式的"启动"命令可以将服务器实例从 SHUTDOWN 状态转换为 STANDBY 状态,其状态转换顺序如下。
SHUTDOWNSTARTINGSTANDBY
命令用法
请参阅"WebLogic Server 命令参考"中的 -Dweblogic.management.startupmode
以及"管理控制台联机帮助"中的以待机模式启动受管服务器。
以管理模式启动
已启用管理模式的启动命令可以将服务器实例从 SHUTDOWN 状态转换为 ADMIN 状态,其状态转换顺序如下:
SHUTDOWNSTARTINGSTANDBYADMIN
命令用法
请参阅"WebLogic Server 命令参考"中的 -Dweblogic.management.startupmode
以及"管理控制台联机帮助"中的 以管理模式启动受管服务器。
恢复
"恢复"命令可以将服务器实例从 STANDBY 或 ADMIN 状态转换为 RUNNING 状态,其状态转化顺序如下:
STANDBYADMINRESUMINGRUNNING
命令用法
请参阅"WebLogic 脚本工具"中的resume以及"管理控制台联机帮助"中的恢复服务器。
正常挂起
"正常挂起"命令可以将服务器实例从 RUNNING 状态转化为 ADMIN
状态,能够正常处理进行中的工作,其状态转化顺序如下:
RUNNINGSUSPENDINGADMIN
命令用法
请参阅"WebLogic 脚本工具"中的 suspend 以及"管理控制台联机帮助"中的挂起服务器。
强制挂起
"强制挂起"命令可以将服务器实例从 RUNNING 状态转化为 ADMIN
状态,不能正常处理进行中的工作,其状态转化顺序如下:
RUNNINGFORCE_SUSPENDINGADMIN
命令用法
请参阅"管理控制台联机帮助"中的强制挂起服务器。
正常关闭
"正常关闭"命令可以将服务器实例从 RUNNING 状态转化为 SHUTDOWN
状态,能够正常处理进行中的工作,其状态转化顺序如下:
RUNNINGSUSPENDINGADMINSHUTTING_DOWNSHUTDOWN
命令用法
请参阅"WebLogic 脚本工具"中的 shutdown 以及"管理控制台联机帮助"中的关闭服务器实例。
控制正常关闭
ServerMBean 有两个特性可以控制正常关闭过程的长度。可以在 "SERVER_NAME""控制""启动/停止"页显示和配置它们的值:
关闭期间忽略会话 - 如果启用此选项,WebLogic Server 将立即丢弃所有
HTTP 会话,而不等到这些会话完成或超时。由于默认的会话超时时间为 1 小时,因此等待放弃的会话超时可能会大大延长正常关闭过程。
正常关闭超时 -
指定服务器实例完成正常关闭过程的时间限制。如果提供了超时值,并且服务器实例在该时间段内未完成正常关闭过程,WebLogic Server
将对该服务器实例执行强制关闭。
请参阅"管理控制台联机帮助"中的控制正常关闭以及关闭群集中的服务器。
关闭操作和应用程序取消部署
在正常关闭和强制关闭过程中,子系统将相应地取消部署应用程序。这种处理会引起应用程序代码调用,例如关闭过程中调用
Servlet destroy() 或 ejbRemove()。在关闭顺序中,JMS、JDBC 和事务均在应用程序关闭后才关闭,允许应用程序代码访问 JMS、JDBC 以及事务服务。
强制关闭
强制关闭命令将服务器实例从任意状态转换为 SHUTDOWN 状态,不能正常处理进行中的工作。针对处于 RUNNING 状态的服务器实例执行强制关闭命令时,将引起如下顺序的状态转换:
RUNNINGFORCE_SUSPENDINGADMINSTANDBYSHUTDOWN
命令用法
请参阅"WebLogic 脚本工具"中的 shutdown 以及"管理控制台联机帮助"中的强制关闭服务器。
强制关闭将立即执行 - WebLogic Server
子系统将停止当前进行中的所有应用程序处理。对处于任何状态的服务器实例都可以执行强制关闭。
如果致命异常导致强制关闭失败,经过 ServerMBean 中的 ServerLifecycleTimeoutVal特性所指定的秒数后,服务器将退出。
注意:
强制关闭群集中的服务器实例时,如果群集服务的状态复制至其他服务器实例,则该群集服务会故障转移至群集中的其他服务器实例上。但是:
如果在承载尚未创建次级会话的 HTTP
会话的服务器实例上发出强制关闭命令,则该会话将丢失。
如果在承载有状态会话 EJB 的复制状态的服务器实例上发出强制关闭命令,且承载该
EJB 的(主)服务器实例出现故障,由于 EJB 复制状态已经不再存在,所以 EJB 不会故障转移。
有关在强制关闭过程中取消部署处理的信息以及相关编程注意事项,请参阅关闭操作和应用程序取消部署。
在挂起和关闭过程中处理进行中工作
下列部分介绍每个子系统如何在 SUSPENDING 和 SHUTTING_DOWN
操作期间处理进行中的工作。
RMI 子系统
远程方法调用(Remote Method
Invocation,简称 RMI)子系统分三个步骤执行挂起。在该过程中,前一个步骤完成后,才能开始下一个步骤。
非事务 RMI 服务将拒绝非事务远程请求。
"客户端启动的事务服务"等待完成待定的客户端事务。
远程 RMI 服务拒绝所含有事务或不带事务的远程请求。
完成这些步骤后,不接受任何远程客户端请求。将接受具有管理特权的请求和内部系统调用。
当群集服务器实例接受指示准备挂起时,RMI
系统将拒绝所有内存中复制调用,以允许其他群集成员为复制会话选择新主机。
Web 容器
Web
容器子系统接受指示准备挂起时,它将拒绝新的会话请求。将根据持久性方法处理现有会话:
非持久性 - 允许完成非持久性待定会话。
群集中的内存中复制 - 立即挂起具有次级会话的会话。如果主会话没有次级会话,Web
容器将一直等待,直到次级会话创建或会话超时(取决于两者谁先发生)为止。
JDBC 持久性和文件持久性 - Web 容器立即挂起在数据库或文件存储中复制的会话。
是否完成待定会话是可选的。要立即丢弃所有会话,请使用 管理控制台的"SERVER_NAME"->"控制"->"启动/停止"页面上的"关闭期间忽略会话"选项,或在
WLST shutdown 命令中使用
-ignoreSessions 选项。
在群集中,丢弃主会话时,除正常关闭的服务器上的主会话外,其他群集实例上的相应复制会话也将被破坏。
计时器服务
计时器服务将取消应用程序执行队列上运行的所有触发器。应用程序执行队列包括默认队列和通过 ExecuteQueueMBean 配置的队列。
应用程序服务
应用程序服务将在挂起前完成应用程序队列中的待定工作。应用程序执行队列包括默认队列和通过 ExecuteQueueMBean 配置的队列。
EJB 容器
EJB 容器可以挂起消息驱动 Bean(Message
Drive Bean,简称 MDB)。
JMS 服务
Java 消息服务(Java Messaging
Service,简称 JMS)将自身标记为正在挂起,这将导致新请求被拒绝。JMS 系统可以以如下方式正常挂起:
如果正在关闭的服务器实例具有 JMS 服务器:
立即返回因消息配额而等待的任何已发送请求。
属于 JMS 服务器的目标上的所有使用者均将关闭。
持久性存储关闭。
如果正在关闭的服务器实例具有 JMS 连接工厂:
客户端连接将关闭。
通常,JMS 子系统正常挂起过程中的每个步骤均可快速完成(1
秒钟之内)。如果请求需要的磁盘 I/O 大于正常磁盘 I/O,例如 100 兆字节消息的持久性"发送"请求,则完成客户端请求可能需要较长时间。
您可以监视 JMS 服务器的连接数量、JMS
连接工厂的使用者数量以及使用 JMS 运行时 Mbean(包括 JMSRuntimeMbean、JMSConnectionRuntimeMBean、JMSConsumerRuntimeMBean)的相关运行时信息。
JDBC 服务
JDBC 服务可以关闭连接缓冲池中的空闲连接。
注意:
如果连接仍在使用中,关闭 JDBC 服务将失败,也无法正常关闭。要在应用程序仍然保持连接时关闭服务器实例,请使用强制关闭命令,如强制关闭中所描述。
事务服务
事务服务等待事务管理器中的待定事务计数降低至零后才挂起。完成所有待定事务的过程可能比较长,这取决于已配置的事务超时。
如果由于存在待定事务而使正常关闭耗费较长时间,则可以使用强制关闭命令停止关闭。强制关闭将挂起所有子系统中的所有待定工作。
启动 WebLogic Server 实例
在下表中,WL_HOME 指 WebLogic Server 的顶级安装目录,例如 c:/bea/weblogic90/。
表 A-1 启动服务器实例
启动
操作
MedRec 服务器
调用:
WL_HOME/samples/domains/medrec/bin/startWebLogic.cmd (Windows)
WL_HOME/samples/domains/medrec/bin/startWebLogic.sh (UNIX)
服务器作为 medrec 域中的管理服务器启动。
在 Windows 上,可以从"开始"菜单中启动
Medical Records Server("Examples""WebLogic
Server""Start Medical Records
Server")。默认情况下,medrec 域的用户名和密码设置为 weblogic。
Examples 服务器
调用:
WL_HOME/samples/domains/wl_server/bin/startWebLogic.cmd (Windows)
WL_HOME/samples/domains/wl_server/bin/startWebLogic.sh (UNIX)
服务器作为 wl_server
域中的管理服务器启动。
在 Windows 上,可以从"开始"菜单中启动
Examples 服务器("Examples""WebLogic Server""启动 Examples
服务器")。默认情况下,wl_server 域的用户名和密码设置为 weblogic。
您创建的管理服务器
调用:
DOMAIN_NAME/bin/startWebLogic.cmd (Windows)
DOMAIN_NAME/bin/startWebLogic.sh (UNIX)
其中 DOMAIN_NAME 是域所在的目录的名称,通常是 BEA_HOME/user_projects/domains/DOMAIN_NAME。
如果服务器提示您输入用户名和密码,请输入具有服务器启动权限的 WebLogic Server
用户的名称。有关详细信息,请参阅提供用户凭据以启动和停止服务器。
注意:
在开发环境下,这通常已足够用于启动管理服务器并将应用程序直接部署于管理服务器上。在生产环境下,则应创建受管服务器来运行应用程序。
在 Windows 上,Configuration
Wizard 将在"开始"菜单中创建启动所创建的管理服务器的快捷方式("User Projects""DOMAIN_NAME""Start Admin Server for
WebLogic Domain")。
受管服务器
启动域的管理服务器。
启动将承载要启动的受管服务器的计算机上的节点管理器。
WebLogic Server
自定义安装过程可以有选择的安装节点管理器,并将其作为 Windows 系统中的 Windows 服务来启动。
如果节点管理器尚未运行,可以在命令提示符下或使用脚本手工启动节点服务器。请参阅启动节点管理器和服务器。
在 Windows
上,您可以使用"开始"菜单中的快捷方式启动节点管理器("工具""节点管理器")。
启动域的管理控制台。
请参阅"WebLogic Server 和 WebLogic Express 简介"中的启动管理控制台。
通过将受管服务器分配至运行节点管理器的计算机上,可以将受管服务器与节点管理器关联起来。
请参阅"管理控制台联机帮助"中的配置计算机和将服务器实例分配给计算机。
在管理控制台的左侧窗格中,展开"环境",然后选择"服务器"。
在"服务器"表中,单击要启动的受管服务器的名称。
选择"控制""启动/停止"。
在"服务器状态"表中,选中要启动的服务器的名称旁边的复选框,然后单击"启动"。
单击"是"确认。
有关启动受管服务器的其他方法的信息,请参阅启动和停止服务器。
受管服务器群集
要使用节点管理器启动群集受管服务器,请参阅"管理控制台联机帮助"中的启动群集中的受管服务器。
关闭 WebLogic Server 实例
建议通过管理控制台关闭 WebLogic Server 实例:
请参阅"管理控制台联机帮助"中的关闭服务器实例和控制正常关闭。
有关正常关闭群集中的受管服务器的信息,请参阅"管理控制台联机帮助"中的关闭群集中的服务器。
或者,调用 Weblogic Server
停止脚本关闭服务器。请参阅使用停止脚本关闭服务器。
在 Windows 上,您可以从"开始"菜单中停止使用
Configuration Wizard 创建的 Medical Records 服务器、Examples 服务器和管理服务器。