节点怎么用代理
怎么用代理 时间:2021-04-29 阅读:(
)
SunJavaSystemApplicationServer9.
1高可用性管理指南SunMicrosystems,Inc.
4150NetworkCircleSantaClara,CA95054U.
S.
A.
文件号码820–46102007年12月版权所有2007SunMicrosystems,Inc.
4150NetworkCircle,SantaClara,CA95054U.
S.
A.
保留所有权利.
本产品或文档受版权保护,其使用、复制、发行和反编译均受许可证限制.
未经Sun及其许可方(如果有)的事先书面许可,不得以任何形式、任何手段复制本产品或文档的任何部分.
第三方软件,包括字体技术,均已从Sun供应商处获得版权和使用许可.
本产品的某些部分可能是从BerkeleyBSD系统衍生出来的,并获得了加利福尼亚大学的许可.
UNIX是X/OpenCompany,Ltd.
在美国和其他国家/地区独家许可的注册商标.
Sun、SunMicrosystems、Sun徽标、docs.
sun.
com、AnswerBook、AnswerBook2和Solaris是SunMicrosystems,Inc.
在美国和其他国家/地区的商标或注册商标.
所有的SPARC商标的使用均已获得许可,它们是SPARCInternational,Inc.
在美国和其他国家/地区的商标或注册商标.
标有SPARC商标的产品均基于由SunMicrosystems,Inc.
开发的体系结构.
OPENLOOK和SunTM图形用户界面是SunMicrosystems,Inc.
为其用户和许可证持有者开发的.
Sun感谢Xerox在研究和开发可视或图形用户界面的概念方面为计算机行业所做的开拓性贡献.
Sun已从Xerox获得了对Xerox图形用户界面的非独占性许可证,该许可证还适用于实现OPENLOOKGUI和在其他方面遵守Sun书面许可协议的Sun许可证持有者.
美国政府权利—商业软件.
政府用户应遵循SunMicrosystems,Inc.
的标准许可协议,以及FAR(FederalAcquisitionRegulations,即"联邦政府采购法规")的适用条款及其补充条款.
本文档按"原样"提供,对于所有明示或默示的条件、陈述和担保,包括对适销性、适用性和非侵权性的默示保证,均不承担任何责任,除非此免责声明的适用范围在法律上无效.
080401@19860目录前言151ApplicationServer中的高可用性21高可用性概述21高可用性会话持久性22高可用性Java消息服务22RMI-IIOP负载平衡和故障转移23更多信息23ApplicationServer如何提供高可用性24负载平衡器插件24会话状态数据的存储24高可用性群集26从故障中恢复27使用SunCluster27手动恢复27使用Netbackup29重新创建域管理服务器30迁移DAS302安装和设置高可用性数据库33设置HADB前的准备工作33先决条件和限制34配置网络冗余34配置共享内存和信号37在Solaris上配置共享内存和信号37在Linux上配置共享内存38同步系统时钟393安装40HADB安装40节点监控进程权限40授予节点监控进程root用户权限41设置高可用性42准备高可用性系统42启动HADB管理代理42配置高可用性群集43配置高可用性应用程序43重新启动群集43重新启动WebServer44清除作为负载平衡器使用的WebServer实例44升级HADB44将HADB升级到更新版本45注册HADB软件包45取消注册HADB软件包46替换管理代理的启动脚本47验证HADB升级473管理高可用性数据库49使用HADB管理代理49启动管理代理50管理代理命令语法54自定义管理代理配置55在HADB主机上自定义管理代理配置55使用hadbm管理命令57命令语法57安全性选项58常规选项59环境变量60配置HADB61创建管理域61创建数据库62创建数据库63查看和修改配置属性67目录SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月4配置JDBC连接池72管理HADB74管理域75管理节点76管理数据库78从会话数据损坏恢复82使会话存储恢复到一致状态82扩展HADB83为现有节点添加存储空间83添加计算机84将新计算机添加到现有HADB实例84添加节点84重新分段数据库86通过重新创建数据库添加节点87通过重新创建数据库来添加节点87监视HADB88获取HADB的状态88获取设备信息90获取运行时资源信息92维护HADB计算机94在一台计算机上执行维护95在所有HADB计算机上执行规划的维护95在所有HADB计算机上执行规划的维护95在出现故障时执行非规划的维护96清除和归档历史文件964配置Web服务器以实现负载平衡99配置SunJavaSystemWebServer100配置SunJavaSystemWebServer100配置SunJavaSystemWebServer以使用"自动应用"功能101在SSL模式下为SunJavaSystemWebServer6.
1设置负载平衡器101为SunJavaSystemWebServer6.
1导出和导入DAS证书103在SSL模式下为WebServer7设置负载平衡器104为SunJavaSystemWebServer7导出和导入DAS证书105使用ApacheWebServer107目录5对使用ApacheWebServer的要求108在安装负载平衡器插件之前配置Apache109安装SSL可识别Apache109导出和导入DAS证书112负载平衡器插件安装程序所做的修改112在安装负载平衡器插件之后配置Apache113为Apache创建安全性证书113在Solaris和Linux上启动Apache114验证安装114使用MicrosoftIIS115配置MicrosoftIIS以使用负载平衡器插件115自动配置的sun-passthrough属性1175配置HTTP负载平衡119负载平衡器插件的新增功能119自动应用119加权RoundRobin120用户定义的负载平衡120配置用户定义的负载平衡120HTTP负载平衡器如何工作121HTTP负载平衡算法121设置HTTP负载平衡122设置负载平衡的先决条件122设置负载平衡的步骤123使用管理控制台设置负载平衡123使用asadmin工具设置负载平衡124HTTP负载平衡器部署126配置负载平衡器126在DAS上配置HTTP负载平衡器127创建HTTP负载平衡器引用128启用用于负载平衡的服务器实例128启用用于负载平衡的应用程序129创建HTTP运行状况检查器129导出负载平衡器配置文件131使用管理控制台导出负载平衡器配置131目录SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月6使用asadmin工具导出负载平衡器配置131更改负载平衡器配置132启用动态重新配置132禁用(停止)服务器实例或群集133禁用服务器实例或群集133禁用(停止)应用程序133禁用应用程序134配置HTTP和HTTPS故障转移134在负载平衡器中使用重定向135配置幂等URL138配置多个Web服务器实例139配置多个Web服务器实例139升级应用程序而不使可用性受到损失139应用程序兼容性139在单个群集中升级140在单个群集中升级应用程序140在多个群集中进行升级142在两个或多个群集中升级兼容的应用程序:142升级不兼容的应用程序144通过创建第二个群集来升级不兼容的应用程序144监视HTTP负载平衡器插件145配置日志消息145日志消息类型146启用负载平衡器日志记录147打开负载平衡器日志记录147了解监视消息1486使用ApplicationServer群集149群集概述149组管理服务149对群集启用或禁用GMS150配置GMS150使用群集150创建群集151为群集创建服务器实例152目录7配置群集153启动、停止和删除群集实例153在群集中配置服务器实例154为群集配置应用程序155为群集配置资源155删除群集156迁移EJB计时器156升级组件而不使服务受到任何损失1577管理配置159使用配置159配置159default-config配置160创建实例或群集时创建的配置160唯一端口号和配置161使用命名配置162创建命名配置162编辑命名配置的属性162编辑命名配置的属性163编辑引用配置的实例的端口号163查看命名配置的目标164删除命名配置1648配置节点代理167什么是节点代理167节点代理出现故障后的服务器实例行为168部署节点代理169联机部署节点代理169脱机部署节点代理170同步节点代理和域管理服务器171节点代理同步171服务器实例同步172同步库文件173独特的设置和配置管理174同步大型应用程序174目录SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月8查看节点代理日志175处理节点代理175如何执行节点代理任务176节点代理占位符176创建节点代理占位符176创建节点代理177创建节点代理178为可通过DNS访问的主机创建节点代理178启动节点代理179停止节点代理179删除节点代理180查看常规节点代理信息180删除节点代理配置181编辑节点代理配置182编辑节点代理区域182编辑节点代理的JMX侦听器1829配置高可用性会话持久性和故障转移185会话持久性和故障转移概述185要求185限制186设置高可用性会话持久性187设置高可用性会话持久性187启用会话可用性188HTTP会话故障转移189为Web容器配置可用性190使用管理控制台启用Web容器的可用性190为单个Web应用程序配置可用性192结合使用会话故障转移和单点登录193有状态会话Bean故障转移194为EJB容器配置可用性195启用EJB容器的可用性195为单个应用程序或EJB模块配置可用性196为单个Bean配置可用性197指定对其执行检查点操作的方法197目录910Java消息服务的负载平衡和故障转移199Java消息服务概述199更多信息199配置Java消息服务200Java消息服务集成201JMS主机列表201连接池和故障转移202负载平衡的消息流入203JMS服务高可用性204结合使用ApplicationServer与MQ群集204高可用性MQ群集205在本地模式下配置高可用性代理群集205在远程模式下配置高可用性代理群集206为非HA群集自动建立群集206使用ApplicationServer群集启用MQ群集20711RMI-IIOP负载平衡和故障转移211概述211要求212算法212设置RMI-IIOP负载平衡和故障转移213为应用程序客户机容器设置RMI-IIOP负载平衡213索引217目录SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月10表表2–1hadbmregisterpackage选项46表3–1管理代理通用选项55表3–2管理代理服务选项(仅限于Windows)55表3–3配置文件设置56表3–4hadbm安全性选项59表3–5hadbm常规选项59表3–6HADB选项和环境变量60表3–7hadbmcreate选项63表3–8配置属性69表3–9HADB连接池设置73表3–10HADB连接池属性73表3–11HADBJDBC资源设置74表3–12hadbmclear选项81表3–13hadbmaddnodes选项85表3–14HADB状态89表3–15hadbmresourceinfo命令选项92表5–1负载平衡器配置参数127表5–2运行状况检查器参数130表5–3运行状况检查器手动设置属性130表8–1在远程服务器实例之间同步的文件和目录172表8–2如何执行节点代理任务1761112示例示例2–1设置多路经.
35示例2–2注销HADB的示例47示例3–1hadbm命令示例58示例3–2创建HADB管理域62示例3–3创建数据库的示例65示例3–4使用hadbmget的示例67示例3–5创建连接池.
74示例3–6启动节点的示例77示例3–7停止节点的示例77示例3–8重新启动节点的示例78示例3–9启动数据库的示例79示例3–10停止数据库的示例79示例3–11删除数据库的示例82示例3–12设置数据设备大小的示例84示例3–13添加节点的示例85示例3–14重新分段数据库示例87示例3–15获取HADB状态的示例89示例3–16获取设备信息的示例91示例3–17数据缓冲池信息示例93示例3–18锁信息示例.
93示例3–19日志缓冲区信息的示例94示例3–20内部日志缓冲区信息示例94示例8–1创建节点代理178示例9–1已启用可用性的EJB部署描述符示例197示例9–2指定方法检查点操作的EJB部署描述符示例198示例11–1为RMI-IIOP加权Round-Robin负载平衡设置负载平衡权重2141314前言本书介绍了ApplicationServer中的高可用性功能,其中包括HTTP负载平衡、群集、会话持久性和故障转移,以及高可用性数据库(HighAvailabilityDatabase,HADB).
本前言包含有关整个SunJavaTMSystemApplicationServer文档集的信息及其约定.
ApplicationServer文档集ApplicationServer文档集介绍了部署规划和系统安装.
ApplicationServer文档的统一资源定位器(UniformResourceLocator,URL)为http://docs.
sun.
com/coll/1343.
4和http://docs.
sun.
com/coll/1578.
2.
有关ApplicationServer的介绍,请按下表所列顺序参阅相关书籍.
表P–1ApplicationServer文档集中的书籍书名说明文档中心按任务和主题组织的ApplicationServer文档主题.
发行说明软件和文档的最新信息.
其中包括以表格形式对所支持的硬件、操作系统、JavaDevelopmentKit(JDKTM)和数据库驱动程序所做的全面汇总.
快速入门指南如何开始使用ApplicationServer产品.
安装指南安装软件及其组件.
部署规划指南评估系统需求和企业状况,确保以最适合您的站点的方式部署ApplicationServer.
此外还介绍了部署服务器时应该注意的常见问题.
应用程序部署指南将应用程序和应用程序组件部署到ApplicationServer.
其中包括有关部署描述符的信息.
开发者指南创建和实现用于在ApplicationServer上运行的、遵循JavaEE组件和API的开放式Java标准模型的JavaPlatform,EnterpriseEdition(JavaEE平台)应用程序.
其中包括有关开发者工具、安全性、调试和创建生命周期模块的信息.
JavaEE5教程使用JavaEE5平台技术和API开发JavaEE应用程序.
15表P–1ApplicationServer文档集中的书籍(续)书名说明JavaWSIT教程使用Web服务互操作性技术(WebServiceInteroperabilityTechnologies,WSIT)开发Web应用程序.
介绍了如何使用、何时使用以及为什么使用WSIT技术以及各种技术支持的功能和选项.
管理指南ApplicationServer的系统管理,其中包括配置、监视、安全性、资源管理和Web服务管理.
高可用性管理指南有关高可用性数据库的安装后配置和管理说明.
管理参考编辑ApplicationServer配置文件domain.
xml.
升级和迁移指南从旧版本的ApplicationServer升级或者从竞争性应用服务器迁移JavaEE应用程序.
本指南还介绍了相邻产品发行版之间的差异以及可导致与产品规范不兼容的配置选项.
性能调试指南调节ApplicationServer以提高性能.
故障排除指南解决ApplicationServer问题.
错误消息参考解析ApplicationServer错误消息.
参考手册可用于ApplicationServer的实用程序命令,以手册页样式编写.
其中包括asadmin命令行界面.
相关文档ApplicationServer可以单独购买,也可以作为SunJavaEnterpriseSystem(JavaES)的组件购买,JavaES是支持分布在网络或Internet环境中的企业应用程序的软件基础结构.
如果将ApplicationServer作为JavaES的一个组件购买,您应熟悉http://docs.
sun.
com/coll/1286.
3和http://docs.
sun.
com/coll/1382.
3上的系统文档.
有关JavaES及其组件的所有文档的URL为http://docs.
sun.
com/prod/entsys.
5.
有关其他独立SunJavaSystem服务器产品的文档,请访问:(http://docs.
sun.
com/coll/1343.
4)和MessageQueue文档(http://docs.
sun.
com/coll/1578.
2)(http://docs.
sun.
com/coll/1224.
1)和DirectoryServer文档(http://docs.
sun.
com/coll/1606.
1)(http://docs.
sun.
com/coll/1308.
3)和WebServer文档(http://docs.
sun.
com/coll/1395.
2)随ApplicationServer提供的软件包的JavadocTM工具参考位于http://glassfish.
dev.
java.
net/nonav/javaee5/api/index.
html上.
此外,以下资源可能会有用:JavaEE5规范(http://java.
sun.
com/javaee/5/javatech.
html)JavaEEBlueprints(http://java.
sun.
com/reference/blueprints/index.
html)前言SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月16有关在NetBeansTM集成开发环境(IntegratedDevelopmentEnvironment,IDE)中创建企业应用程序的信息,请参见http://www.
netbeans.
org/kb/55/index.
html.
有关ApplicationServer附带的JavaDB数据库的信息,请参见http://developers.
sun.
com/javadb/.
GlassFishSamples项目是演示各种JavaEE技术的样例应用程序的集合.
GlassFishSamples已与JavaEE软件开发工具包(SoftwareDevelopmentKit,SDK)捆绑在一起,也可以从https://glassfish-samples.
dev.
java.
net/上的GlassFishSamples项目页获取.
默认路径和文件名下表介绍了在本书中使用的默认路径和文件名.
表P–2默认路径和文件名占位符说明默认值as-install表示ApplicationServer的安装基目录.
SolarisTM操作系统上的JavaES安装:/opt/SUNWappserver/appserverLinux操作系统上的JavaES安装:/opt/sun/appserver/其他Solaris和Linux安装(非root用户):user's-home-directory/SUNWappserver其他Solaris和Linux的安装(root用户):/opt/SUNWappserverWindows的所有安装:SystemDrive:\Sun\AppServerdomain-root-dir表示包含所有域的目录.
JavaESSolaris安装:/var/opt/SUNWappserver/domains/JavaESLinux安装:/var/opt/sun/appserver/domains/所有其他安装:as-install/domains/前言17表P–2默认路径和文件名(续)占位符说明默认值domain-dir表示域的目录.
在配置文件中,您可能会看到domain-dir显示为以下内容:${com.
sun.
aas.
instanceRoot}domain-root-dir/domain-dirinstance-dir表示服务器实例的目录.
domain-dir/instance-dir印刷约定下表描述了本书中使用的印刷约定.
表P–3印刷约定字体含义示例AaBbCc123命令、文件和目录的名称;计算机屏幕输出编辑.
login文件.
使用ls-a列出所有文件.
machine_name%youhavemail.
AaBbCc123用户键入的内容,与计算机屏幕输出的显示不同machine_name%suPassword:AaBbCc123要使用实名或值替换的命令行占位符删除文件的命令为rmfilename.
新词术语强调新词或术语以及要强调的词(注:某些强调的词在联机状态下以粗体显示.
)高速缓存是存储在本地的副本.
请勿保存文件.
《书名》书名阅读《用户指南》的第6章.
符号约定下表介绍了本书中使用的符号.
表P–4符号约定符号说明示例含义[]包含可选参数和命令选项.
ls[-l]无需-l选项.
前言SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月18表P–4符号约定(续)符号说明示例含义{|}包含为所需命令选项提供的一组选择.
-d{y|n}-d选项需要您使用y变量或n变量.
${}表示变量引用.
${com.
sun.
javaRoot}引用变量com.
sun.
javaRoot的值.
-连接需同时按下的多个击键.
Control-A同时按Control键和A键.
+连接需连续按下的多个击键.
Ctrl+A+N按Control键,然后松开并依次按后面的键.
→表示图形用户界面中的菜单项选定.
"文件"→"新建"→"模板"从"文件"菜单中,选择"新建".
从"新建"子菜单中,选择"模板".
文档、支持和培训Sunweb站点提供有关以下附加资源的信息:文档(http://www.
sun.
com/documentation/)支持(http://www.
sun.
com/support/)培训(http://www.
sun.
com/training/)搜索Sun产品文档除了从docs.
sun.
comSMWeb站点搜索Sun产品文档外,还可以通过在搜索字段中键入以下语法来使用搜索引擎:search-termsite:docs.
sun.
com例如,要搜索"broker",请键入以下内容:brokersite:docs.
sun.
com要在搜索中包括其他SunWeb站点(例如,java.
sun.
com、www.
sun.
com和developers.
sun.
com),请在搜索字段中使用sun.
com代替docs.
sun.
com.
前言19第三方Web站点引用本文档引用了第三方URL以提供其他相关信息.
注–Sun对本文档中提到的第三方Web站点的可用性不承担任何责任.
对于此类站点或资源中的(或通过它们获得的)任何内容、广告、产品或其他资料,Sun并不表示认可,也不承担任何责任.
对于因使用或依靠此类站点或资源中的(或通过它们获得的)任何内容、产品或服务而造成的、名义上造成的或连带产生的实际或名义损坏或损失,Sun概不负责,也不承担任何责任.
Sun欢迎您提出意见Sun致力于提高其文档的质量,并十分乐意收到您的意见和建议.
为了共享您的意见,请访问http://docs.
sun.
com,并单击"SendComments"(发送意见).
在联机表单中,提供了完整的文档标题和文件号码.
文件号码是一个七位或九位的数字,可以在书的标题页或文档的URL中找到.
例如,本书的文件号码为820-4610.
前言SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月20ApplicationServer中的高可用性本章介绍了SunJavaSystemApplicationServer中随群集配置文件和企业配置文件提供的高可用性功能.
注–HADB软件随SunJavaSystemApplicationServer的ApplicationServer独立分发提供.
有关SunJavaSystemApplicationServer的可用分发的信息,请参见《SunJavaSystemApplicationServer9.
1InstallationGuide》中的"DistributionTypesandTheirComponents".
HADB功能仅在企业配置文件中可用.
有关配置文件的信息,请参见《SunJavaSystemApplicationServer9.
1管理指南》中的"用法配置文件".
本章包含以下主题.
第21页中的"高可用性概述"第24页中的"ApplicationServer如何提供高可用性"第27页中的"从故障中恢复"高可用性概述无论硬件和软件故障,高可用性应用程序和服务均可持续提供其正常功能.
这些应用程序有时被称为提供五个九可靠性的应用程序,因为它们99.
999%的时间都可用.
ApplicationServer提供以下高可用性功能:高可用性会话持久性高可用性Java消息服务RMI-IIOP负载平衡和故障转移1第1章21高可用性会话持久性ApplicationServer提供了HTTP请求和会话数据(HTTP会话数据和有状态会话Bean数据)的高可用性.
JavaEE应用程序通常具有大量会话状态数据.
Web购物车是会话状态的一个典型示例.
此外,应用程序可以高速缓存会话对象中需要频繁使用的数据.
事实上,几乎带有重要用户交互的所有应用程序都需要维护会话状态.
HTTP会话和有状态会话Bean(statefulsessionbean,SFSB)都具有会话状态数据.
保留故障服务器之间的会话状态对最终用户非常重要.
为了实现高可用性,ApplicationServer为会话状态数据提供了以下类型的存储:群集中其他服务器上的内存中复制高可用性数据库(High-availabilitydatabase,HADB)如果托管用户会话的ApplicationServer实例出现故障,则可以恢复会话状态,并且会话可以继续进行而不会丢失信息.
有关如何设置高可用性会话持久性的详细说明,请参见第9章.
高可用性Java消息服务Java消息服务(JavaMessageService,JMS)API是一种通讯标准,使JavaEE应用程序和组件可以创建、发送、接收和读取消息.
并启用了松散耦合的可靠异步分布式通信.
SunJavaSystemMessageQueue(MQ)(实现了JMS)与ApplicationServer紧密集成,使您可以创建诸如消息驱动bean(message-drivenbean,MDB)之类的依赖JMS的组件.
通过连接池、故障转移和MQ群集,JMS实现了高可用性.
有关更多信息,请参见第10章.
连接池和故障转移ApplicationServer支持JMS连接池和故障转移.
ApplicationServer将自动实现JMS连接池.
默认情况下,ApplicationServer从指定的主机列表中随机选择其主MQ代理.
发生故障转移时,MQ会将负载透明地转移到另一个代理,并维持JMS语义.
有关JMS连接池和故障转移的更多信息,请参见第202页中的"连接池和故障转移".
MQ群集MQ企业版支持多个互连代理实例(称为代理群集).
使用代理群集的情况下,客户机连接将分布在群集的所有代理中.
群集可以提供水平可伸缩性并提高可用性.
有关MQ群集的更多信息,请参见第204页中的"结合使用ApplicationServer与MQ群集".
高可用性概述SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月22RMI-IIOP负载平衡和故障转移通过RMI-IIOP负载平衡,IIOP客户机请求被分发到不同的服务器实例或名称服务器上,这样就会将负载平均地分布在群集中,从而提供了可伸缩性.
与EJB群集和可用性结合的IIOP负载平衡还可提供EJB故障转移.
客户机执行对象的JNDI查找时,命名服务实际上会将请求绑定到特定的服务器实例.
此后,所有从该客户机发出的查找请求都被发送到同一服务器实例,因此将在同一目标服务器上托管所有EJBHome对象.
此后获得的所有Bean引用也创建在相同的目标主机上.
这样就有效提供了负载平衡,因为所有客户机在执行JNDI查找时会随机使用目标服务器的列表.
如果目标服务器实例发生故障,查找或EJB方法调用会将故障转移到另一个服务器实例.
IIOP负载平衡和故障转移将透明地发生.
在应用程序部署过程中无需特殊的步骤.
如果在其上部署应用程序客户机的ApplicationServer实例参与群集,则ApplicationServer将自动查找群集中当前处于活动状态的所有IIOP端点.
但是,客户机应该至少已指定两个端点以用于引导目的,以防其中一个端点出现故障.
有关RMI-IIOP负载平衡和故障转移的更多信息,请参见第11章.
更多信息有关规划高可用性部署(包括评估硬件要求、规划网络配置和选择拓扑)的信息,请参见《SunJavaSystemApplicationServer9.
1部署规划指南》.
本手册还对以下概念进行了高层次的介绍:应用程序服务器组件,如节点代理、域和群集群集中的IIOP负载平衡HADB体系结构消息队列故障转移有关开发利用高可用性功能的应用程序的更多信息,请参见《SunJavaSystemApplicationServer9.
1Developer'sGuide》.
调优高可用性服务器和应用程序有关如何配置和调优应用程序和ApplicationServer以获得高可用性的最佳性能的信息,请参见《SunJavaSystemApplicationServer9.
1PerformanceTuningGuide》,其中包括以下主题:调优持久性频率和持久性范围对有状态会话Bean执行检查点操作配置JDBC连接池会话大小调优HADB磁盘使用、内存分配、性能和操作系统配置高可用性概述第1章ApplicationServer中的高可用性23配置负载平衡器以获得最佳性能ApplicationServer如何提供高可用性ApplicationServer通过以下子组件和功能提供高可用性:第24页中的"负载平衡器插件"第24页中的"会话状态数据的存储"第26页中的"高可用性群集"负载平衡器插件负载平衡器插件接受HTTP/HTTPS请求,然后将请求转发至群集中的应用程序服务器实例.
如果实例出现故障,变得不可用(由于网络故障)或无法响应,负载平衡器会将请求重定向至现有的可用计算机.
负载平衡器还可识别故障实例何时恢复并相应地重新分布负载.
ApplicationServer提供了用于SunJavaSystemWebServer和ApacheWebServer以及MicrosoftInternetInformationServer的负载平衡器插件.
负载平衡器通过在多台物理计算机中分布工作量来提高系统的整体吞吐量.
它还可通过对HTTP请求的故障转移提供更高的可用性.
对于要保留的HTTP会话信息,必须配置HTTP会话持久性.
对于简单的无状态应用程序,负载平衡群集可能足够了.
但是,对于具有会话状态的重点应用程序,请将负载平衡群集与HADB一起使用.
参与负载平衡的服务器实例和群集具有同构环境.
通常,这意味着服务器实例均引用相同的服务器配置、可以访问相同的物理资源,以及具有部署到其上的相同的应用程序.
同构环境确保了在出现故障前后,负载平衡器可以始终在群集中的活动实例之间平均分布负载.
有关配置负载平衡和故障转移的信息,请参见第5章.
会话状态数据的存储通过存储会话状态数据,可以在群集中的服务器实例故障转移后恢复会话状态.
恢复会话状态可使会话继续进行而不会丢失信息.
ApplicationServer为HTTP会话和有状态会话Bean数据提供了以下类型的高可用性存储:群集中其他服务器上的内存中复制高可用性数据库ApplicationServer如何提供高可用性SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月24群集中其他服务器上的内存中复制其他服务器上的内存中复制提供会话状态数据的轻量存储,而无需获取单独的数据库(如HADB).
此类型的复制可使用其他服务器上的内存来实现HTTP会话和有状态会话Bean数据的高可用性存储.
群集服务器实例在环形拓扑中复制会话状态.
每个备份实例均在内存中存储复制数据.
通过在其他服务器上的内存中复制会话状态数据,可以分布会话.
使用内存中复制要求启用组管理服务(GroupManagementService,GMS).
有关GMS的更多信息,请参见第149页中的"组管理服务".
如果群集中的服务器实例位于不同的计算机上,请确保满足以下先决条件:要确保GMS和内存中复制正常工作,这些计算机必须在同一子网上.
要确保内存中复制正常工作,必须同步群集中所有计算机上的系统时钟使其尽可能接近.
高可用性数据库注–HADB软件随SunJavaSystemApplicationServer的ApplicationServer独立分发提供.
有关SunJavaSystemApplicationServer的可用分发的信息,请参见《SunJavaSystemApplicationServer9.
1InstallationGuide》中的"DistributionTypesandTheirComponents".
HADB功能仅在企业配置文件中可用.
有关配置文件的信息,请参见《SunJavaSystemApplicationServer9.
1管理指南》中的"用法配置文件".
ApplicationServer提供了高可用性数据库(HighAvailabilityDatabase,HADB),以实现HTTP会话和有状态会话Bean数据的高可用性存储.
HADB旨在通过负载平衡、故障转移和状态恢复等功能支持高达99.
999%的服务和数据可用性.
通常,您必须独立于ApplicationServer来配置和管理HADB.
不让ApplicationServer承担状态管理职责会具有很多好处.
ApplicationServer实例在它们的周期中作为可伸缩高性能应用程序容器执行,将状态复制委托给外部高可用性状态服务.
由于采用这种松散耦合的体系结构,因此可以很轻松地向群集中添加ApplicationServer实例或从群集中删除ApplicationServer实例.
HADB状态复制服务可以单独伸缩,以获得最佳的可用性和性能.
如果ApplicationServer实例同时还执行复制任务,JavaEE应用程序的性能将会降低,并会受到较长的垃圾收集暂停的限制.
有关规划和设置应用服务器安装(包括确定硬件配置、调整大小和拓扑)以通过HADB实现高可用性的信息,请参见《SunJavaSystemApplicationServer9.
1部署规划指南》中的"PlanningforAvailability"和《SunJavaSystemApplicationServer9.
1部署规划指南》中的第3章"选择拓扑".
ApplicationServer如何提供高可用性第1章ApplicationServer中的高可用性25高可用性群集群集是作为一个逻辑实体一起工作的ApplicationServer实例的集合.
群集为一个或多个JavaEE应用程序提供了运行时环境.
高可用性群集将状态复制服务与群集和负载平衡器集成在一起.
使用群集具有以下优点:高可用性(通过允许为群集中的服务器实例提供故障转移保护来实现).
如果一个服务器实例出现故障,其他服务器实例将接管该服务器实例正在服务的请求.
可伸缩性(通过允许向群集中添加服务器实例从而增加系统的容量来实现).
负载平衡器插件会将请求分布到群集中的可用服务器实例.
当管理员向群集中添加更多服务器实例时,无需中断服务.
群集中的所有实例具有以下特性:引用相同的配置.
具有相同的一组已部署应用程序(例如,JavaEE应用程序EAR文件、Web模块WAR文件或EJBJAR文件).
具有相同的一组资源,因此具有相同的JNDI名称空间.
域中的每一个群集都具有唯一的名称;此外,该名称在所有节点代理名称、服务器实例名称、群集名称和配置名称中也必须是唯一的.
此名称不能为domain.
您在群集上执行的操作与在非群集服务器实例上执行的操作相同(例如,部署应用程序和创建资源).
群集和配置群集的设置源自该群集可能与其他群集共享的命名配置.
其配置不能被其他服务器实例或群集所共享的群集可视为具有独立配置.
默认情况下,此配置的名称为cluster_name-config,其中cluster_name表示群集的名称.
能与其他群集或实例共享其配置的群集可视为具有共享配置.
群集、实例、会话和负载平衡群集、服务器实例、负载平衡器和会话的相互关系如下:服务器实例不需要属于群集.
但是,不属于群集的实例无法通过将会话状态从一个实例转移到其他实例来利用高可用性.
群集中的服务器实例可以由一台或多台计算机托管.
您可以将不同计算机上的服务器实例组织为一个群集.
特定负载平衡器可以向多个群集中的服务器实例转发请求.
您可以使用负载平衡器的此功能来执行联机升级,而不使服务受到损失.
有关更多信息,请参见"配置群集"一章中的"使用多个群集进行联机升级而不使服务受到损失".
ApplicationServer如何提供高可用性SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月26一个群集可以从多个负载平衡器接收请求.
如果群集由多个负载平衡器提供服务,则必须以完全相同的方式在每个负载平衡器上配置群集.
每个会话都依赖于特定的群集.
因此,尽管您可以在多个群集上部署一个应用程序,但是会话故障转移将只能在单个群集中实现.
因此,对于群集中的服务器实例,群集充当的是会话故障转移的安全边界.
在ApplicationServer中,您可以使用负载平衡器和升级组件,而不使服务受到任何损失.
从故障中恢复第27页中的"使用SunCluster"第27页中的"手动恢复"第29页中的"使用Netbackup"第30页中的"重新创建域管理服务器"使用SunClusterSunCluster提供域管理服务器、节点代理、ApplicationServer实例、MessageQueue和HADB的自动故障转移.
有关更多信息,请参见《SunClusterDataServiceforSunJavaSystemApplicationServerGuideforSolarisOS》.
使用标准以太网互联和SunCluster产品的子集.
该功能包含在JavaES中.
手动恢复您可以使用多种技术来手动恢复各个子组件:第27页中的"恢复域管理服务器"第28页中的"恢复节点代理和服务器实例"第28页中的"恢复负载平衡器和Web服务器"第28页中的"恢复MessageQueue"第29页中的"恢复HADB"恢复域管理服务器丢失域管理服务器(DomainAdministrationServer,DAS)只会影响管理.
即使DAS不可访问,ApplicationServer群集和应用程序也将继续像以前那样运行.
可使用以下任一方法恢复DAS:定期运行asadmin备份命令,以便获得定期快照.
发生硬件故障后,在具有相同网络标识的新计算机上安装AppServer,然后运行asadmin从以前创建的备份中恢复.
有关更多信息,请参见第30页中的"重新创建域管理服务器".
从故障中恢复第1章ApplicationServer中的高可用性27将域安装和配置放置在共享的强健文件系统(例如NFS)上.
如果主DAS计算机发生故障,则会初启具有相同IP地址的第二台计算机,并通过手动介入或用户提供的自动控制功能让该台计算机进行接管.
SunCluster使用类似的方法来实现DAS容错.
压缩ApplicationServer安装和域根目录.
在新计算机上恢复它,为其指定相同的网络标识.
如果您使用的是基于文件的安装,这可能是最简单的方法.
从DAS备份中恢复.
请参见AS8.
1UR2修补程序4的说明.
恢复节点代理和服务器实例可采用两种方法来恢复节点代理和服务器实例.
保存备份zip文件.
没有用于备份节点代理和服务器实例的显式命令.
只需创建一个包含节点代理目录的内容的zip文件.
发生故障后,将保存的备份解压至具有相同主机名和IP地址的新计算机上.
请使用相同的安装目录位置、OS等.
该计算机上必须有基于文件的安装、基于软件包的安装或恢复的备份映像.
手动恢复.
使用的新计算机必须具有相同的IP地址.
1.
在该计算机上安装ApplicationServer节点代理位.
2.
请参见AS8.
1UR2修补程序4安装说明.
3.
重新创建节点代理.
您无需创建任何服务器实例.
4.
同步过程将从DAS复制配置和数据,并进行更新.
恢复负载平衡器和Web服务器没有专门用于备份Web服务器配置的显式命令.
只需压缩Web服务器安装目录.
发生故障后,将保存的备份解压至具有相同网络标识的新计算机上.
如果新计算机具有不同的IP地址,则更新DNS服务器或路由器.
注–这里假定首先重新安装了Web服务器或从映像恢复了Web服务器.
负载平衡器插件(插件目录)和配置位于Web服务器安装目录(通常为/opt/SUNWwbsvr).
web-install/web-instance/config目录包含loadbalancer.
xml文件.
恢复MessageQueueMessageQueue(MQ)配置和资源存储在DAS中,可以将其与实例同步.
任何其他数据和配置信息都位于MQ目录中,通常位于/var/imq下,所以可以根据需要备份和修复这些目录.
新的计算机必须已经包含MQ安装.
恢复计算机时,确保像以前一样启动MQ代理.
从故障中恢复SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月28恢复HADB注–HADB软件随SunJavaSystemApplicationServer的ApplicationServer独立分发提供.
有关SunJavaSystemApplicationServer的可用分发的信息,请参见《SunJavaSystemApplicationServer9.
1InstallationGuide》中的"DistributionTypesandTheirComponents".
HADB功能仅在企业配置文件中可用.
有关配置文件的信息,请参见《SunJavaSystemApplicationServer9.
1管理指南》中的"用法配置文件".
如果您具有两个活动HADB节点,则可以配置两个备用节点(在单独的计算机上),如果发生故障,它们可以接管.
这是一种比较干净利落的方法,因为备份和恢复HADB可能会导致恢复过时的会话.
有关创建具有备用节点的数据库的信息,请参见第62页中的"创建数据库".
有关将备用节点添加到数据库的信息,请参见第84页中的"添加节点".
如果恢复和自我修复失败,则备用节点将自动接管.
使用Netbackup注–此过程尚未经SunQA测试.
使用VeritasNetbackup可以保存每台计算机的映像.
对于BPIP,备份四台具有Web服务器和ApplicationServer的计算机.
对于已经恢复的每台计算机,使用与原始计算机相同的配置,例如,相同的主机名、IP地址等.
对于基于文件的产品(如ApplicationServer),仅备份和恢复相关的目录.
但是,对于基于软件包的安装(如Web服务器映像),必须备份和恢复整个计算机.
软件包安装到Solaris软件包数据库中.
因此,如果仅备份目录,随后将其恢复至新系统中,将会造成"已部署"的Web服务器无法识别软件包数据库.
这可能会给将来的修补和升级带来问题.
请勿手动复制和恢复Solaris软件包数据库,其他替代方法是在安装组件(例如,Web服务器)后备份计算机的映像,这称为基准tar文件.
对Web服务器进行更改时,备份这些目录(例如,在/opt/SUNWwbsvr下).
恢复时,先恢复基准tar文件,然后覆盖已修改的Web服务器目录.
同样,可以对MQ(BPIP的基于软件包的安装)使用该过程.
如果您升级或修补原始计算机,请确保创建一个新的基准tar文件.
如果具有DAS的计算机发生故障,则在恢复之前将无法使用DAS.
DAS是中心系统信息库.
恢复服务器实例并重新启动它们时,这些实例只会与DAS中的信息同步.
因此,必须通过asadmin或管理控制台进行所有更改.
从故障中恢复第1章ApplicationServer中的高可用性29每天备份HADB的映像可能并不可行,因为映像可能包含旧的应用程序会话状态.
重新创建域管理服务器在托管域管理服务器(domainadministrationserver,DAS)的计算机出现故障时,如果以前已备份DAS,则可以重新创建DAS.
要重新创建DAS的工作副本,您必须具有:一台包含原始DAS的计算机(machine1).
一台包含群集的计算机(machine2),该群集具有运行应用程序并满足客户机需要的服务器实例.
该群集是使用第一台计算机上的DAS配置的.
一台备份计算机,当第一台计算机崩溃时,需要在该备份计算机上重新创建.
注–必须对第一台计算机上的DAS进行备份.
使用asadminbackup-domain来备份当前域.
迁移DAS以下步骤用于将域管理服务器从第一台计算机(machine1)迁移到第三台计算机(machine3).
在第三台计算机上安装应用程序服务器,方法与在第一台计算机上安装相同.
为了可以在第三台计算机上正确地恢复DAS并且不会发生路径冲突,您必须执行此操作.
a.
使用命令行(交互式)模式来安装应用程序服务器管理软件包.
要激活交互式命令行模式,请使用console选项调用安装程序:.
/bundle-filename-console要使用命令行界面进行安装,您必须具有超级用户权限.
b.
要安装默认域,请取消选择该选项.
只有具有相同体系结构并具有完全相同的安装路径(即都使用相同的as-install和domain-root-dir)的两台计算机才支持备份域的恢复.
将第一台计算机上的备份ZIP文件复制到第三台计算机上的domain-root-dir中.
也可以通过FTP(文件传输协议)方式传输文件.
将ZIP文件恢复到第三台计算机上.
asadminrestore-domain--filenamedomain-root-dir/sjsas_backup_v00001.
zip--clienthostnamemachine3domain1123从故障中恢复SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月30注–通过指定--clienthostname选项,就无需在domain.
xml文件中修改jmx-connector元素的client-hostname属性.
可以备份任何域.
但是,在重新创建域时,域名称应与原始域名称相同.
将第三台计算机上的domain-root-dir/domain1/generated/tmp目录的权限更改为与第一台计算机上相同目录的权限相匹配.
该目录的默认权限为:drwx------(或700).
例如:chmod700domain-root-dir/domain1/generated/tmp以上示例假定您备份的是domain1.
如果备份的是其他名称的域,应使用要备份的域的名称替换上面的domain1.
在第三台计算机上的domain-root-dir/domain1/config/domain.
xml文件中,更新jms-service元素的host属性值.
此属性的原始设置如下:对此属性的设置进行如下修改:在machine3上启动已恢复的域:asadminstart-domain--useradmin-user--passwordadmin-passworddomain1DAS与正在运行的所有节点代理联系,并为节点代理提供用于联系DAS的信息.
节点代理使用此信息与DAS通信.
对于重新启动DAS时未运行的任何节点代理,请在machine2上更改as-install/nodeagents/nodeagent/agent/config/das.
properties中的agent.
das.
host属性值.
对于重新启动DAS时正在运行的节点代理,不需要执行此步骤.
在machine2上重新启动节点代理.
注–使用asadminstart-instance命令启动群集实例,可以使这些实例与已恢复的域同步.
45678从故障中恢复第1章ApplicationServer中的高可用性3132安装和设置高可用性数据库注–HADB软件随SunJavaSystemApplicationServer的ApplicationServer独立分发提供.
有关SunJavaSystemApplicationServer的可用分发的信息,请参见《SunJavaSystemApplicationServer9.
1InstallationGuide》中的"DistributionTypesandTheirComponents".
HADB功能仅在企业配置文件中可用.
有关配置文件的信息,请参见《SunJavaSystemApplicationServer9.
1管理指南》中的"用法配置文件".
本节包含以下主题:第33页中的"设置HADB前的准备工作"第40页中的"安装"第42页中的"设置高可用性"第44页中的"升级HADB"设置HADB前的准备工作本节包括以下主题:第34页中的"先决条件和限制"第34页中的"配置网络冗余"第37页中的"配置共享内存和信号"第39页中的"同步系统时钟"执行完这些任务后,请参见第3章.
有关HADB的最新信息,请参见《SunJavaSystemApplicationServer9.
1发行说明》.
2第2章33先决条件和限制在设置和配置HADB之前,请确保您的网络和硬件环境符合《SunJavaSystemApplicationServer9.
1发行说明》中所述的要求.
此外,对某些文件系统还有一些限制,例如,对Veritas.
有关更多信息,请参见发行说明.
HADB在创建并附加到其共享内存段时,使用锁定共享内存(SHM_SHARE_MMU标志).
使用此标志实质上是将共享内存段锁定到物理内存中,防止它们被调出.
因此,HADB的共享内存已锁定到物理内存,这很容易影响到低端计算机上的安装.
请确保在协同定位ApplicationServer和HADB时拥有建议的内存量.
配置网络冗余配置冗余网络后,即使单个网络出现故障,HADB也仍然可用.
您可以使用以下两种方法配置冗余网络:在Solaris9中,设置网络多路径.
在除WindowsServer2003以外的所有平台中,配置双网络.
设置网络多路径设置网络多路径之前,请参阅《IPNetworkMultipathingAdministrationGuide》中的"AdministeringNetworkMultipathing"一节.
配置已使用IP多路径的HADB主机设置网络接口故障检测时间.
为了使HADB能够正确支持多路径故障转移,网络接口故障检测时间不能超过一秒(1000毫秒),此时间由/etc/default/mpathd中的FAILURE_DETECTION_TIME参数来指定.
如果此参数的原始值较高,请编辑文件并将此参数值更改为1000:FAILURE_DETECTION_TIME=1000要使所作的更改生效,请使用以下命令:pkill-HUPin.
mpathd设置IP地址以用于HADB.
如《IPNetworkMultipathingAdministrationGuide》中所述,多路径功能涉及将物理网络接口分组为多路径接口组.
在此类组中,每个物理接口均包含两个与其关联的IP地址:用于传输数据的物理接口地址.
仅供Solaris内部使用的测试地址.
当您使用hadbmcreate--hosts时,请仅从多路径组指定一个物理接口地址.
12设置HADB前的准备工作SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月34设置多路经假设具有两个名为host1和host2的主机.
如果它们分别具有两个物理网络接口,则将这两个接口作为一个多路径组进行设置.
在每个主机上运行ifconfig-a.
host1上的输出为:bge0:flags=1000843mtu1500index5inet129.
159.
115.
10netmaskffffff00broadcast129.
159.
115.
255groupnamemp0bge0:1:flags=9040843mtu1500index5inet129.
159.
115.
11netmaskffffff00broadcast129.
159.
115.
255bge1:flags=1000843mtu1500index6inet129.
159.
115.
12netmaskffffff00broadcast129.
159.
115.
255groupnamemp0bge1:1:flags=9040843mtu1500index6inet129.
159.
115.
13netmaskff000000broadcast129.
159.
115.
255host2上的输出为:bge0:flags=1000843mtu1500index3inet129.
159.
115.
20netmaskffffff00broadcast129.
159.
115.
255groupnamemp0bge0:1:flags=9040843mtu1500index3inet129.
159.
115.
21netmaskff000000broadcast129.
159.
115.
255bge1:flags=1000843mtu1500index4inet129.
159.
115.
22netmaskffffff00broadcast129.
159.
115.
255groupnamemp0bge1:1:flags=9040843mtu1500index4inet129.
159.
115.
23netmaskff000000broadcast129.
159.
115.
255在此示例中,两台主机的物理网络接口都在bge0和bge1之后列出.
在bge0:1和bge1:1之后列出的接口是多路径测试接口(它们在ifconfig输出中标记为DEPRECATED),如《IPNetworkMultipathingAdministrationGuide》中所述.
要在此环境中设置HADB,请从每个节点选择一个物理接口地址.
在此示例中,HADB在host1中使用IP地址129.
159.
115.
10,在host2中使用129.
159.
115.
20.
要创建数据库以实现每台主机具有一个数据库节点,请使用命令hadbmcreate--hosts.
例如hadbmcreate--hosts129.
159.
115.
10,129.
159.
115.
20要在每台主机上使用两个数据库节点创建数据库,请使用命令:示例2–1设置HADB前的准备工作第2章安装和设置高可用性数据库35hadbmcreate--hosts129.
159.
115.
10,129.
159.
115.
20,129.
159.
115.
10,129.
159.
115.
20在这两种情况下,必须使用单独的参数配置host1和host2上的代理,以指定代理所应使用的计算机的接口.
因此,在host1上使用以下命令:ma.
server.
mainternal.
interfaces=129.
159.
115.
10在host2上使用以下命令:ma.
server.
mainternal.
interfaces=129.
159.
115.
20有关ma.
server.
mainternal.
interfaces变量的信息,请参见第56页中的"配置文件".
配置双网络要启用HADB以允许单个网络故障,请使用IP多路径(如果操作系统[例如Solaris]支持).
请勿在WindowsServer2003上将HADB配置为使用双网络—此操作系统在双网络配置下无法正常工作.
如果您没有将操作系统配置为使用IP多路径,并且已为HADB主机配备两个NIC,则可以将HADB配置为使用双网络.
对于每台主机,每个网络接口卡(networkinterfacecard,NIC)的IP地址必须位于单独的IP子网中.
在数据库中,所有节点均必须连接到单个网络,或者所有节点均必须连接到两个网络.
注–必须将子网之间的路由器配置为可以在子网之间转发UDP多址广播消息.
创建HADB数据库时,请使用–hosts选项来指定每个节点的两个IP地址或主机名:每个NICIP地址一个.
对于每个节点,第一个IP地址位于net-0,第二个位于net-1.
语法如下所示,其中同一节点的主机名使用加号(+)分隔:--hosts=node0net0name+node0net1name,node1net0name+node1net1name,node2net0name+node2net1name,.
.
.
例如,以下变量可创建两个节点,每个节点具有两个网络接口.
以下主机选项用于创建这些节点:--hosts10.
10.
116.
61+10.
10.
124.
61,10.
10.
116.
62+10.
10.
124.
62因此,网络地址如下对于node0,为10.
10.
116.
61和10.
10.
124.
61设置HADB前的准备工作SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月36对于node1,为10.
10.
116.
62和10.
10.
124.
62请注意,10.
10.
116.
61和10.
10.
116.
62位于同一个子网;10.
10.
124.
61和10.
10.
124.
62位于同一个子网.
在此示例中,管理代理必须使用同一子网.
因此,以配置变量ma.
server.
mainternal.
interfaces为例,它必须设置为10.
10.
116.
0/24.
此设置对本示例中的两个代理均可使用.
配置共享内存和信号安装HADB之前,必须配置共享内存和信号.
此过程取决于您的操作系统.
如果在主机上运行除HADB以外的应用程序,则应计算这些应用程序使用的共享内存和信号量,并将其与HADB所需的值相加.
本节所建议的值足够用于在每台主机上运行多达六个HADB节点.
如果运行的HADB节点超过六个,或主机运行的应用程序需要更多的共享内存和信号量,则只需要增大这些值.
如果信号量的数目过低,则HADB可能会失败,并显示以下错误消息:Nospaceleftondevice.
在启动数据库时或在运行时可能会出现这种情况.
在Solaris上配置共享内存和信号因为信号量是全局操作系统资源,所以配置将会与主机上运行的所有进程相关,而不是只与HADB相关.
在Solaris中,通过编辑/etc/system文件来配置信号量设置.
以root用户身份登录.
配置共享内存.
设置shminfo_shmmax,该参数指定主机上单个共享内存段的最大大小.
将此值设置为HADB主机上安装的RAM的总容量,以十六进制值表示,但不能大于2GB.
例如,对于2GBRAM,在/etc/system文件中将该值设置如下:setshmsys:shminfo_shmmax=0x80000000注–要确定主机的内存,请使用以下命令:prtconf|grepMemory在Solaris8或更低版本中,设置shminfo_shmseg,即一个进程最多可以附加的共享内存段数.
将该值设置为每台主机节点数的六倍.
对于每台主机最多有六个节点的情况,请向/etc/system文件中添加以下内容:setshmsys:shminfo_shmseg=3612设置HADB前的准备工作第2章安装和设置高可用性数据库37在Solaris9和更高版本上,shmsys:shminfo_shmseg是过时的属性.
设置shminfo_shmmni,即整个系统中共享内存段的最大数目.
因为每个HADB节点分配六个共享内存段,所以HADB所需的值至少必须为每台主机节点数的六倍.
在Solaris9中,对于每台主机最多有六个节点的情况,不需要更改默认值.
配置信号.
检查/etc/system文件是否包含以下信号量配置条目,例如:setsemsys:seminfo_semmni=10setsemsys:seminfo_semmns=60setsemsys:seminfo_semmnu=30如果存在这些条目,请按如下所示增大这些值.
如果/etc/system文件不包含这些条目,请将它们添加到该文件的结尾:设置seminfo_semmni,即信号量标识符最大数目.
每个HADB节点需要一个信号量标识符.
在Solaris9中,对于每台主机最多有六个节点的情况,不需要更改默认值.
例如:setsemsys:seminfo_semmni=10设置seminfo_semmns,即整个系统中信号量的最大数目.
每个HADB节点需要八个信号量.
在Solaris9中,对于每台主机最多有六个节点的情况,不需要更改默认值.
例如:setsemsys:seminfo_semmns=60设置seminfo_semmnu,即系统中撤消结构的最大数目.
每个连接需要一个撤消结构(配置变量NumberOfSessions,默认值100).
对于每台主机最多有六个节点的情况,将该值设置为600:setsemsys:seminfo_semmnu=600重新引导计算机.
在Linux上配置共享内存在Linux中,必须配置共享内存设置.
不需要调整默认信号量设置.
以root用户身份登录.
编辑文件/etc/sysctl.
conf.
在RedhatLinux中,您还可以修改sysctl.
conf以设置内核参数.
按如下所示,设置kernel.
shmax和kernel.
shmall的值:echoMemSize>/proc/sys/shmmaxechoMemSize>/proc/sys/shmall34123设置HADB前的准备工作SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月38其中,MemSize为字节数.
kernel.
shmax参数定义了共享内存段的最大大小(以字节为单位).
kernel.
shmall参数设置了在系统上可以一次使用的共享内存的总数(以页为单位).
将这两个参数的值设为计算机上的物理内存量.
请以十进制字节数指定该值.
例如,要将两个值都设置为2GB,请使用以下命令:echo2147483648>/proc/sys/kernel/shmmaxecho2147483648>/proc/sys/kernel/shmall使用以下命令重新引导该计算机:sync;sync;reboot适用于Windows的过程Windows并不需要任何特殊的系统设置.
但是,如果要使用现有J2SE安装,请将JAVA_HOME环境变量设置为安装J2SE所在的位置.
同步系统时钟必须使HADB主机上的时钟同步,因为HADB使用基于系统时钟的时间戳.
HADB使用系统时钟管理超时并为记录到历史文件的事件标上时间戳.
由于HADB是分布式系统,因此对于故障排除,您必须对所有历史文件一起进行分析.
所以,使所有主机的时钟同步非常重要.
请勿在HADB系统处于运行状态时调整其系统时钟.
这样做会导致操作系统或其他软件组件出现问题,而这些问题反之会导致系统出现诸如HADB节点挂起或重新启动等问题.
将时钟调慢可能导致某些HADB服务器进程因时钟的调整而挂起.
要使时钟同步:在Solaris中,请使用xntpd(网络时间协议守护进程).
在Linux中,请使用ntpd.
在Windows中,请使用Windows中的NTPTime.
如果HADB检测到时钟调整超过一秒钟,则将该数据记录到节点历史文件中,例如:NSUPINF2003-08-2617:46:47.
975Clockadjusted.
Leapis+195.
075046seconds.
4设置HADB前的准备工作第2章安装和设置高可用性数据库39安装通常,可以在与ApplicationServer(同机拓扑)相同的系统上或单独的主机(单独层拓扑)上安装HADB.
有关这两个选项的更多信息,请参见《SunJavaSystemApplicationServer9.
1部署规划指南》中的第3章"选择拓扑".
必须安装HADB管理客户机,才能使用asadminconfigure-ha-cluster命令设置高可用性.
使用JavaEnterpriseSystem安装程序时,即使要将节点安装在单独层上,也必须安装完整的HADB实例以便安装管理客户机.
HADB安装在单或双CPU系统上,如果该系统至少有2GB的内存,则可以同时安装HADB和ApplicationServer.
否则,请在单独的系统上安装HADB或使用其他硬件.
要使用asadminconfigure-ha-cluster命令,必须同时安装有HADB和ApplicationServer.
每个HADB节点需要512MB的内存,因此计算机需要1GB的内存来运行两个HADB节点.
如果计算机内存不足,请在不同的计算机上设置每个节点.
例如,您可以在以下系统上安装两个节点:两个单CPU系统,每个系统具有512MB到1GB内存一个单或双CPU系统,具有1GB到2GB内存您可以使用JavaEnterpriseSystem安装程序或ApplicationServer独立安装程序安装HADB.
在上述任一安装程序中,请在"组件选项"页面中选择用于安装HADB(在JavaES中称为高可用性会话存储)的选项.
在您的主机上完成安装.
如果您使用ApplicationServer独立安装程序,并选择两个单独的计算机运行HADB,则必须在两台计算机上选择相同的安装目录.
默认安装目录本手册中,HADB_install_dir表示安装HADB的目录.
默认的安装目录将取决于您是否将HADB作为JavaEnterpriseSystem的一部分安装.
对于JavaEnterpriseSystem,默认安装目录为/opt/SUNWhadb/4.
对于独立的ApplicationServer安装程序,安装目录为/opt/SUNWappserver/hadb/4.
节点监控进程权限节点监控进程(nodesupervisorprocesses,NSUP)通过彼此交换"I'malive"消息来确保HADB的可用性.
NSUP可执行文件必须具有root用户权限才能尽可能快地作出响应.
clu_nsup_srv进程不使用重要的CPU资源,它所占用的资源少,因此使用实时优先级运行该进程并不影响性能.
安装SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月40注–JavaEnterpriseSystem安装程序会自动正确地设置NSUP权限,因此您不必采取进一步操作.
但是,使用独立的ApplicationServer(非root用户)安装程序,您必须在创建数据库之前手动设置权限.
权限不足时出现的情况如果NSUP不具有正确的权限,您可能会注意到以下资源不足时出现的问题,例如:出现网络分区错误和节点重新启动之前,HADB历史文件中显示"Processblockedfornseconds"警告消息.
异常中止的事务和其他异常.
限制如果NSUP无法设置实时优先级,则errno在Solaris和Linux中被设为EPERM.
在Windows中,它将发出"无法设置实时优先级"的警告.
系统将错误写入ma.
log文件,并且进程在没有实时优先级的情况下继续进行.
在以下情况下无法设置实时优先级:HADB安装在Solaris10非全局区域中在Solaris10中取消PRIV_PROC_LOCK_MEMORY(允许进程锁定物理内存中的页)和/或PRIV_PROC_PRIOCNTL权限用户关闭setuid权限用户将软件作为tar文件(ApplicationServer的非root用户安装选项)安装授予节点监控进程root用户权限以root用户身份登录.
将您的工作目录更改为HADB_install_dir/lib/server.
NSUP可执行文件为clu_nsup_srv.
使用以下命令设置文件的suid位:chmodu+sclu_nsup_srv使用以下命令将文件的所有权设置为root用户:chownrootclu_nsup_srv这将以root用户身份启动clu_nsup_srv进程,并使该进程授予其自身实时优先级.
为了避免任何安全性影响,启动进程后将立即设置实时优先级,并且一旦优先级更改,该进程将退回至有效UID.
其他HADB进程使用普通优先级运行.
1234安装第2章安装和设置高可用性数据库41设置高可用性本节提供了创建高可用性群集和测试HTTP会话持久性的步骤.
本节包括以下主题:第42页中的"准备高可用性系统"第42页中的"启动HADB管理代理"第43页中的"配置高可用性群集"第43页中的"配置高可用性应用程序"第43页中的"重新启动群集"第44页中的"重新启动WebServer"第44页中的"清除作为负载平衡器使用的WebServer实例"准备高可用性系统安装ApplicationServer实例和负载平衡器插件.
有关更多信息,请参见JavaEnterpriseSystem安装指南(如果使用JavaES)或《SunJavaSystemApplicationServer9.
1InstallationGuide》(如果使用独立的ApplicationServer安装程序).
创建ApplicationServer域和群集.
有关如何创建域的信息,请参见《SunJavaSystemApplicationServer9.
1管理指南》中的"创建域".
有关如何创建群集的信息,请参见第151页中的"创建群集".
安装和配置WebServer软件.
设置和配置负载平衡.
有关更多信息,请参见第122页中的"设置HTTP负载平衡".
启动HADB管理代理管理代理ma用于在HADB主机上执行管理命令,并在HADB节点监控进程失败时通过重新启动它们来确保其可用性.
您可以使用两种方式启动管理代理:作为服务启动,用于生产.
请参见第50页中的"将管理代理作为服务启动".
要确保管理代理的可用性,请确保它会在系统重新引导时自动重新启动.
请参见第51页中的"确保管理代理自动重新启动".
作为常规进程(在控制台模式下)启动,用于评估、测试或开发.
请参见第53页中的"在控制台模式下启动管理代理".
1234设置高可用性SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月42对于每种启动方式,启动过程会因使用的是JavaEnterpriseSystem还是独立的ApplicationServer而有所不同.
配置高可用性群集开始本节之前,您必须已经创建一个或多个ApplicationServer群集.
有关如何创建群集的信息,请参见第151页中的"创建群集".
使用以下命令,从运行域管理服务器的计算机将群集配置为使用HADB:asadminconfigure-ha-cluster--useradmin--hostshadb_hostname1,hadb_hostname2devicesize256clusterName将hadb_hostname1、hadb_hostname2等替换为运行HADB的每台计算机的主机名,并将clusterName替换为群集的名称.
例如:asadminconfigure-ha-cluster--useradmin--hostshost1,host2,host1,host2--devicesize256cluster1此示例会在每台计算机上创建两个节点,即使在HADB故障转移时这些节点也具有很高的可用性.
请注意,–hosts选项后主机名的顺序非常重要,因此上一示例会与--hostshost1,host1,host2,host2不同.
如果仅使用一台计算机,则必须提供两次主机名.
在生产设置中,建议使用多台计算机.
配置高可用性应用程序在管理控制台中,在"应用程序">"企业应用程序"下选择应用程序.
设置"启用可用性",然后单击"保存".
重新启动群集要在管理控制台中重新启动群集,请选择"群集">cluster-name.
单击"停止实例".
当实例都停止后,单击"启动实例".
或者,使用以下asadmin命令:asadminstop-cluster--useradmincluster-nameasadminstart-cluster--useradmincluster-name有关这些命令的更多信息,请参见stop-cluster(1)和start-cluster(1).
设置高可用性第2章安装和设置高可用性数据库43重新启动WebServer要重新启动WebServer,请键入以下WebServer命令:web_server_root/https-hostname/reconfig将web_server_root替换为您的WebServer根目录,并将hostname替换为您的主机名.
清除作为负载平衡器使用的WebServer实例删除负载平衡器配置:asadmindelete-http-lb-ref--useradmin--configMyLbConfigFirstClusterasadmindelete-http-lb-config--useradminMyLbConfig如果您创建了新的WebServer实例,则您可以通过以下方法删除它:a.
登录到WebServer的管理控制台.
b.
停止该实例.
删除该实例.
升级HADBHADB旨在通过升级本软件提供不间断的"alwayson"服务.
本节介绍了在不使数据库脱机或不引起任何可用性损失的情况下,如何升级到HADB的新版本.
这称为联机升级.
以下各节将介绍如何升级HADB安装:第45页中的"将HADB升级到更新版本"第45页中的"注册HADB软件包"第46页中的"取消注册HADB软件包"第47页中的"替换管理代理的启动脚本"第47页中的"验证HADB升级"12升级HADBSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月44将HADB升级到更新版本安装HADB的新版本.
按照第45页中的"注册HADB软件包"中所述,注册新的HADB版本.
在HADB管理域中注册HADB软件包使得升级或更改HADB软件包变得更加容易.
管理代理记录软件包的位置以及域中主机的版本信息.
默认软件包的名称是以V开头的字符串,其中包括hadbm程序的版本号.
更改数据库所使用的软件包.
请输入以下命令:hadbmsetPackageName=package其中,package是新的HADB软件包的版本号.
按照第46页中的"取消注册HADB软件包"中所述,注销您现有的HADB安装.
如果需要,请替换管理代理的启动脚本.
有关更多信息,请参见第47页中的"替换管理代理的启动脚本".
按照第47页中的"验证HADB升级"中所述,验证结果.
(可选的)删除旧HADB版本的二进制文件.
验证HADB已正确升级后,可以删除旧的HADB软件包.
注册HADB软件包使用hadbmregisterpackage命令注册HADB软件包,该软件包安装在管理域中的主机上.
也可在使用hadbmcreate命令创建数据库时注册HADB软件包.
使用hadmregisterpackage命令之前,请确保满足以下要求:已配置所有管理代理并且它们在主机列表中的所有主机上运行;管理代理的系统信息库可以更新,并且没有使用相同的软件包名称注册的软件包.
该命令语法为:hadbmregisterpackage--packagepath=path[--hosts=hostlist][--adminpassword=password|--adminpasswordfile=file][--agent=maurl][[package-name]]package-name操作数是软件包的名称.
下表介绍了特殊的hadbmregisterpackage命令选项.
有关其他命令选项的说明,请参见第58页中的"安全性选项"和第59页中的"常规选项".
1234567升级HADB第2章安装和设置高可用性数据库45表2–1hadbmregisterpackage选项选项说明--hosts=hostlist-H主机列表,用逗号分隔或放在双引号内并用空格分隔.
--packagepath=path-LHADB软件包的路径.
例如,使用以下命令可在主机host1、host2和host3上注册软件包v4:hadbmregisterpackage--packagepath=hadb_install_dir/SUNWHadb/4.
4--hosts=host1,host2,host3v4响应为:软件包注册成功.
如果您省略--hosts选项,则此命令将在域中所有已启用的主机上注册该软件包.
取消注册HADB软件包使用hadbmunregisterpackage命令删除用管理域注册的HADB软件包.
使用hadbmunregisterpackage命令之前,请确保:已配置所有管理代理,并且它们在hostlist中的所有主机上运行.
管理代理的系统信息库可以更新.
新的HADB软件包已在管理域中注册.
未将任何现有数据库配置为在将要注销的软件包中运行.
该命令语法为:hadbmunregisterpackage--hosts=hostlist[--adminpassword=password|--adminpasswordfile=file][--agent=maurl][package-name]package-name操作数是软件包的名称.
有关--hosts选项的说明,请参见第45页中的"注册HADB软件包".
如果您省略--hosts选项,主机列表将默认为已启用的注册了软件包的主机.
有关其他命令选项的说明,请参见第58页中的"安全性选项"和第59页中的"常规选项".
升级HADBSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月46示例2–2注销HADB的示例从域中特定主机上注销软件包v4:hadbmunregisterpackage--hosts=host1,host2,host3v4响应为:软件包注销成功.
替换管理代理的启动脚本安装HADB的新版本时,您可能需要替换/etc/init.
d/ma-initd中的管理代理启动脚本.
检查文件HADB_install_dir/lib/ma-initd的内容.
如果该文件不同于旧的ma-initd文件,请将旧文件替换为新文件.
验证HADB升级执行以下过程以验证HADB已正确升级:确认正在运行的HADB进程的版本.
在所有HADB节点上输入以下命令以显示HADB版本:new-path/bin/ma-vnew-path/bin/hadbm-v其中,new-path是新HADB的安装路径.
该结果应该显示新的HADB版本号.
确认数据库正在运行.
输入以下命令:new-path/bin/hadbmstatus-n如果升级成功,则结果将显示所有处于running状态的HADB节点.
确保使用HADB的产品已将其配置设置更改为新的HADB路径.
为使用HADB的产品运行所有升级测试.
1234升级HADB第2章安装和设置高可用性数据库4748管理高可用性数据库注–HADB软件随SunJavaSystemApplicationServer的ApplicationServer独立分发提供.
有关SunJavaSystemApplicationServer的可用分发的信息,请参见《SunJavaSystemApplicationServer9.
1InstallationGuide》中的"DistributionTypesandTheirComponents".
HADB功能仅在企业配置文件中可用.
有关配置文件的信息,请参见《SunJavaSystemApplicationServer9.
1管理指南》中的"用法配置文件".
本章介绍了SunJavaSystemApplicationServer环境中的高可用性数据库(HighAvailabilityDatabase,HADB).
其中介绍了如何配置和管理HADB.
在创建和管理HADB之前,必须首先确定系统的拓扑并在各种计算机上安装HADB软件.
本章讨论以下主题:第49页中的"使用HADB管理代理"第57页中的"使用hadbm管理命令"第61页中的"配置HADB"第74页中的"管理HADB"第83页中的"扩展HADB"第88页中的"监视HADB"第94页中的"维护HADB计算机"使用HADB管理代理管理代理ma,在HADB主机上执行管理命令.
管理代理还通过重新启动HADB节点监控进程(如果失败)来确保其可用性.
第50页中的"启动管理代理"第54页中的"管理代理命令语法"第55页中的"自定义管理代理配置"3第3章49启动管理代理您可以使用以下方式启动管理代理:作为服务启动,用于生产.
请参见第50页中的"将管理代理作为服务启动".
为确保管理代理的可用性,请确保系统重新引导时管理代理可以自动重新启动.
请参见第51页中的"确保管理代理自动重新启动".
作为常规进程(在控制台模式下)启动,用于评估、测试或开发.
请参见第53页中的"在控制台模式下启动管理代理".
使用Solaris10上的服务管理工具(servicemanagementfacility,SMF)启动.
请参见第54页中的"使用Solaris10服务管理工具运行管理代理".
对于每种启动方式,启动过程会因使用的是JavaEnterpriseSystem还是独立的ApplicationServer而有所不同.
将管理代理作为服务启动将管理代理作为服务启动,可确保它继续运行直到系统关闭或管理代理被明确停止.
命令取决于您的安装和平台:第50页中的"Solaris或Linux上的JavaEnterpriseSystem"第50页中的"Windows上的JavaEnterpriseSystem"第51页中的"Solaris或Linux上的独立ApplicationServer"第51页中的"Windows上的独立ApplicationServer"Solaris或Linux上的JavaEnterpriseSystem要将管理代理作为服务启动,请使用以下命令:/etc/init.
d/ma-initdstart要停止该服务,请使用以下命令:/etc/init.
d/ma-initdstopWindows上的JavaEnterpriseSystem要将管理代理作为Windows服务启动,请使用以下命令:HADB_install_dir\bin\ma-i[config-file]可选参数config-file指定了管理代理配置文件.
仅当您希望更改默认管理代理配置时,才使用配置文件.
有关更多信息,请参见第55页中的"自定义管理代理配置".
要将管理代理(作为服务)停止并删除(注销),请使用以下命令:HADB_install_dir\bin\ma-r[config-file]要执行管理,请选择"管理工具"|"服务",以便能够启动和停止该服务、禁用自动启动等等.
使用HADB管理代理SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月50Solaris或Linux上的独立ApplicationServer要将管理代理作为服务启动,请使用以下命令:HADB_install_dir/bin/ma-initdstart要停止该服务,请使用以下命令:HADB_install_dir/bin/ma-initdstop要更改默认值,请编辑shell脚本HADB_install_dir/bin/ma-initd.
将ma-initd复制到目录/etc/init.
d.
替换脚本中HADB_ROOT和HADB_MA_CFG的默认值以对应于您的安装:HADB_ROOT为HADB安装目录HADB_install_dir.
HADB_MA_CFG为管理代理配置文件的位置.
有关更多信息,请参见第55页中的"自定义管理代理配置".
Windows上的独立ApplicationServer要将管理代理作为Windows服务启动,请使用以下命令:HADB_install_dir\bin\ma-i[config-file]可选参数config-file指定了管理代理配置文件.
仅当您希望更改默认管理代理配置时,才使用配置文件.
要将管理代理(作为服务)停止并删除(注销),请使用以下命令:HADB_install_dir\bin\ma-r[config-file]要执行管理,请选择"管理工具"|"服务",以便能够启动和停止该服务、禁用自动启动等等.
确保管理代理自动重新启动在生产部署中,将管理代理配置为自动重新启动.
这样可确保在ma进程失败或操作系统重新引导时管理代理的可用性.
在Windows平台上,将管理代理作为服务启动后,您可以使用Windows管理工具将服务的启动类型设置为"自动",然后设置所需的恢复选项.
在Solaris和Linux平台上,使用本节中的过程可配置管理代理自动重新启动.
这些过程确保管理代理仅在系统进入以下两个运行级时才启动:在Solaris上,运行级3(默认值).
在RedHatLinux上,运行级5(图形模式的默认值).
进入其他运行级将停止管理代理.
使用HADB管理代理第3章管理高可用性数据库51在Solaris或Linux上使用JavaEnterpriseSystem配置自动重新启动本节假定您对操作系统初始化和运行级有基本的了解.
有关这些主题的信息,请参见您的操作系统文档.
请确保您系统的默认运行级为3或5.
要查看系统的默认运行级,请检查文件/etc/inittab,并在靠近顶部的位置,查找类似于如下所示的行:id:5:initdefault:本示例显示了默认运行级5.
创建指向文件/etc/init.
d/ma-initd的软链接,如第52页中的"创建软链接"中所述.
重新引导计算机.
取消激活自动启动和停止代理、删除链接或将链接名称中的字母K和S更改为小写.
在Solaris或Linux上使用独立ApplicationServer配置自动重新启动在shell中,将当前目录更改为HADB_install_dir/bin.
编辑shell脚本ma-initd.
确保脚本中HADB_ROOT和HADB_MA_CFG的默认值反映您的安装:HADB_ROOT为HADB安装目录HADB_install_dir.
HADB_MA_CFG为管理代理配置文件的位置.
有关更多信息,请参见第55页中的"自定义管理代理配置".
将ma-initd复制到目录/etc/init.
d.
创建指向文件/etc/init.
d/ma-initd的软链接,如第52页中的"创建软链接"中所述.
取消激活自动启动和停止代理、删除链接或将链接名称中的字母K和S更改为小写.
创建软链接在Solaris上,创建以下软链接:/etc/rc0.
d/K20ma-initd/etc/rc1.
d/K20ma-initd/etc/rc2.
d/K20ma-initd开始之前123接下来的操作1234接下来的操作使用HADB管理代理SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月52/etc/rc3.
d/S99ma-initd/etc/rc5.
d/K20ma-initd(onlyforSun4mand4uarchitecture)/etc/rc6.
d/K20ma-initd/etc/rcS.
d/K20ma-initd在Linux上,创建以下软链接:/etc/rc0.
d/K20ma-initd/etc/rc1.
d/K20ma-initd/etc/rc3.
d/S99ma-initd/etc/rc5.
d/S99ma-initd/etc/rc6.
d/K20ma-initd在控制台模式下启动管理代理您可能希望在控制台模式下启动管理代理以便进行评估或测试.
请勿在生产环境中以这种方式启动管理代理,因为系统或进程失败后ma进程将不会重新启动而且命令窗口关闭时该进程将终止.
命令取决于您的平台和安装:第53页中的"Solaris或Linux上的JavaEnterpriseSystem"第53页中的"Windows上的JavaEnterpriseSystem"第54页中的"Windows上的独立ApplicationServer"第54页中的"Solaris或Linux上的独立ApplicationServer"Solaris或Linux上的JavaEnterpriseSystem要在控制台模式下启动HADB管理代理,请使用以下命令:opt/SUNWhadb/bin/ma[config-file]管理代理的默认配置文件为/etc/opt/SUNWhadb/mgt.
cfg.
要停止管理代理,请中止进程或关闭shell窗口.
Windows上的JavaEnterpriseSystem要在控制台模式下启动管理代理,请使用以下命令:HADB_install_dir\bin\ma[config-file]可选参数config-file为管理代理配置文件的名称.
有关配置文件的更多信息,请参见第55页中的"自定义管理代理配置".
要停止代理,请中止进程.
使用HADB管理代理第3章管理高可用性数据库53Windows上的独立ApplicationServer要在控制台模式下启动管理代理,请使用以下命令:HADB_install_dir\bin\ma[config-file]可选参数config-file为管理代理配置文件的名称;有关更多信息,请参见第55页中的"自定义管理代理配置".
要停止管理代理,请中止进程.
Solaris或Linux上的独立ApplicationServer要在控制台模式下启动HADB管理代理,请使用以下命令:HADB_install_dir/bin/ma[config-file]管理代理的默认配置文件为HADB_install_dir/bin/ma.
cfg.
要停止管理代理,请中止进程或关闭shell窗口.
使用Solaris10服务管理工具运行管理代理在Solaris10上,服务管理工具(ServiceManagementFacility,SMF)提供了重新启动、查看和管理服务的机制.
您可以使用SMF启动、重新启动和管理HADB管理代理.
管理代理的故障管理资源标识符(faultmanagementresourceidentifier,FMRI)为svc:/application/hadb-ma.
管理代理命令语法管理代理ma命令的语法为:ma[common-options][service-options]config-file其中:common-options是第54页中的"管理代理命令语法"中介绍的一个或多个通用选项.
service-options是第54页中的"管理代理命令语法"中介绍的Windows服务选项之一.
config-file是管理代理配置文件的完整路径.
有关更多信息,请参见第55页中的"自定义管理代理配置".
使用HADB管理代理SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月54表3–1管理代理通用选项选项说明默认值--definename=value-D将value指定给属性name,其中属性为第56页中的"配置文件"中定义的属性之一.
此选项可以重复多次.
无--help-显示帮助信息.
False--javahomepath-j使用位于path的Java运行时环境(1.
4版或更高版本).
无--systemrootpath-y通常设置在%SystemRoot%中的操作系统根目录的路径.
无--version-V显示版本信息.
False表3–2介绍了用于将管理代理作为Windows服务启动的选项.
-i、-r和-s选项相互排斥,即每次只能使用其中一个选项.
在Windows上为配置文件或命令行中的属性值指定路径时,使用双引号(")为包含空格的文件路径进行转义.
使用双引号和反斜杠:"\:和\"为驱动器和目录分隔符(:和\)进行转义.
表3–2管理代理服务选项(仅限于Windows)选项说明默认值--install-i将代理作为Windows服务来安装并启动该服务.
仅使用-i、-r和-s选项之一.
False--nameservicename-n在主机上运行多个代理时,将指定名称用于服务.
HADBMgmtAgent--remove-r停止服务并从Windows服务管理器中删除代理.
仅使用-i、-r和-s选项之一.
False--service-s将代理作为Windows服务来运行.
仅使用-i、-r和-s选项之一.
False自定义管理代理配置HADB包含可用于自定义管理代理设置的配置文件.
未指定配置文件而启动管理代理时,将使用默认值.
如果指定了配置文件,管理代理将使用该文件中的设置.
您可以在域中所有主机上重复使用该配置文件.
在HADB主机上自定义管理代理配置编辑管理代理配置文件并设置所需的值.
启动管理代理(将自定义的配置文件指定为参数).
12使用HADB管理代理第3章管理高可用性数据库55配置文件使用JavaEnterpriseSystem时,配置文件中的所有条目都被注释掉.
使用默认配置时无需任何更改.
要自定义管理代理配置,请从文件删除注释,并按需要更改值,然后启动将配置文件指定为参数的管理代理.
管理代理配置文件安装在:Solaris和Linux:/etc/opt/SUNWhadb/mgt.
cfg.
Windows:install_dir\lib\mgt.
cfg.
使用独立安装程序将管理代理配置文件安装在:Solaris和Linux:HADB_install_dir/bin/ma.
cfg.
Windows:HADB_install_dir\bin\ma.
cfg.
下表介绍了配置文件中的设置.
表3–3配置文件设置设置名称说明默认值console.
loglevel控制台的日志级别.
有效值为SEVERE、ERROR、WARNING、INFO、FINE、FINER、FINESTWARNINGlogfile.
loglevel日志文件的日志级别.
有效值为SEVERE、ERROR、WARNING、INFO、FINE、FINER、FINESTINFOlogfile.
name日志文件的名称和位置.
必须为具有读取/写入权限的有效路径.
Solaris和Linux:/var/opt/SUNWhadb/ma/ma.
logWindows:HADB_install_dir\ma.
logma.
server.
type客户机协议.
仅支持JMXMP.
jmxmpma.
server.
jmxmp.
port用于内部(UDP)和外部(TCP)通信的端口号.
必须为正整数.
建议范围为1024-49151.
1862ma.
server.
mainternal.
interfaces具有多个接口的计算机的内部通信接口.
必须为有效的IPv4地址掩码.
同一个域的所有管理代理必须使用相同的子网.
例如,如果主机有两个接口10.
10.
116.
61和10.
10.
124.
61,使用10.
10.
116.
0/24可以使用第一个接口.
斜杠后的数字表示子网掩码的位数.
无ma.
server.
dbdevicepath存储HADB设备信息的路径.
Solaris和Linux:/var/opt/SUNWhadb/4Windows:HADB_install_dir\device使用HADB管理代理SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月56表3–3配置文件设置(续)设置名称说明默认值ma.
server.
dbhistorypath存储HADB历史文件的路径.
Solaris和Linux:/var/opt/SUNWhadbWindows:REPLACEDIR(运行时由实际URL替换.
)ma.
server.
dbconfigpath存储节点配置数据的路径.
Solaris和Linux:/var/opt/SUNWhadb/dbdefWindows:C:\Sun\SUNWhadb\dbdefrepository.
dr.
path域系统信息库文件的路径.
Solaris和Linux:/var/opt/SUNWhadb/repositoryWindows:C:\Sun\SUNWhadb\repository使用hadbm管理命令使用hadbm命令行实用程序来管理HADB域及其数据库实例和节点.
hadbm实用程序(也称为管理客户机)向指定的管理代理(用作管理服务器)发送管理请求,该管理代理可以从系统信息库访问数据库配置.
本节介绍了hadbm命令行实用程序,包括以下主题:第57页中的"命令语法"第58页中的"安全性选项"第59页中的"常规选项"第60页中的"环境变量"命令语法hadbm实用程序位于HADB_install_dir/bin目录中.
hadbm命令的常规语法如下:hadbmsubcommand[-short-option[option-value]][--long-option[option-value]][operands]子命令标识了要执行的操作或任务.
子命令区分大小写.
大多数子命令都具有一个操作数(通常为dbname).
选项修改了hadbm如何执行子命令.
选项区分大小写.
每个选项都有长短两种形式.
在短形式之前加一个破折号(-);在长形式前加两个破折号(--).
大多数选项都需要参数值,但布尔选项除外(布尔选项必须存在才能启用功能).
选项对于命令的成功执行不是必需的.
使用hadbm管理命令第3章管理高可用性数据库57如果子命令需要数据库名称,而您未指定,则hadbm将使用默认数据库hadb.
示例3–1hadbm命令示例以下说明了status子命令:hadbmstatus--nodes安全性选项出于安全性原因,所有hadbm命令都需要管理员密码.
创建数据库或域时,使用--adminpassword选项设置密码.
自此之后,您必须在执行数据库或域操作时指定该密码.
为增强安全性,请使用--adminpasswordfile选项指定包含密码的文件,而不是在命令行上输入密码.
使用以下行定义密码文件中的密码:HADBM_ADMINPASSWORD=password用密码替换password.
忽略文件中的其他内容.
如果同时指定了--adminpassword和--adminpasswordfile选项,则--adminpassword将优先使用.
如果需要密码,但未在命令中指定密码,则hadbm将提示您输入密码.
注–仅在创建数据库或域时,才可以设置管理员密码,此后无法更改此密码.
除管理员密码之外,HADB还需要数据库密码以执行修改数据库模式的操作.
使用以下命令时,必须使用上述两个密码:hadbmcreate、hadbmaddnodes和hadbmrefragment.
在命令行上使用--dbpassword选项指定数据库密码.
与管理员密码类似,您也可以将密码放入文件并使用--dbpasswordfile选项指定文件位置.
使用以下行设置密码文件中的密码:HADBM_DBPASSWORD=password为了测试或评估,您可以在创建数据库或域时使用--no-adminauthentication选项禁用密码验证.
有关更多信息,请参见第62页中的"创建数据库"和第61页中的"创建管理域".
下表汇总了hadbm安全性命令行选项.
使用hadbm管理命令SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月58表3–4hadbm安全性选项选项(短形式)说明--adminpassword=password-w指定数据库或域的管理员密码.
如果创建数据库或域时使用了该选项,则必须在每次使用hadbm操作数据库或域时提供该密码.
可以使用该选项或--adminpasswordfile,但两者不能同时使用.
--adminpasswordfile=filepath-W指定包含数据库或域的管理员密码的文件.
如果创建数据库或域时使用了该选项,则必须在每次使用hadbm操作数据库或域时提供该密码.
可以使用该选项或--adminpassword,但两者不能同时使用.
--no-adminauthentication-U创建数据库或域时,使用该选项可指定无需管理员密码.
出于安全性原因,请勿在生产部署中使用该选项.
--dbpassword=password-p指定数据库密码.
如果在创建数据库时使用了该选项,则必须在每次使用hadbm命令操作数据库时提供该密码.
为HADB系统用户创建密码.
至少应为8个字符.
可以使用该选项或--dbpasswordfile,但两者不能同时使用.
--dbpasswordfile=filepath-P指定包含HADB系统用户密码的文件.
可以使用该选项或--dbpassword,但两者不能同时使用.
常规选项常规命令选项可用于任何hadbm子命令.
它们都是布尔选项,默认情况下为false.
下表介绍了hadbm常规命令选项.
表3–5hadbm常规选项选项(短形式)说明--quiet-q在无提示、没有任何描述性消息的情况下执行子命令.
--help-显示该命令和所有支持的子命令的简短说明.
无需任何子命令.
--version-V显示hadbm命令的版本详细信息.
无需任何子命令.
--yes-y以非交互模式执行子命令.
--force-f如果已满足命令的发出条件,则非交互地执行命令,并且不抛出错误.
使用hadbm管理命令第3章管理高可用性数据库59表3–5hadbm常规选项(续)选项(短形式)说明--echo-e显示带有所有选项的子命令和选项的用户定义值或默认值,然后执行子命令.
--agent=URL-m管理代理的URL.
URL为:hostlist:port,其中hostlist是以逗号分隔的主机名或IP地址列表,port是运行管理代理的端口号.
默认值为localhost:1862.
注:该选项对hadbmaddnodes无效.
环境变量为了方便起见,您可以设置环境变量而不用指定命令选项.
下表介绍了与hadbm命令选项对应的环境变量.
表3–6HADB选项和环境变量长形式短形式默认值环境变量--adminpassword-w无$HADBM_ADMINPASSWORD--agent--mlocalhost:1862$HADBM_AGENT--datadevices-a1$HADBM_DATADEVICESdbname无hadb$HADBM_DB--dbpassword-p无$HADBM_DBPASSWORD--dbpasswordfile-P无$HADBM_DBPASSWORDFILE--devicepath-dSolaris和Linux:/var/opt/SUNWhadbWindows:C:\Sun\AppServer\SUNWhadb\vers,其中vers是HADB的版本号.
$HADBM_DEVICEPATH--devicesize-z无$HADBM_DEVICESIZE--echo-eFalse$HADBM_ECHO--fast-FFalse$HADBM_FAST--force-fFalse$HADBM_FORCE--help-False$HADBM_HELP使用hadbm管理命令SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月60表3–6HADB选项和环境变量(续)长形式短形式默认值环境变量--historypath-tSolaris和Linux:/var/opt/SUNWhadbWindows:REPLACEDIR,运行时由实际URL替换.
$HADBM_HISTORYPATH--hosts-H无$HADBM_HOSTS--interactive-iTrue$HADBM_INTERACTIVE--no-refragment-rFalse$HADBM_NOREFRAGMENT--portbase-b15200$HADBM_PORTBASE--quiet-qFalse$HADBM_QUIET--repair-RTrue$HADBM_REPAIR--rolling-gTrue$HADBM_ROLLING--saveto-o无$HADBM_SAVETO--set-S无$HADBM_SET--spares-s0$HADBM_SPARES--startlevel-lnormal$HADBM_STARTLEVEL--version-VFalse$HADBM_VERSION--yes-yFalse$HADBM_YES配置HADB本节介绍了以下基本HADB配置任务:第61页中的"创建管理域"第62页中的"创建数据库"第67页中的"查看和修改配置属性"第72页中的"配置JDBC连接池"创建管理域命令hadbmcreatedomain可以创建包含指定HADB主机的管理域.
该命令初始化主机和持久性配置存储之间的内部通信通道.
该命令的语法为:配置HADB第3章管理高可用性数据库61hadbmcreatedomain[--adminpassword=password|--adminpasswordfile=file|--no-adminauthentication][--agent=maurl]hostlisthostlist操作数是以逗号分隔的HADB主机列表,其中每个主机都是一个有效的IPv4网络地址.
hostlist中包含您希望置入新域中的所有主机.
有关命令选项的说明,请参见第59页中的"常规选项".
使用该命令之前,请确保hostlist中的每台主机都在运行HADB管理代理.
此外,这些管理代理必须:不是现有域的成员.
配置为使用同一端口.
可以使用IP多址广播并通过UDP、TCP相互访问.
hadbm创建管理域之后,将启用域中的所有主机.
接下来管理代理就可以管理数据库了.
创建HADB域之后,接着应创建HADB数据库.
有关创建HADB数据库的更多信息,请参见第62页中的"创建数据库".
示例3–2创建HADB管理域以下示例将在四个指定主机上创建管理域:hadbmcreatedomain--adminpassword=passwordhost1,host2,host3,host4hadbm成功执行该命令之后,您将看到以下消息:Domainhost1,host2,host3,host4created.
创建HADB域之后,使用管理代理注册HADB软件包的路径和版本.
创建数据库使用hadbmcreate命令手动创建数据库.
使用此命令创建数据库之前,请先创建管理域并注册HADB软件包.
如果在运行hadbmcreate时未执行这两步,则该命令将隐式执行它们.
尽管这看起来可能更省事,但是任何命令的失败都可能会使调试变得困难.
此外,hadbmcreate不是原子操作,也就是说,如果任一隐式命令失败,执行成功的命令将不会被回滚.
因此,最好只在创建域并注册HADB软件包之后创建数据库.
例如,如果hadbmcreatedomain和hadbmregisterpackage执行成功,但hadbmcreatedatabase失败,则hadbmcreatedomain和hadbmregisterpackage所做的更改将保留下来.
配置HADBSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月62创建数据库创建管理域.
有关更多信息,请参见第61页中的"创建管理域".
注册HADB软件包.
有关更多信息,请参见第45页中的"注册HADB软件包".
使用hadbmcreate命令创建数据库.
有关命令语法的信息,请参见以下部分.
hadbmcreate命令语法hadbmcreate[--package=name][--packagepath=path][--historypath=path][--devicepath=path][--datadevices=number][--portbase=number][--spares=number][--set=attr-val-list][--agent=maurl][--no-cleanup][--no-clear][--devicesize=size][--dbpassword=password|--dbpasswordfile=file]--hosts=hostlist[--adminpassword=password|--adminpasswordfile=file|--no-adminauthentication][dbname]dbname操作数指定数据库名称,该名称必须唯一.
为了确保数据库名称唯一,请使用hadbmlist命令列出现有数据库名称.
请使用默认数据库名称,除非您需要创建多个数据库.
例如,要在同一组HADB计算机上创建具有独立数据库的多个群集,请为每个群集使用单独的数据库名称.
hadbmcreate命令将错误消息写入控制台而不是日志文件.
表3–7介绍了特殊的hadbmcreate命令选项.
有关其他命令选项的说明,请参见第59页中的"常规选项".
表3–7hadbmcreate选项选项(短形式)说明默认值--datadevices=number-a每个节点上的数据设备数目(在1至8之间,包括1和8).
数据设备从0开始编号.
1123配置HADB第3章管理高可用性数据库63表3–7hadbmcreate选项(续)选项(短形式)说明默认值--devicepath=path-d设备的路径.
有四种设备:DataDeviceNiLogDevice(节点内部日志设备)RelalgDevice(关系代数查询设备)NoManDevice(节点管理器设备)此路径必须存在并且可写.
要为每个节点或每个设备设置不同的设备路径,请参见第66页中的"设置异构设备路径".
Solaris和Linux:/var/opt/SUNWhadbWindows:C:\Sun\AppServer\SUNWhadb\vers,其中vers是HADB的版本号.
默认值由管理代理配置文件中的ma.
server.
dbdevicepath指定.
有关详细信息,请参见第56页中的"配置文件".
--devicesize=size-z每个节点的设备大小.
有关更多信息,请参见第66页中的"指定设备大小".
要增加设备大小,请参见第83页中的"为现有节点添加存储空间".
1024MB最大值小于操作系统文件的最大大小或为256GB.
最小值为:(4xLogbufferSize+16MB)/n其中n为选项--datadevices指定的数据设备数.
--historypath=path-t历史文件的路径.
此路径必须已存在并且可写.
有关历史文件的更多信息,请参见第96页中的"清除和归档历史文件".
默认值由管理代理配置文件中的ma.
server.
dbhistorypath指定.
有关详细信息,请参见第56页中的"配置文件".
Solaris和Linux:/var/opt/SUNWhadb在Windows上:REPLACEDIR(运行时由实际URL替换.
)--hosts=hostlist-H数据库节点的以逗号分隔的主机名或IP地址(仅限于IPv4)列表.
使用IP地址以避免依赖DNS查找.
主机名必须为绝对主机名.
不能使用localhost或127.
0.
0.
1作为主机名.
有关更多信息,请参见第65页中的"指定主机".
无--package=name-kHADB软件包的名称(版本).
如果未找到该软件包,则注册默认软件包.
此选项已过时.
使用hadbmregisterpackage命令在域中注册软件包.
无配置HADBSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月64表3–7hadbmcreate选项(续)选项(短形式)说明默认值--packagepath=path-LHADB软件包的路径.
仅当未在域中注册软件包时使用.
此选项已过时.
使用hadbmregisterpackage命令在域中注册软件包.
无--portbase=number-b节点0所使用的端口基准号.
从该基准号开始,以20为增量自动为后续节点指定端口基准号.
每个节点均使用其端口基准号和接下来的五个连续编号端口.
要在一台计算机上运行几个数据库,请制订明确分配端口号的计划.
15200--spares=number-s备用节点的数目.
此数目必须为偶数,并且必须小于--hosts选项中指定的节点数目.
0--set=attr-val-list-S以逗号分隔的数据库配置属性列表(采用name=value格式).
有关数据库配置属性的说明,请参见第96页中的"清除和归档历史文件".
无示例3–3创建数据库的示例以下命令是创建数据库的一个示例:hadbmcreate--spares2--devicesize1024--hostsn0,n1,n2,n3,n4,n5指定主机使用--hosts选项为数据库中的节点指定以逗号分隔的主机名或IP地址列表.
hadbmcreate命令为列表中的每个主机名(或IP地址)创建一个节点.
节点的数目必须为偶数.
使用重复的主机名将在同一台计算机上创建具有不同端口号的多个节点.
确保同一台计算机上的节点不是镜像节点,并且不是来自不同的DRU.
节点将按照在此选项中列出的顺序从零开始编号.
第一对镜像节点是节点零(0)和一(1),第二对是二(2)和三(3),依此类推.
奇数编号的节点位于一个DRU中,偶数编号的节点位于另一个DRU中.
如果使用--spares选项,则备用节点为具有最大编号的那些节点.
有关配置双网络接口的信息,请参见第34页中的"配置网络冗余".
配置HADB第3章管理高可用性数据库65指定设备大小使用--devicesize选项指定设备大小.
建议的设备大小为:(4x/nd+4l/d)/0.
99其中x为用户数据的总大小n为节点的数目(由--hosts选项指定)d为每个节点的设备数目(由--datadevices选项指定)l为日志缓冲区的大小(由属性LogBufferSize指定)如果可能发生重新分段(例如,使用hadbmaddnodes),则建议的设备大小为:(8x/nd+4l/d)/0.
99设置异构设备路径要为每个节点或服务设置不同的设备路径,请使用hadbmcreate的--set选项.
有四种类型的设备:DataDevice、NiLogDevice(节点内部日志设备)、RelalgDevice(关系代数查询设备)和NoManDevice(节点管理器设备).
每个name=value对的语法如下,其中仅当device为DataDevice时才需要-devno:node-nodeno.
device-devno.
Devicepath例如:--setNode-0.
DataDevice-0.
DevicePath=/disk0,Node-1.
DataDevice-0.
DevicePath=/disk1您还可以为历史文件设置异构路径,如下所示:node-nodeno.
historypath=path有关历史文件的信息,请参见第96页中的"清除和归档历史文件".
所有不是为特定节点或设备设置的设备路径的默认值都为--devicepath的值.
注–使用hadbmset和hadbmaddnodes命令更改设备路径和历史文件的位置.
错误诊断如果创建数据库时遇到困难,请检查以下内容:确保已在所有主机上启动管理代理并定义了HADB域.
有关详细信息,请参见第50页中的"启动管理代理".
配置HADBSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月66必须将文件和目录权限设置为允许以下用户对安装、历史记录、设备和配置路径具有读取、写入和执行权限:SunJavaSystemApplicationServer管理用户(在安装过程中设置)HADB系统用户有关设置用户权限的详细信息,请参见第33页中的"设置HADB前的准备工作".
ApplicationServer和HADB端口指定不能与同一计算机上的其他端口指定发生冲突.
建议的默认端口指定为:SunJavaSystemMessageQueue:7676IIOP:3700HTTP服务器:80管理服务器:4848HADB节点:每个节点使用六个连续端口.
例如,对于默认端口15200,节点0使用15200至15205,节点1使用15220至15225,依此类推.
磁盘空间必须足够;请参见《SunJavaSystemApplicationServer9.
1发行说明》.
查看和修改配置属性您可以分别使用hadbmget和hadbmset命令来查看和修改数据库配置属性.
获取配置属性的值要获得配置属性的值,请使用hadbmget命令.
有关有效属性的列表,请参见第68页中的"配置属性".
该命令语法为:hadbmgetattribute-list|--all[dbname][--adminpassword=password|--adminpasswordfile=file][--agent=maurl]dbname操作数指定数据库名称.
默认值为hadb.
attribute-list操作数是以逗号分隔或包含在引号之间并以空格分隔的属性的列表.
--all选项显示所有属性的值.
有关hadbmget的所有属性的列表,请参见第68页中的"配置属性".
有关命令选项的说明,请参见第59页中的"常规选项".
示例3–4使用hadbmget的示例hadbmgetJdbcUrl,NumberOfSessions配置HADB第3章管理高可用性数据库67设置配置属性的值要设置配置属性的值,请使用hadbmset命令.
有关有效属性的列表,请参见第68页中的"配置属性".
hadbmset[dbname]attribute=value[,attribute=value.
.
.
][--adminpassword=password|--adminpasswordfile=file][--agent=maurl]dbname操作数指定数据库名称.
默认值为hadb.
attribute=value列表是以逗号分隔或包含在引号之间并以空格分隔的属性的列表.
有关命令选项的说明,请参见第59页中的"常规选项".
如果该命令执行成功,它将重新启动数据库使其恢复先前状态或进入更佳状态.
有关数据库状态的信息,请参见第88页中的"获取HADB的状态".
按照第79页中的"重新启动数据库"中的说明重新启动HADB.
无法使用hadbmset设置以下属性,而应在创建数据库时设置它们(请参见第62页中的"创建数据库").
DatabaseNameDevicePathHistoryPathNumberOfDatadevicesPortbaseJdbcUrl(其值在数据库创建期间根据--hosts和--portbase选项进行设置).
注–使用hadbmset设置除ConnectionTrace或SQLTraceMode之外的任何配置属性将导致HADB的滚动重新启动.
在滚动重新启动过程中,每次将停止并启动(使用新配置)一个节点;不中断HADB服务.
如果设置了ConnectionTrace或SQLTraceMode,将不会发生滚动重新启动,但更改仅适用于从ApplicationServer实例建立的新的HADB连接.
配置属性下表列出了可以通过hadbmset修改并通过hadbmget检索的配置属性列表.
配置HADBSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月68表3–8配置属性属性说明默认值范围ConnectionTrace如果为true,当客户机连接(JDBC、ODBC)开始或结束时将在HADB历史文件中记录一条消息.
FalseTrue或FalseCoreFile请勿更改默认值.
FalseTrue或FalseDatabaseName数据库名称.
hadbDataBufferPoolSize在共享内存中分配的数据缓冲池的大小.
200MB16-2047MBDataDeviceSize指定节点的设备大小.
有关建议的DataDeviceSize的信息,请参见第66页中的"指定设备大小".
最大值为256GB或操作系统文件的最大大小,取其中的较小值.
最小值为:(4xLogbufferSize+16MB)/n其中n为数据设备的数目.
1024MB32-262144MBPackageName数据库使用的HADB软件包的名称.
V4.
x.
x.
x无DevicePath设备的位置.
这些设备包括:数据设备(DataDevice)节点内部日志设备(NiLogDevice)关系代数查询设备(RelalgDevice)Solaris和Linux:/var/opt/SUNWhadbWindows:C:\Sun\AppServer\SUNWhadb\vers,其中vers是HADB的版本号.
EagerSessionThreshold确定使用正常还是主动空闲会话失效.
在正常空闲会话失效中,空闲时间超过SessionTimeout秒的会话将失效.
当并发会话的数目超过最大会话数目的EagerSessionThreshold%时,空闲时间超过EagerSessionTimeout秒的会话将失效.
NumberOfSessions属性值的一半0-100EagerSessionTimeout使用主动会话失效时,在数据库连接失效之前该连接可以处于空闲状态的秒数.
120秒0-2147483647秒EventBufferSize记录数据库事件的事件缓冲区的大小.
如果设置为0,将不执行事件缓冲区日志记录.
在故障期间,将转储事件缓冲区.
在试验部署期间,这将给出有关故障原因的有价值的信息并且非常有用.
将事件写入内存会影响性能.
0MB0-2097152MB配置HADB第3章管理高可用性数据库69表3–8配置属性(续)属性说明默认值范围HistoryPath包含信息、警告和错误消息的HADB历史文件的位置.
此属性为只读属性.
Solaris和Linux:/var/opt/SUNWhadbWindows:REPLACEDIR(运行时由实际URL替换.
)InternalLogbufferSize记录与存储数据相关的操作的节点内部日志设备的大小.
12MB4-128MBJdbcUrl数据库的JDBC连接URL.
此属性为只读属性.
无LogbufferSize记录与数据相关的操作的日志缓冲区的大小.
48MB4-2048MBMaxTablesHADB数据库中允许的表的最大数目.
1100100-1100NumberOfDatadevicesHADB节点使用的数据设备的数目.
此属性为只读属性.
11-8NumberOfLocksHADB节点分配的锁的数目.
5000020000-1073741824NumberOfSessions可以为HADB节点打开的会话(数据库连接)的最大数目.
1001-10000PortBase用于为不同的HADB进程创建不同的端口号的基准端口号.
此属性为只读属性.
1520010000-63000RelalgDeviceSize关系代数查询中使用的设备的大小.
128MB32-262144MBSessionTimeout使用正常会话失效时,在数据库连接失效之前该连接可以处于空闲状态的时间.
1800秒0-2147483647秒SQLTraceMode写入历史文件的有关已执行的SQL查询的信息量.
如果为SHORT,则记录SQL会话的登录和注销.
如果为FULL,则记录正在准备和正在执行的所有SQL查询,包括参数值.
NONENONE/SHORT/FULLStartRepairDelay备用节点允许故障活动节点执行节点恢复的最长时间.
如果故障节点在此时间间隔内无法恢复,备用节点将开始从故障节点的镜像复制数据并成为活动节点.
建议不要更改默认值.
20秒0-100000秒配置HADBSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月70表3–8配置属性(续)属性说明默认值范围StatIntervalHADB节点向其历史文件写入吞吐量和响应时间统计信息的时间间隔.
要禁用此属性,请将其设置为0.
以下是统计信息行的示例:Req-replytime:#123,min=69avg=1160max=9311%=100.
0符号(#)后的数字是在StatInterval内处理的请求的数目.
接下来的三个数字是在StatInterval内完成的事务所用的最短、平均和最长时间(以微秒为单位).
百分比符号(%)后的数字是在StatInterval中15毫秒之内成功完成的事务数目.
600秒0-600秒SyslogFacility向syslog报告时使用的工具.
应当配置syslog守护进程(有关详细信息,请参见mansyslogd.
conf).
请使用同一计算机上运行的其他应用程序未使用的工具.
设置为none可以禁用syslog日志记录.
local0local0、local1、local2、local3、local4、local5、local6、local7、kern、user、mail、daemon、auth、syslog、lpr、news、uucp、cron、noneSysLogging如果为true,HADB节点将信息写入操作系统的syslog文件.
TrueTrue或FalseSysLogLevel保存到操作系统的syslog文件的HADB消息的最低级别.
将记录该级别或更高级别的所有消息.
例如,"info"将记录所有消息.
warningnonealerterrorwarninginfoSyslogPrefix在由HADB写入的所有syslog消息之前插入的文本字符串.
hadb-dbnameTakeoverTime节点出现故障和该节点的镜像接管之间的时间.
请勿更改默认值.
10000(毫秒)500-16000毫秒配置HADB第3章管理高可用性数据库71配置JDBC连接池ApplicationServer使用JavaDatabaseConnectivity(JDBC)API与HADB进行通信.
asadminconfigure-ha-cluster命令自动创建JDBC连接池以与HADB一起使用(用于群集cluster-name).
连接池的名称为"cluster-name-hadb-pool".
JDBC资源的JNDIURL为"jdbc/cluster-name-hastore".
连接池的初始配置通常已足够.
添加节点时,更改稳定的池大小,以使每个HADB活动节点都有八个连接.
请参见第84页中的"添加节点".
本节包含以下主题:第72页中的"获取JDBCURL"第72页中的"创建连接池"第74页中的"创建JDBC资源"有关连接池和JDBC资源的常规信息,请参见《SunJavaSystemApplicationServer9.
1高可用性管理指南》.
获取JDBCURL在可以设置JDBC连接池之前,需要使用hadbmget命令来确定HADB的JDBCURL,如下所示:hadbmgetJdbcUrl[dbname]例如:hadbmgetJdbcUrl该命令显示JDBCURL,其形式如下所示:jdbc:sun:hadb:host:port,host:port,.
.
.
删除jdbc:sun:hadb:前缀并将host:port,host:port.
.
.
部分用作serverList连接池属性(表3–10所示)的值.
创建连接池下表汇总了HADB所需的连接池设置.
添加节点时,请更改稳定池大小,但不要更改其他设置.
配置HADBSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月72表3–9HADB连接池设置设置HADB所需的值名称HADBJDBC资源的池名称设置必须指定此名称数据库供应商HADB4.
4全局事务支持取消选中/false数据源类名称com.
sun.
hadb.
jdbc.
ds.
HadbDataSource稳定的池大小每个活动的HADB节点使用8个连接.
有关更多详细信息,请参见SystemDeploymentGuide.
需要连接验证选中/true验证方法meta-data表名称不指定所有连接均失败取消选中/false事务隔离repeatable-read保证隔离层选中/true下表汇总了HADB所需的连接池属性.
添加节点时,请更改serverList,但不要更改其他属性.
表3–10HADB连接池属性属性说明username在asadmincreate-session-store命令中使用的storeuser的名称.
password在asadmincreate-session-store命令中使用的密码(storepassword).
serverListHADB的JDBCURL.
要确定该值,请参见第72页中的"获取JDBCURL".
如果将节点添加到数据库中,则必须更改此值.
请参见第84页中的"添加节点".
cacheDatabaseMetaData需要时设置为false,以确保对Connection.
getMetaData()的调用可以获得对数据库的调用,从而确保连接有效.
eliminateRedundantEndTransaction必要时设置为true可以通过消除冗余提交和回滚请求以及忽略这些请求(如果未打开任何事务)来提高性能.
maxStatement在驱动程序语句池中高速缓存的每个打开的连接的最大语句数目.
请将此属性设置为20.
配置HADB第3章管理高可用性数据库73示例3–5创建连接池下面是一个创建HADBJDBC连接池的示例asadmincreate-jdbc-connection-pool命令:asadmincreate-jdbc-connection-pool--useradminname--passwordsecret--datasourceclassnamecom.
sun.
hadb.
jdbc.
ds.
HadbDataSource--steadypoolsize=32--isolationlevel=repeatable-read--isconnectvalidatereq=true--validationmethod=meta-data--propertyusername=storename:password=secret456:serverList=host\:port,host\:port,host\\:port,host\:port,host\:port,host\:port:cacheDatabaseMetaData=false:eliminateRedundantEndTransaction=truehadbpool在Solaris上,用双反斜杠(\\)对属性值内的冒号字符(:)进行转义.
在Windows上,用单反斜杠(\)对冒号字符(:)进行转义.
创建JDBC资源下表汇总了HADB所需的JDBC资源设置.
表3–11HADBJDBC资源设置设置说明JNDI名称在会话持久性配置中,以下JNDI名称为默认值:jdbc/hastore.
您可以使用默认名称,也可以使用其他名称.
当激活可用性服务时,还必须将此JNDI名称指定为store-pool-jndi-name持久性存储属性的值.
池名称从列表中选择此JDBC资源所使用的HADB连接池的名称(或ID).
有关更多信息,请参见第34页中的"配置网络冗余".
已启用的数据源选中/true管理HADB当替换或升级网络、硬件、操作系统或HADB软件时,通常需要执行管理操作.
以下各节说明了各种管理操作:第75页中的"管理域"第76页中的"管理节点"第78页中的"管理数据库"管理HADBSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月74第82页中的"从会话数据损坏恢复"管理域您可以在HADB域上执行以下操作:创建域:有关更多信息,请参见第61页中的"创建管理域".
第75页中的"扩展域"第75页中的"删除域"第76页中的"列出域中的主机"第75页中的"从域中删除主机"有关命令选项的说明,请参见第58页中的"安全性选项"和第59页中的"常规选项".
扩展域使用extenddomain将主机添加到一个现有管理域中.
该命令语法为:hadbmextenddomain[--adminpassword=password|--adminpasswordfile=file][--agent=maurl]hostlistHADB主机的IP地址必须为IPv4地址.
有关更多信息,请参见hadbm-extenddomain(1).
删除域使用deletedomain删除管理域.
该命令语法为:hadbmdeletedomain[--adminpassword=password|--adminpasswordfile=file][--agent=maurl]有关更多信息,请参见hadbm-deletedomain(1).
从域中删除主机使用reducedomain从管理域中删除主机.
该命令语法为:hadbmreducedomain[--adminpassword=password|--adminpasswordfile=file][--agent=maurl]host_list管理HADB第3章管理高可用性数据库75有关更多信息,请参见hadbm-reducedomain(1).
列出域中的主机使用listdomain列出管理域中定义的所有主机.
该命令语法为:hadbmlistdomain[--adminpassword=password|--adminpasswordfile=file][--agent=maurl]有关更多信息,请参见hadbm-listdomain(1).
管理节点您可以在单个节点上执行以下操作:第76页中的"启动节点"第77页中的"停止节点"第78页中的"重新启动节点"启动节点您可能需要手动启动已停止的HADB节点(停止原因为其主机为进行硬件或软件的升级或替换而脱机).
此外,您可能需要手动启动由于某种原因(非双重故障)而无法重新启动的节点.
有关如何从双重故障中恢复的更多信息,请参见第80页中的"清除数据库".
在大多数情况下,您应首先尝试使用normal启动级别启动节点.
如果normal启动级别失败或超时,则必须使用repair启动级别.
要启动数据库中的节点,请使用hadbmstartnode命令.
语法为:hadbmstartnode[--adminpassword=password|--adminpasswordfile=file][--agent=maurl][--startlevel=level]nodeno[dbname]dbname操作数指定数据库名称.
默认值为hadb.
nodeno操作数指定要启动的节点编号.
使用hadbmstatus显示数据库中所有节点的编号.
有关更多信息,请参见hadbm-startnode(1).
管理HADBSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月76启动级别选项hadbmstartnode命令具有一个特殊选项--startlevel(短形式-l),该选项指定了启动节点的级别.
节点启动级别为:normal(默认值):使用在节点上找到的本地数据(在内存中以及在磁盘的数据设备文件中)启动节点,并使用节点缺少的最近更新的镜像对其进行同步.
repair:强制节点放弃本地数据并从其镜像复制数据.
clear:重新初始化节点的设备并从该节点的镜像节点强制修复数据.
在设备文件需要初始化时使用,如果文件损坏或包含设备文件的磁盘被替换,则该启动级别是必需的.
有关其他命令选项的说明,请参见第59页中的"常规选项".
示例3–6启动节点的示例hadbmstartnode1停止节点您可能需要停止节点以修复或升级主机的硬件或软件.
要停止节点,请使用hadbmstopnode命令.
该命令语法为:hadbmstopnode[--adminpassword=password|--adminpasswordfile=file][--agent=maurl][--no-repair]nodeno[dbname]nodeno操作数指定要停止的节点的编号.
此节点编号的镜像节点必须正在运行.
使用hadbmstatus显示数据库中所有节点的编号.
dbname操作数指定数据库名称.
默认值为hadb.
hadbmstopnode命令具有一个特殊选项--no-repair(短形式-R),该选项表明无备用节点可以替换已停止的节点.
如果没有此选项,备用节点将启动并接管已停止的节点的工作.
有关其他命令选项的说明,请参见第59页中的"常规选项".
有关更多信息,请参见hadbm-stopnode(1).
示例3–7停止节点的示例hadbmstopnode1管理HADB第3章管理高可用性数据库77重新启动节点如果发现行为异常(例如,过度CPU消耗),您可能需要重新启动节点.
要重新启动数据库中的节点,请使用hadbmrestartnode命令.
该命令语法为:hadbmrestartnode[--adminpassword=password|--adminpasswordfile=file][--agent=maurl][--startlevel=level]nodeno[dbname]dbname操作数指定数据库名称.
默认值为hadb.
nodeno操作数指定要重新启动的节点的编号.
使用hadbmstatus显示数据库中所有节点的编号.
hadbmrestartnode命令具有一个特殊选项--startlevel(短形式-l),该选项指定了启动节点的级别.
有关更多信息,请参见第77页中的"启动级别选项".
有关其他命令选项的说明,请参见第59页中的"常规选项".
有关更多信息,请参见hadbm-restartnode(1).
示例3–8重新启动节点的示例hadbmrestartnode1管理数据库您可以在HADB数据库中执行以下操作:第78页中的"启动数据库"第79页中的"停止数据库"第79页中的"重新启动数据库"第80页中的"列出数据库"第80页中的"清除数据库"第81页中的"删除数据库"启动数据库要启动数据库,请使用hadbmstart命令.
此命令将启动数据库停止之前正在运行的所有节点.
在停止数据库之后再次启动数据库时,不会启动单独停止(脱机)的节点.
该命令语法为:管理HADBSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月78hadbmstart[--adminpassword=password|--adminpasswordfile=file][--agent=maurl][dbname]dbname操作数指定数据库名称.
默认值为hadb.
有关命令选项的说明,请参见第59页中的"常规选项".
有关更多信息,请参见hadbm-start(1).
示例3–9启动数据库的示例hadbmstart停止数据库如果使用单独的操作停止并启动数据库,则数据库处于停止状态时数据不可用.
要保持数据可用,可以重新启动数据库,如第79页中的"重新启动数据库"所述.
停止数据库以:删除数据库.
执行影响所有HADB节点的系统维护.
停止数据库之前,可以停止使用该数据库的依赖ApplicationServer实例,也可以将其配置为使用持久性类型而不使用ha.
停止数据库时,将停止数据库中所有正在运行的节点并且数据库将变为已停止状态.
有关数据库状态的更多信息,请参见第89页中的"数据库状态".
要停止数据库,请使用hadbmstop命令.
该命令语法为:hadbmstop[--adminpassword=password|--adminpasswordfile=file][--agent=maurl][dbname]dbname操作数指定数据库名称.
默认值为hadb.
有关命令选项的说明,请参见第59页中的"常规选项".
有关更多信息,请参见hadbm-stop(1).
示例3–10停止数据库的示例hadbmstop重新启动数据库如果发现行为异常(例如持续超时问题),则可能需要重新启动数据库.
在某些情况下,重新启动可以解决此问题.
管理HADB第3章管理高可用性数据库79重新启动数据库时,数据库及其数据仍然可用.
如果使用单独的操作停止并启动HADB,则HADB处于停止状态时数据和数据库服务不可用.
这是因为,默认情况下,hadbmrestart执行节点的滚动重新启动:它逐个停止并启动节点.
相反,hadbmstop将同时停止所有节点.
要重新启动数据库,请使用hadbmrestart命令.
该命令语法为:hadbmrestart[--adminpassword=password|--adminpasswordfile=file][--agent=maurl][--no-rolling][dbname]dbname操作数指定数据库名称.
默认值为hadb.
特殊选项--no-rolling(短形式-g)指定同时重新启动所有节点(这将使服务受到损失).
如果没有此选项,此命令将重新启动数据库中的每个节点并使其达到当前状态或更佳状态.
有关其他命令选项的说明,请参见第59页中的"常规选项".
有关更多信息,请参见hadbm-restart(1).
例如:hadbmrestart列出数据库要列出HADB实例中的所有数据库,请使用hadbmlist命令.
该命令语法为:hadbmlist[--agent=maurl][--adminpassword=password|--adminpasswordfile=file]有关命令选项的说明,请参见第59页中的"常规选项".
有关更多信息,请参见hadbm-list(1).
清除数据库在以下情况时清除数据库:hadbmstatus命令显示数据库处于不可操作状态,请参见第88页中的"获取HADB的状态".
多个节点不能响应并长时间处于等待状态.
从会话数据损坏中恢复.
请参见第82页中的"从会话数据损坏恢复".
管理HADBSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月80hadbmclear命令可以停止数据库节点,并清除数据库设备,然后启动节点.
该命令将删除HADB中的ApplicationServer模式数据存储,包括表、用户名和密码.
运行hadbmclear之后,使用asadminconfigure-ha-cluster重新创建数据模式、重新配置JDBC连接池并重新装入会话持久性存储.
该命令语法为:hadbmclear[--fast][--spares=number][--dbpassword=password|--dbpasswordfile=file][--adminpassword=password|--adminpasswordfile=file][--agent=maurl][dbname]dbname操作数指定数据库名称.
默认值为hadb.
下表介绍了特殊的hadbmclear命令选项.
有关其他选项的说明,请参见第59页中的"常规选项".
有关更多信息,请参见hadbm-clear(1).
表3–12hadbmclear选项选项说明默认值--fast-F在初始化数据库时跳过设备初始化.
如果磁盘存储设备损坏,请勿使用此选项.
不存在--spares=number-s重新初始化的数据库将具有的备用节点数目.
此数目必须为偶数,并且必须小于数据库中的节点数目.
先前的备用节点数目例如:hadbmclear--fast--spares=2删除数据库要删除现有数据库,请使用hadbmdelete命令.
该命令将删除数据库的配置文件、设备文件和历史文件,并释放共享的内存资源.
您要删除的数据库必须存在并且必须处于已停止状态.
请参见第79页中的"停止数据库".
该命令语法为:hadbmdelete[--adminpassword=password|--adminpasswordfile=file][--agent=maurl][dbname]管理HADB第3章管理高可用性数据库81dbname操作数指定数据库名称.
默认值为hadb.
有关命令选项的说明,请参见第59页中的"常规选项".
有关更多信息,请参见hadbm-delete(1).
示例3–11删除数据库的示例命令:hadbmdelete将删除默认数据库hadb.
从会话数据损坏恢复以下情况表明会话数据可能已损坏:每次应用程序尝试保存会话状态时,ApplicationServer系统日志(server.
log)都显示错误消息.
在会话激活过程中,服务器日志中的错误消息表明找不到会话或无法装入会话.
先前钝化后又被激活的会话包含空的或不正确的会话数据.
实例出现故障时,故障转移的会话包含空的或不正确的会话数据.
实例出现故障时,尝试装入故障转移的会话的实例导致在服务器日志中生成表明找不到会话或无法装入会话的错误.
使会话存储恢复到一致状态如果您确定会话存储已损坏,则可以执行以下步骤使其恢复到一致状态:清除会话存储.
确定此操作是否可以修正该问题.
如果已修正,则停止.
如果未修正(例如,服务器日志中仍出现错误),则继续.
重新初始化所有节点上的数据空间并清除数据库中的数据.
请参见第80页中的"清除数据库".
确定此操作是否可以修正该问题.
如果已修正,则停止.
如果未修正(例如,服务器日志中仍出现错误),则继续.
删除并重新创建数据库.
请参见第81页中的"删除数据库"和第62页中的"创建数据库".
123管理HADBSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月82扩展HADB扩展初始HADB配置的原因有两个:保存的会话数据量超过了数据设备的现有存储空间.
由于数据设备已满,事务可能开始异常中止.
用户装入不断增加,以至于耗尽系统资源.
需要添加更多主机.
本节介绍如何在无需关闭ApplicationServer群集或数据库的情况下扩展HADB,其中包括以下内容:第83页中的"为现有节点添加存储空间"第84页中的"添加计算机"第84页中的"添加节点"第86页中的"重新分段数据库"第87页中的"通过重新创建数据库添加节点"另请参见第94页中的"维护HADB计算机"中的相关信息.
为现有节点添加存储空间添加HADB存储空间:如果用户事务重复出现异常中止,并出现以下错误消息之一:4592:Nofreeblocksondatadevices4593:Nounreservedblocksondatadevices如果hadbmdeviceinfo命令持续报告空闲大小不足.
请参见第90页中的"获取设备信息".
如果节点上有未使用的磁盘空间或在添加磁盘容量时,您可能还希望向现有节点添加存储空间.
有关建议的数据设备大小的信息,请参见第66页中的"指定设备大小".
要向节点添加存储空间,请使用hadbmset命令增加数据设备大小.
该命令的语法为:hadbmsetDataDeviceSize=size其中size为数据设备大小(以MB为单位).
有关命令选项的说明,请参见第59页中的"常规选项".
更改FaultTolerant或更高状态中的数据库的数据设备大小将升级系统,并且不会丢失数据或影响可用性.
在重新配置过程中,数据库仍可操作.
在非FaultTolerant或更差的系统上更改设备大小将导致数据丢失.
有关数据库状态的更多信息,请参见第89页中的"数据库状态".
扩展HADB第3章管理高可用性数据库83示例3–12设置数据设备大小的示例以下命令是设置数据设备大小的一个示例:hadbmsetDataDeviceSize=1024添加计算机如果HADB需要更多处理或存储容量,则可能需要添加计算机.
要添加运行HADB的新计算机,请将HADB软件包与ApplicationServer安装在一起或单独安装(如第2章所述).
有关节点拓扑选择的说明,请参见《SunJavaSystemApplicationServer9.
1部署规划指南》中的第3章"选择拓扑".
将新计算机添加到现有HADB实例在新节点上启动管理代理.
将管理域扩展到新主机.
有关详细信息,请参见hadbmextenddomain命令.
在这些主机上启动新节点.
有关详细信息,请参见第84页中的"添加节点".
添加节点要增加HADB系统的处理和存储容量,请创建新节点并将其添加到数据库.
添加节点后,请更新HADBJDBC连接池的以下属性:serverlist属性.
稳定的池大小.
通常,需要为每个新节点再添加8个连接.
有关更多信息,请参见《SunJavaSystemApplicationServer9.
1部署规划指南》中的"SystemSizing".
要添加节点,请使用hadbmaddnodes命令.
该命令语法为:hadbmaddnodes[--no-refragment][--spares=sparecount][--historypath=path][--devicepath=path][--set=attr-name-value-list][--dbpassword=password|--dbpasswordfile=file][--adminpassword=password|--adminpasswordfile=file]--hosts=hostlist[dbname]123扩展HADBSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月84dbname操作数指定数据库名称.
默认值为hadb.
数据库必须处于HAFaultTolerant或FaultTolerant状态.
有关数据库状态的更多信息,请参见第89页中的"数据库状态".
如果不指定--devicepath和--historypath选项,则新节点将具有与现有数据库相同的设备路径,并与其使用相同的历史文件.
添加节点可以对现有数据执行重新分段和重新分发以在系统中包含新节点.
联机重新分段需要HADB节点有足够的磁盘空间,可以在重新分段完成之前同时容纳旧数据和新数据,也就是说用户数据大小切勿超过用户数据可用空间的50%.
有关详细信息,请参见第90页中的"获取设备信息".
注–最好在系统负载较小时添加节点.
示例3–13添加节点的示例例如:hadbmaddnodes-adminpassword=password--hostsn6,n7,n8,n9下表介绍了特殊的hadbmaddnodes命令选项.
有关其他选项的说明,请参见第59页中的"常规选项".
表3–13hadbmaddnodes选项选项说明默认值--no-refragment-r请勿在节点创建期间重新分段数据库;这种情况下,请稍后使用hadbmrefragment命令重新分段数据库以使用新节点.
有关重新分段的详细信息,请参见第86页中的"重新分段数据库".
如果没有足够的设备空间来进行重新分段,则重新创建具有更多节点的数据库.
请参见第87页中的"通过重新创建数据库添加节点".
不存在--spares=number-s新的备用节点(已存在的备用节点除外)的数目.
必须为偶数,并且不能大于添加的节点数目.
0扩展HADB第3章管理高可用性数据库85表3–13hadbmaddnodes选项(续)选项说明默认值--devicepath=path-d设备的路径.
这些设备包括:DataDeviceNiLogDevice(节点内部日志设备)RelalgDevice(关系代数查询设备)此路径必须已存在并且可写.
要为每个节点或每个设备设置不同的设备路径,请参见第66页中的"设置异构设备路径".
Solaris和Linux:HADB_install_dir/deviceWindows:C:\Sun\AppServer\SUNWhadb\vers,其中vers是HADB的版本号.
--hosts=hostlist-H数据库中新节点的以逗号分隔的新主机名的列表.
为列表中的每个以逗号分隔的项目创建一个节点.
节点的数目必须为偶数.
HADB主机的IP地址必须为IPv4地址.
使用重复的主机名将在同一台计算机上创建具有不同端口号的多个节点.
请确保同一台计算机上的节点不是镜像节点.
奇数编号的节点位于一个DRU中,偶数编号的节点位于另一个DRU中.
如果使用--spares,则新的备用节点为具有最大编号的那些节点.
如果使用双网络接口创建了数据库,则必须以相同方式配置新的节点.
请参见第34页中的"配置网络冗余".
无重新分段数据库重新分段数据库以在新创建的节点中存储数据.
通过重新分段可以在所有活动节点之间平均分配数据.
要重新分段数据库,请使用hadbmrefragment命令.
该命令语法为:hadbmrefragment[--dbpassword=password|--dbpasswordfile=file][--adminpassword=password|--adminpasswordfile=file][--agent=maurl][dbname]dbname操作数指定数据库名称.
默认值为hadb.
数据库必须处于HAFaultTolerant或FaultTolerant状态.
有关数据库状态的更多信息,请参见第88页中的"获取HADB的状态".
有关命令选项的说明,请参见第59页中的"常规选项".
有关更多信息,请参见hadbm-refragment(1).
联机重新分段需要HADB节点有足够的磁盘空间,可以在重新分段完成之前同时容纳旧数据和新数据,也就是说用户数据大小切勿超过用户数据可用空间的50%.
有关详细信息,请参见第90页中的"获取设备信息".
扩展HADBSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月86注–最好在系统负载较轻时重新分段数据库.
如果多次尝试后该命令仍然失败,请参见第87页中的"通过重新创建数据库添加节点".
示例3–14重新分段数据库示例例如:hadbmrefragment通过重新创建数据库添加节点如果添加新节点时联机重新分段总是失败(由于数据设备空间不足或其他原因),请重新创建具有新节点的数据库.
这将导致现有用户数据和模式数据的丢失.
通过重新创建数据库来添加节点该步骤将使您可以在整个进程中维持HADB可用性.
对于每个ApplicationServer实例:a.
禁用负载平衡器中的ApplicationServer实例.
b.
禁用会话持久性.
c.
重新启动ApplicationServer实例.
d.
重新启用负载平衡器中的ApplicationServer实例.
如果不需要维持可用性,则可以同时禁用并重新启用负载平衡器中的所有服务器实例.
这样可以节省时间并防止过期会话数据故障转移.
停止数据库,如第79页中的"停止数据库"所述.
删除数据库,如第81页中的"删除数据库"所述.
重新创建具有其他节点的数据库,如第62页中的"创建数据库"所述.
重新配置JDBC连接池,如第72页中的"配置JDBC连接池"所述.
重新装入会话持久性存储.
123456扩展HADB第3章管理高可用性数据库87对于每个ApplicationServer实例:a.
禁用负载平衡器中的ApplicationServer实例.
b.
启用会话持久性.
c.
重新启动ApplicationServer实例.
d.
重新启用负载平衡器中的ApplicationServer实例.
如果不需要维持可用性,则可以同时禁用并重新启用负载平衡器中的所有服务器实例.
这样可以节省时间并防止过期会话数据故障转移.
监视HADB您可以通过以下方式监视HADB的活动:第88页中的"获取HADB的状态"第90页中的"获取设备信息"第92页中的"获取运行时资源信息"以下各节简要介绍了hadbmstatus、hadbmdeviceinfo和hadbmresourceinfo命令.
有关HADB信息的说明,请参见《SunJavaSystemApplicationServer9.
1PerformanceTuningGuide》中的"Performance".
获取HADB的状态使用hadbmstatus命令显示数据库或其节点的状态.
该命令语法为:hadbmstatus[--nodes][--adminpassword=password|--adminpasswordfile=file][--agent=maurl][dbname]dbname操作数指定数据库名称.
默认值为hadb.
--nodes选项(短形式-n)显示了数据库中每个节点的信息.
有关更多信息,请参见第89页中的"节点状态".
有关其他命令选项的说明,请参见第59页中的"常规选项".
有关更多信息,请参见hadbm-status(1).
7监视HADBSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月88示例3–15获取HADB状态的示例例如:hadbmstatus--nodes数据库状态数据库的状态汇总了其当前情况.
下表介绍了数据库的可能状态.
表3–14HADB状态数据库状态说明高可用性容错(High-AvailabilityFaultTolerant,HAFaultTolerant)数据库具有容错能力,并且在每个DRU中至少有一个备用节点.
容错所有镜像节点对均启动并且正在运行.
可操作每个镜像节点对中至少有一个节点正在运行.
不可操作一个或多个镜像节点对中的双方均缺少节点.
如果数据库处于不可操作状态,请清除数据库,如第80页中的"清除数据库"所述.
已停止数据库中没有正在运行的节点.
不明无法确定数据库的状态.
节点状态通过--nodes选项使hadbmstatus命令显示数据库中每个节点的以下信息:节点编号运行节点的计算机的名称节点的端口号节点的角色.
有关角色及其含义的列表,请参见第89页中的"节点的角色".
节点的状态.
有关状态及其含义的列表,请参见第90页中的"节点的状态".
对应的镜像节点的编号.
节点的角色和状态可以更改,如以下各节中所述:第89页中的"节点的角色"第90页中的"节点的状态"节点的角色在创建节点过程中为节点指定了角色,并且节点可以具有以下角色之一:活动:存储数据并允许客户机访问.
活动节点位于镜像对中.
监视HADB第3章管理高可用性数据库89备用:允许客户机访问,但不存储数据.
初始化数据设备之后,监视其他数据节点以启动修复(如果另一个节点变为不可用).
脱机:节点的角色更改之前不提供任何服务.
重新联机后,其角色可以更改为以前的角色.
关闭:活动和脱机的中间步骤,等待备用节点接管其工作.
备用节点接管之后,将使节点脱机.
节点的状态节点可处于以下状态之一:正在启动:节点正在启动.
正在等待:节点无法决定其启动级别并已脱机.
如果一个节点处于此状态的时间超过两分钟,则停止该节点,然后在repair级别启动该节点;请参见第77页中的"停止节点"、第76页中的"启动节点"和第80页中的"清除数据库".
正在运行:节点正在提供与其角色相应的所有服务.
正在停止:节点处于停止过程中.
已停止:节点已不活动.
禁止修复已停止的节点.
正在恢复:正在恢复节点.
节点出现故障时,镜像节点将接管故障节点的工作.
故障节点将尝试使用主内存中或磁盘上的数据和日志记录进行恢复.
故障节点使用镜像节点的日志记录来恢复到出现故障时所执行的事务.
如果恢复成功,节点将成为活动节点.
如果恢复失败,节点状态将更改为正在修复.
正在修复:正在修复节点.
此操作将重新初始化节点,并复制镜像节点的数据和日志记录.
修复比恢复所需时间要长.
获取设备信息监视HADB数据(磁盘存储)设备的空闲空间:按照例程,要检查磁盘空间使用的趋向.
作为预防性维护的一部分:如果用户负载已增加,并且您希望重新调整数据库配置的大小或比例.
作为增大数据库的一部分:运行hadbmaddnodes将新节点添加到系统之前,检查是否有足够的设备空间.
请记住,要添加节点您需要现有节点所占的大约40-50%的空闲空间.
当您在历史文件和server.
log文件中看到如下消息时NofreeblocksondatadevicesNounreservedblocksondatadevices.
使用hadbmdeviceinfo命令获取关于数据设备上空闲空间的信息.
该命令显示了数据库每个节点的以下信息:监视HADBSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月90分配的总设备大小,以MB为单位(Totalsize).
空闲空间,以MB为单位(Freesize).
设备当前的使用率(Usage).
该命令语法为:hadbmdeviceinfo[--details][--adminpassword=password|--adminpasswordfile=file][--agent=maurl][dbname]dbname操作数指定数据库名称.
默认值为hadb.
--details选项显示了以下其他信息:设备的读取操作数目.
设备的写入操作数目.
设备的名称.
有关其他命令选项的说明,请参见第59页中的"常规选项".
有关更多信息,请参见hadbm-deviceinfo(1).
要确定用户数据的可用空间,请用总设备大小减去为HADB保留的空间:即四倍的LogBufferSize+1%的设备大小.
如果不知道日志缓冲区的大小,请使用命令hadbmgetlogbufferSize.
例如,如果总设备大小为128MB,LogBufferSize为24MB,则用户数据的可用空间为128–(4x24)=32MB.
32MB中一半用于已复制的数据,大约百分之一用于索引,只有百分之二十五用于实际用户数据.
总大小和保留大小之间的差额为用户数据的可用空间.
如果将来对数据进行重新分段,则空闲大小必须为用户数据可用空间的大约50%.
如果不进行重新分段,则可以最大限度地利用数据设备.
如果系统在设备空间不足的情况下运行,则资源消耗警告将被写入历史文件.
有关调节HADB的更多信息,请参见SunJavaSystemApplicationServerPerformanceTuningGuide.
示例3–16获取设备信息的示例以下命令:hadbmdeviceinfo--details显示以下示例结果:NodeNOTotalsizeFreesizeUsageNReadsNWritesDeviceName01281206%100005000C:\Sun\SUNWhadb\hadb.
data.
011281243%100005000C:\Sun\SUNWhadb\hadb.
data.
121281262%95004500C:\Sun\SUNWhadb\hadb.
data.
2监视HADB第3章管理高可用性数据库91示例3–16获取设备信息的示例(续)31281262%95004500C:\Sun\SUNWhadb\hadb.
data.
3获取运行时资源信息hadbmresourceinfo命令显示了HADB运行时资源信息.
使用此信息有助于识别资源争用并减少性能瓶颈.
有关详细信息,请参见《SunJavaSystemApplicationServer9.
1PerformanceTuningGuide》中的"TuningHADB".
该命令语法为:hadbmresourceinfo[--databuf][--locks][--logbuf][--nilogbuf][--adminpassword=password|--adminpasswordfile=file][--agent=maurl][dbname]dbname操作数指定数据库名称.
默认值为hadb.
下表介绍了hadbmresourceinfo的特殊命令选项.
有关其他命令选项的说明,请参见第59页中的"常规选项".
有关更多信息,请参见hadbm-resourceinfo(1).
表3–15hadbmresourceinfo命令选项选项说明--databuf-d显示数据缓冲池信息.
有关更多信息,请参见以下第92页中的"数据缓冲池信息".
--locks-l显示锁信息.
有关更多信息,请参见以下第93页中的"锁信息".
--logbuf-b显示日志缓冲区信息.
有关更多信息,请参见以下第93页中的"日志缓冲区信息".
--nilogbuf-n显示节点内部日志缓冲区信息.
有关更多信息,请参见以下第94页中的"节点内部日志缓冲区信息".
数据缓冲池信息数据缓冲池信息包含:NodeNo:节点编号.
Avail:池中的总可用空间,以MB为单位.
监视HADBSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月92Free:可用的空闲空间,以MB为单位.
Access:从数据库启动到现在,访问数据缓冲区的累积次数.
Misses:从数据库启动到现在,缺页发生的累积次数.
Copy-on-Write:由于检查点操作而复制到数据缓冲区内部的累积页面数.
当用户事务在记录上执行操作时,包含该记录的页面必须在数据缓冲池中.
如果该页面不在数据缓冲池中,则发生miss或缺页.
然后事务必须等待,直到从磁盘的数据设备文件中检索到该页面.
如果未命中率很高,则增加数据缓冲池.
由于未命中次数是累积的,请定期运行hadbmresourceinfo,并使用两次运行结果的不同查看未命中率的趋向.
如果空闲空间很小,请勿考虑运行该命令,因为检查点机制将使新块可用.
示例3–17数据缓冲池信息示例例如:NodeNOAvailFreeAccessMissesCopy-on-Write0256128100000500001000125612811000045000950锁信息锁信息如下:NodeNo:节点编号.
Avail:节点上可用的锁的总数目.
Free:空闲锁数目.
Waits:等待获得锁的事务的数目.
该数目是累积的.
一个事务无法使用节点上超过25%的可用锁.
因此,大规模执行操作的事务应注意到该限制.
最好成批执行此类事务,其中每批都必须被视为一个独立事务,即分批提交.
需要这样做的原因是,读取操作(在repeatableread隔离层运行)以及delete、insert和update操作使用仅在事务终止后才被释放的锁.
要更改NumberOfLocks,请参见第96页中的"清除和归档历史文件".
示例3–18锁信息示例例如:NodeNOAvailFreeWaits0500002000010150000200000日志缓冲区信息日志缓冲区信息为:NodeNo:节点编号Available:为日志缓冲区分配的内存容量(以MB为单位)监视HADB第3章管理高可用性数据库93Free:空闲内存容量(以MB为单位)如果空闲空间很小,请勿担心,因为HADB可以启动日志缓冲区压缩.
HADB从环状缓冲区的头部开始压缩,并在连续日志记录上执行.
当HADB遇到尚未由节点执行并且尚未由镜像节点接收的日志记录时,压缩无法继续进行.
示例3–19日志缓冲区信息的示例例如:NodeNOAvailFree01621163节点内部日志缓冲区信息节点内部日志缓冲区信息为:节点编号可用:为日志设备分配的内存容量(以MB为单位)空闲:空闲内存容量(以MB为单位)示例3–20内部日志缓冲区信息示例例如:NodeNOAvailFree01621163维护HADB计算机HADB通过复制镜像节点上的数据来实现容错.
在生产环境中,与其镜像的节点不同,镜像节点在单独的DRU上,如《SunJavaSystemApplicationServer9.
1部署规划指南》所述.
故障是一种意外事件,如硬件故障、电源故障或操作系统重新引导.
HADB允许一个节点、一台计算机(没有镜像节点对)、属于同一DRU的一台或多台计算机甚至一个整个的DRU的单个故障.
但是,HADB不能从双重故障(即一个或多个镜像节点对同时出现故障)中自动恢复.
如果出现双重故障,则必须清除HADB并重新创建其会话存储(这将删除它的所有数据).
具体的维护过程取决于您需要在一台计算机上工作还是在多台计算机上工作.
维护HADB计算机SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月94在一台计算机上执行维护此过程适用于规划的和非规划的维护,并且不中断HADB可用性.
执行维护过程并使计算机启动并运行.
确保ma正在运行.
如果ma作为Windows服务运行或位于init.
d脚本(推荐用于部署)下,则应该已由操作系统启动.
如果未启动,请手动启动.
请参见第50页中的"启动管理代理".
启动计算机上的所有节点.
有关更多信息,请参见第76页中的"启动节点".
检查节点是否处于活动状态并且正在运行.
有关更多信息,请参见第88页中的"获取HADB的状态".
在所有HADB计算机上执行规划的维护规划的维护包含诸如硬件和软件升级之类的操作.
此过程不中断HADB可用性.
对于第一个DRU中的每台备用计算机,逐个对每台计算机重复单个计算机过程,如第95页中的"在一台计算机上执行维护"所述.
对于第一个DRU中的每台活动计算机,逐个对每台计算机重复单个计算机过程,如第95页中的"在一台计算机上执行维护"所述.
对于第二个DRU重复步骤1和步骤2.
在所有HADB计算机上执行规划的维护此过程适用于HADB在一台或多台计算机上的情况.
在维护过程中将中断HADB服务.
停止HADB.
请参见第79页中的"停止数据库".
执行维护过程并使所有计算机启动并运行.
确保ma正在运行.
启动HADB.
有关更多信息,请参见第78页中的"启动数据库".
12341231234维护HADB计算机第3章管理高可用性数据库95完成最后一个步骤后,HADB数据将重新变为可用.
在出现故障时执行非规划的维护检查数据库状态.
请参见第88页中的"获取HADB的状态".
如果数据库状态为可操作或更佳:需要非规划的维护的计算机不包含镜像节点.
对每台故障计算机执行单个计算机过程(每次一个DRU).
不中断HADB服务.
如果数据库处于不可操作状态:需要非规划的维护的计算机包含镜像节点.
当整个HADB位于一台故障计算机上时,就属于这种情况.
请先使所有计算机启动并运行.
然后清除HADB并重新创建会话存储.
请参见第80页中的"清除数据库".
这将中断HADB服务.
清除和归档历史文件HADB历史文件记录所有数据库操作和错误消息.
HADB附加在现有历史文件的末尾,因此文件大小将随时间增长.
为了节省磁盘空间并防止文件过大,应定期清除和归档历史文件.
要清除数据库的历史文件,请使用hadbmclearhistory命令.
该命令语法为:hadbmclearhistory[--saveto=path][dbname][--adminpassword=password|--adminpasswordfile=file][--agent=maurl]dbname操作数指定数据库名称.
默认值为hadb.
使用--saveto选项(短形式-o)指定要存储旧的历史文件的目录.
此目录必须具有适当的写权限.
有关其他命令选项的说明,请参见第59页中的"常规选项".
有关更多信息,请参见hadbm-clearhistory(1).
hadbmcreate命令的--historypath选项确定了历史文件的位置.
历史文件名称的格式为dbname.
out.
nodeno.
有关hadbmcreate的信息,请参见第62页中的"创建数据库".
维护HADB计算机SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月96历史文件格式历史文件中的每条消息都包含以下信息:生成消息的HADB进程的缩写名称.
消息的类型:INF-常规信息WRN-警告ERR-错误DBG-调试信息时间戳.
时间是从主机的系统时钟获得的.
当节点停止或启动时,系统中发生的服务设置更改.
有关资源短缺的消息包含字符串"HIGHLOAD".
您无需详细了解历史文件中的所有条目.
如果由于某种原因您需要深入了解历史文件,请联系Sun用户支持.
维护HADB计算机第3章管理高可用性数据库9798配置Web服务器以实现负载平衡本章介绍了如何配置用于ApplicationServer9.
1和GlassFishv2附带的负载平衡器插件支持的Web服务器.
ApplicationServer9.
1附带的负载平衡器插件支持以下Web服务器:SunJavaSystemWebServer6.
1和7.
0ApacheWebServer2.
0.
xMicrosoftIIS5.
0和6.
0注–GlassFishv2仅支持SunJavaSystemWebServer(版本6.
1和7.
0).
要将负载平衡器插件与GlassFishv2一起使用,需要手动安装和配置负载平衡器插件.
有关将负载平衡器插件与GlassFishv2一起安装的更多信息,请参见《SunJavaSystemApplicationServer9.
1InstallationGuide》中的第1章"InstallingApplicationServerSoftware".
负载平衡器插件的安装程序是ApplicationServer9.
1安装程序的一部分,它对Web服务器的配置文件进行了一些修改.
这些更改取决于所用的Web服务器.
此外,对于某些Web服务器,必须进行手动配置以使负载平衡器正常工作.
注–可以将负载平衡器插件与SunJavaSystemApplicationServer9.
1一起安装在或单独安装在运行支持的Web服务器的计算机上.
有关安装过程的完整详细信息,请参见《SunJavaSystemApplicationServer9.
1InstallationGuide》中的第1章"InstallingApplicationServerSoftware".
第100页中的"配置SunJavaSystemWebServer"第107页中的"使用ApacheWebServer"第115页中的"使用MicrosoftIIS"4第4章99配置SunJavaSystemWebServer对于SunJavaSystemWebServer,使用SunJavaSystemApplicationServer9.
1安装向导安装负载平衡器插件时,该安装向导将自动执行所有必要的配置.
不需要进行手动配置.
与ApplicationServer9.
1捆绑在一起的负载平衡器插件支持SunJavaSystemWebServer的以下版本:SunJavaSystemWebServer6.
1SunJavaSystemWebServer7.
0但是,如果使用的是GlassFishv2,必须从http://download.
java.
net/javaee5/external/SunOS_X86/aslb/jars/aslb-9.
1-MS4-b7.
jar单独下载ApplicationServer负载平衡器插件,并进行一些手动更改以对其进行设置.
有关如何为GlassFishv2安装和设置该插件的详细步骤,请参阅《SunJavaSystemApplicationServer9.
1InstallationGuide》中的"ToInstalltheLoadBalancingPlug-in(standalone)"一节.
配置SunJavaSystemWebServer注–以下步骤由ApplicationServer9.
1的安装程序自动执行.
但是,如果使用的是GlassFishv2,将需要手动执行这些步骤.
在Web服务器实例的magnus.
conf文件中,添加以下行:##BEGINEELBPlug-inParametersInitfn="load-modules"shlib="web-server-install-dir/plugins/lbplugin/bin/libpassthrough.
so"funcs="init-passthrough,service-passthrough,name-trans-passthrough"Thread="no"Initfn="init-passthrough"##ENDEELBPlug-inParameters=如果以下行尚不存在,请附加该行:Initfn="load-modules"shlib=".
.
.
/libj2eeplugin.
so"shlib_flags="(global|now)"在文件web-server-install-dir/config/obj.
conf中,在首次出现的字符串nametrans之前在单行中插入以下内容:Nametransfn="name-trans-passthrough"name="lbplugin"config-file="web-server-install-dir/config/loadbalancer.
xml"NameTrans条目在obj.
conf中的显示顺序非常重要.
安装程序会将NameTrans条目放在正确的位置,但是,如果要因其他目的而编辑obj.
conf,必须确保顺序仍然正确.
尤其是,负载平衡器信息必须在document-root函数之前显示.
有关obj.
conf文件的更多信息,请参见《SunJavaSystemWebServer7.
0Administrator'sConfigurationFileReference》.
开始之前123配置SunJavaSystemWebServerSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月100将以下行附加到文件web-server-install-dir/config/obj.
conf中:ObjectTypefn="force-type"type="magnus-internal/lbplugin"PathCheckfn="deny-existence"path="*/WEB-INF/*"Servicetype="magnus-internal/lbplugin"fn="service-passthrough"Errorreason="BadGateway"fn="send-error"uri="$docroot/badgateway.
html"编辑web-server-install-dir/start脚本,将LD_LIBRARY_PATH值更新为包括app-server-install-dir/lib/lbplugin/lib.
app-server-install-dir/lib/lbplugin/lib目录包含负载平衡器插件所需的二进制文件.
(可选的)对于基于DAS的新负载平衡器管理,配置Web服务器的SSL功能.
有关WebServer6.
1的详细说明,请参见第101页中的"在SSL模式下为SunJavaSystemWebServer6.
1设置负载平衡器".
有关WebServer7的详细说明,请参见第104页中的"在SSL模式下为WebServer7设置负载平衡器".
如果Web服务器尚未运行,请启动它.
配置SunJavaSystemWebServer以使用"自动应用"功能"自动应用"是ApplicationServer9.
1提供的一种功能,用于通过线路将负载平衡器配置自动发送到Web服务器配置目录.
有关此功能的更多信息,请参见第119页中的"自动应用".
以下过程介绍了如何配置SunJavaSystemWebServer(版本6和7)以使用此功能.
在SSL模式下为SunJavaSystemWebServer6.
1设置负载平衡器注–仅当希望使用负载平衡器插件的"自动应用"功能时,才需要执行本节中的步骤.
此功能有助于通过线路将负载平衡器配置自动发送到Web服务器配置目录.
使用浏览器,访问WebServer的管理控制台并登录.
选择服务器实例,然后单击"管理".
单击"安全性"选项卡.
4567123配置SunJavaSystemWebServer第4章配置Web服务器以实现负载平衡101通过提供用户名和密码初始化信任数据库.
为此,可以使用certutil命令或GUI.
certutil命令的以下选项可用于初始化信任数据库:certutil-N-P"https-instance-name-hostname-"-d.
在certutil发出提示时,输入密码对您的密钥进行加密.
输入密码(密码将用于对密钥进行加密).
密码至少应该包含八个字符,且应该至少包含一个非字母字符.
当系统提示您输入新密码时,指定密码.
使用以下命令创建一个本地证书授权机构(CertificateAuthority,CA)样例:certutil-S-P"https-boqueron.
virkki.
com-boqueron-"-d.
-nSelfCA-s"CN=SelfCA,OU=virkki.
com,C=US"-x-t"TC,TC,TC"-m101-v99-5a.
当系统提示您输入0-7以表示证书类型时,键入表示SSLCA的5.
再次出现提示时,指定9.
b.
在被询问"Isthisacriticalextension[y/n]"时,指定"y".
使用上面的样例CA生成证书certutil-S-P"https-instance-name-hostname-"-d.
-nMyServerCert-s"CN=boqueron.
virkki.
com,C=US"-cSelfCA-t"u,u,u"-m102-v99-5a.
当系统提示您输入0-7以表示证书类型时,键入表示SSL服务器的1.
再次出现提示时,指定9.
b.
在被询问"Isthisacriticalextension[y/n]"时,指定"y".
创建HTTPS侦听器,如以下步骤所述:a.
登录到Web服务器的管理服务器.
b.
选择一个服务器,然后单击"管理".
c.
单击"添加侦听套接字".
在"添加侦听套接字"页面中,执行以下操作:i.
指定端口号.
ii.
确保在"服务器名"中指定服务器的全限定域名(fullyqualifieddomainname,FQDN).
例如,如果主机名是machine1,域名是server.
example.
com,则FQDN是machine1.
server.
example.
com.
iii.
从"安全性"下拉列表中选择"启用".
4567配置SunJavaSystemWebServerSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月102iv.
单击"确定".
d.
转到"编辑侦听套接字"页面,然后选择刚创建的侦听套接字.
e.
在"侦听套接字"页面中,验证服务器证书名是否与在步骤6中提供的证书名相同.
为SunJavaSystemWebServer6.
1导出和导入DAS证书如果使用的是ApplicationServer9.
1,请通过执行以下命令导出DAS证书:/lib/upgrade/pk12util-d/config-osjsas.
p12-W-K-ns1as如果使用的是GlassFishv2,必须使用以下命令导出DAS证书:/bin/keytool-export-rfc-aliass1as-keystore/domains//config/keystore.
jks-files1as.
rfc其中,表示ApplicationServer安装目录,表示要导出其证书的域.
将证书文件复制到Web服务器配置目录.
如果使用的是ApplicationServer9.
1,请使用以下命令将DAS证书导入到WebServer实例中:/bin/https/admin/bin/pk12util-isjsas.
p12-d/alias-W-K-P--/bin/https/admin/bin/certutil-M-ns1as-t"TCu"-d/alias-P--这些命令将使ApplicationServerCA成为受信任的CA以同时签署客户机证书和服务器证书.
如果使用的是GlassFishv2,请从使用NSS安全工具certutil创建的rfc文件导入DAS证书.
/bin/certutil-A-a-ns1as-t"TCu"-is1as.
rfc-d/alias-P--12配置SunJavaSystemWebServer第4章配置Web服务器以实现负载平衡103可以使用以下命令检查此证书是否存在,将列出s1as证书以及其他CA证书(包括默认的服务器证书).
确保在单行中键入命令.
/bin/certutil-L-d/alias-P--如果obj.
conf不包含以下行,请在文件结尾附加它们.
如果使用的是ApplicationServer9.
1,安装程序将自动执行此步骤.
PathCheckfn="get-client-cert"dorequest="1"require="1"PathCheckfn="get-client-cert"dorequest="1"require="1"可以使用在第114页中的"验证安装"一节中提供的步骤从DAS验证上面的设置.
可以使用任何其他CA和服务器证书,而不是使用本地CA.
在这种情况下,可以跳过上一节中列出的步骤5和6,但是需要导入从其他CA获得的服务器证书.
在SSL模式下为WebServer7设置负载平衡器1.
使用以下命令启动WebServer的管理服务器.
webserver-install-dir/admin_server/bin/startserv2.
创建HTTPS侦听器,如以下步骤所述.
如果HTTP侦听器已存在,则可以跳过以下步骤,并前进到第105页中的"为SunJavaSystemWebServer7导出和导入DAS证书"一节.
a.
登录到WebServer管理控制台.
b.
选择默认配置.
通常,默认配置名称将与主机名完全相同.
要从"日常任务"页面执行此操作,请从"选择配置"列表中选择配置并单击"编辑配置".
或者,打开"配置"页面,单击"配置"表中的默认配置名称.
c.
如果显示的是"日常任务"页面,请单击"请求服务器证书".
否则,如果显示的是"配置"页面,请打开"证书"页面,并单击"服务器证书"表中的"请求"按钮.
这是为此默认配置创建自签名服务器证书所必需的.
d.
提供"请求服务器证书"窗口要求的详细信息.
执行此操作时,只需确保为"*服务器名(cn)"提供的值是安装Web服务器的计算机的全限定域名(fullyqualifieddomainname,FQDN)即可.
例如,如果主机名是machine1,域名是server.
example.
com,则FQDN是machine1.
server.
example.
com.
选择所提供的任何默认值.
也可以使用以下命令创建自签名证书.
确保在单行中键入命令.
34配置SunJavaSystemWebServerSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月104webserver-install-dir/bin/wadmcreate-selfsigned-cert--user=admin-user--server-name=host-name--nickname=ServerCert--token=internal--config=config-namee.
返回到所选的配置页.
f.
打开"HTTP侦听器"页面,然后单击"新建"按钮.
这将创建启用SSL的HTTP侦听器.
g.
提供"新建HTTP侦听器"向导要求的详细信息.
确保服务器名是在前面步骤中提供的FQDN.
选择"SSL"按钮,然后从"证书"列表中选择以前创建的服务器证书.
例如,cert-machine1.
server.
example.
com.
也可以使用以下命令创建HTTP侦听器.
确保在单行中键入每个命令.
webserver-install-dir/bin/wadmcreate-http-listener--user=admin-user--server-name=host-name--default-virtual-server-name=default-virtual-server-name--listener-port=8090--config=config-namehttp-listener-sslwebserver-install-dir/bin/wadmset-ssl-prop--user=admin-user--http-listener=http-listener-ssl--config=config-nameenabled=trueserver-cert-nickname=ServerCerth.
执行上面列出的步骤后,将在管理控制台的右上角看到警报"部署暂挂".
单击它,并按照说明完成部署.
此步骤确保将在Web服务器的管理服务器中对配置存储进行的更改复制到Web服务器实例.
为SunJavaSystemWebServer7导出和导入DAS证书通过导出和导入DAS证书,可以使DAS成为WebServer的受信任客户机.
使用DAS证书的客户机验证可确保只有DAS作为受信任客户机连接到WebServer.
打开终端窗口,并使用以下命令设置LD_LIBRARY_PATH:exportLD_LIBRARY_PATH=/opt/SUNWappserver/lib1配置SunJavaSystemWebServer第4章配置Web服务器以实现负载平衡105如果使用的是ApplicationServer9.
1,请通过执行以下命令导出DAS证书.
DAS证书同时用作服务器证书和客户机证书.
/lib/upgrade/pk12util-d/config-os1as.
p12-W-K-ns1as如果使用的是GlassFishv2,请使用名为keytool的JavaSE5.
0安全工具导出以别名"s1as"命名的DAS证书.
执行此操作时,选择-rfc选项以可打印编码格式(如InternetRFC1421标准所定义)导出证书.
从命令行,可以使用以下命令导出DAS证书:/bin/keytool-export-rfc-aliass1as-keystore/domains//config/keystore.
jks-files1as.
rfc其中,表示ApplicationServer安装目录,表示要导出其证书的域.
将证书文件复制到Web服务器配置目录.
如果使用的是ApplicationServer9.
1,请将DAS证书导入到WebServer实例中,并使用以下命令设置证书的信任属性:/bin/pk12util-i-d/admin-server/config-store//config-K-W/bin/certutil-M-ns1as-t"TCu"-d/admin-server/config-store//config这些命令将使ApplicationServerCA成为受信任的CA以同时签署客户机证书和服务器证书.
如果使用的是GlassFishv2,请从使用NSS安全工具certutil创建的rfc文件导入DAS证书.
/bin/certutil-A-a-ns1as-t"TCu"-is1as.
rfc-d/admin-server/config-store//config其中,表示Web服务器安装目录,表示为默认Web服务器实例创建的配置名称.
可以使用以下命令检查此证书是否存在,将列出s1as证书以及其他CA证书(包括默认的服务器证书).
确保在单行中键入整个命令.
/bin/certutil-L-d/admin-server/config-store//config也可以使用WebServer管理控制台对此进行查看.
选择已向其导入证书的配置(本例中为默认配置),然后选择"证书"选项卡.
要查看所有的可用证书,请选择"证书颁发机构"子选项卡.
23配置SunJavaSystemWebServerSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月106如果使用的是GlassFishv2,请对WebServer7进行以下配置更改.
如果使用的是ApplicationServer9.
1,可以跳到下一步.
a.
在位于/admin-server/config-store//config/的obj.
conf文件中附加以下行.
确保在键入这些行时没有包含任何结尾空格.
PathCheckfn="get-client-cert"dorequest="1"require="1"PathCheckfn="get-client-cert"dorequest="1"require="1"部署该配置.
进行前面步骤中列出的更改时,管理控制台将此配置标记为要部署.
a.
在WebServer管理控制台中选择"部署暂挂"的图标.
也可以使用CLI实用程序wadm部署此配置,如下所示:/bin/wadmdeploy-config--user=从GlassFishDAS测试此设置,以查看它是否通过SSL与已配置的HTTP负载平衡器进行通信.
有关更多信息,请参见第114页中的"验证安装".
使用ApacheWebServer与ApplicationServer9.
1捆绑在一起的负载平衡器插件支持ApacheWebServer2.
0.
x.
要使用ApacheWebServer,必须在安装负载平衡器插件前后执行某些配置步骤.
负载平衡器插件安装也将对ApacheWebServer进行其他修改.
安装插件后,您必须执行其他配置步骤.
注–如果使用--with-mpm=worker选项进行编译,则Apache2将具有多线程行为.
第108页中的"对使用ApacheWebServer的要求"第109页中的"在安装负载平衡器插件之前配置Apache"第112页中的"负载平衡器插件安装程序所做的修改"第113页中的"在安装负载平衡器插件之后配置Apache"第114页中的"在Solaris和Linux上启动Apache"456使用ApacheWebServer第4章配置Web服务器以实现负载平衡107对使用ApacheWebServer的要求对于ApacheWebServer,您的安装必须满足最低要求.
使用Apache时,负载平衡器插件有以下要求:openssl-0.
9.
7e(源代码)httpd-2.
0.
59(源代码)gcc-3.
3-sol9-sparc-local软件包(适用于Solaris9SPARC)gcc-3.
3-sol9-intel-local软件包(适用于Solaris9x86)预先安装的gcc(适用于Solaris10)flex-2.
5.
4a-sol9-sparc-local软件包(适用于Solaris9SPARC)flex-2.
5.
4a-sol9-intel-local软件包(适用于Solaris9x86)预先安装的flex(适用于Solaris10)这些软件源可以从http://www.
sunfreeware.
com获得此外,在编译Apache之前,请执行以下步骤:在Linux平台上,在同一台计算机上安装SunJavaSystemApplicationServer.
在Solaris9操作系统上,使用pkgadd安装gcc和flex.
请注意,pkgadd需要超级用户权限.
在Solaris9操作系统上,请确保gcc版本3.
3和make位于PATH中,并且已安装flex.
在Solaris10操作系统上,运行OpenSSL的make之前,先运行位于/usr/local/lib/gcc-lib/sparc-sun-solaris2.
9/3.
3/install-tools(在SolarisSPARC上)或/usr/local/lib/gcc-lib/i386-pc-solaris2.
9/3.
3/install-tools(在Solarisx86上)中的mkheaders.
如果您在RedHatEnterpriseLinuxAdvancedServer2.
1上使用gcc,则gcc的版本必须在3.
0以上.
注–要使用gcc以外的C编译器,请在PATH环境变量中设置C编译器和make实用程序的路径.
应用ApacheWebServer修补程序为Apache安装负载平衡器插件之前,应用ApacheWebServer问题12355的修补程序.
有关此问题的更多详细信息可以从http://issues.
apache.
org/bugzilla/show_bug.
cgiid=12355获得.
"自动应用"功能需要此修补程序才能工作.
要应用该修补程序,请按照以下步骤操作.
1.
解压缩http-2.
0.
59.
tar并转到目录httpd-2.
0.
59.
2.
从http://issues.
apache.
org/bugzilla/attachment.
cgiid=16495下载该修补程序并将它另存为一个文件,例如12355.
diff.
使用ApacheWebServerSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月1083.
从目录httpd-2.
0.
59/modules/ssl运行以下命令:patchSSLVerifyClientrequireSSLVerifyDepth1SSLRequireSSLSSLCACertificateFileapache-install-dir//conf/ssl.
crt/sjsas.
crtSSLRequire(%{SSL_CIPHER}!
~m/^(EXP|NULL)-/\and%{SSL_CLIENT_S_DN_O}eq"SunMicrosystems"\and%{SSL_CLIENT_S_DN_OU}eq"SunJavaSystemApplicationServer"\and%{SSL_CLIENT_M_SERIAL}eq"")SSLVerifyClientrequireSSLVerifyDepth1SSLRequireSSLSSLCACertificateFileapache-install-dir/conf/ssl.
crt/sjsas.
crtSSLRequire(%{SSL_CIPHER}!
~m/^(EXP|NULL)-/\and%{SSL_CLIENT_S_DN_O}eq"SunMicrosystems"\and%{SSL_CLIENT_S_DN_OU}eq"SunJavaSystemApplicationServer"\and%{SSL_CLIENT_M_SERIAL}eq"")负载平衡器插件安装程序所做的修改负载平衡器插件安装程序会将所需的文件提取到Web服务器根目录下的modules目录中:它将以下条目添加到Web服务器实例的httpd.
conf文件中:##BEGINEELBPluginParametersLoadModuleapachelbplugin_modulemodules/mod_loadbalancer.
so#AddModulemod_apachelbplugin.
cppconfig-filewebserver-instance/httpd/conf/loadbalancer.
xml使用ApacheWebServerSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月112localeenDocumentRoot"webserver-instance/httpd/htdocs"ServerNameserver-name##ENDEELBPluginParameters在安装负载平衡器插件之后配置ApacheApacheWebServer必须具有正确的安全文件才能使用负载平衡器插件.
负载平衡器依赖于需要这些安全数据库文件的NSS(NetworkSecurityService,网络安全服务)库.
您需要从ApplicationServer获取这些安全数据库文件,因此必须将ApplicationServer安装在WebServer可以访问的位置.
要将Apache安全文件配置为使用负载平衡器,请执行以下操作:将/usr/lib/mps附加到Apache-install-dir/bin/apachectl脚本中的LD_LIBRARY_PATH.
为Apache创建安全性证书为了在Apache上支持HTTPS请求,需要执行以下步骤.
有关在Apache上设置安全性证书的详细信息,请参见http://httpd.
apache.
org/docs/2.
2/ssl/ssl_faq.
html和http://www.
modssl.
org/docs/2.
8/ssl_faq.
html中的说明.
以下过程摘自这些Web站点.
设置以下环境变量:OPENSSL_CONF=OpenSSL-installation-directory/apps/openssl.
cnf.
通过执行以下命令,创建服务器证书和密钥:opensslreq-new-x509-keyoutnewreq.
pem-outnewreq.
pem-days365当系统要求提供通用名称时,请提供计划运行Apache所用的主机名.
对于所有其他提示,请输入满足您所有特定要求的值.
此命令会创建newreq.
pem.
从运行openssl命令的位置打开新创建的newreq.
pem.
复制以BEGINCERTIFICATE开始并以ENDCERTIFICATE结束的行,并将其粘贴在Apache-install-dir/conf/ssl.
crt/server.
crt中.
例如:-----BEGINCERTIFICATE-----.
.
.
.
1234使用ApacheWebServer第4章配置Web服务器以实现负载平衡113.
.
.
-----ENDCERTIFICATE-----复制以BEGINRSAPRIVATEKEY开始并以ENDRSAPRIVATEKEY结束的行,并将其粘贴在Apache-install-dir/conf/ssl.
key/server.
key中.
例如:-----BEGINRSAPRIVATEKEY-----.
.
.
.
.
.
.
.
.
-----ENDRSAPRIVATEKEY-----确保Apache-install-dir/conf/ssl.
conf中的变量SSLCertificateKeyFile和SSLCertificateFile具有正确的值.
确保ServerName并非为www.
example.
com.
ServerName应当为运行Apache所用的实际主机名,从而与您在创建服务器证书和密钥时输入的通用名称相匹配.
修改httpd.
conf参数以启用粘性roundrobin为了使粘性roundrobin功能正常工作,请在httpd.
conf文件中的preforkMPM部分下,确保参数StartServers和maxclients的值设置为1.
否则,每个新的会话请求都会产生一个新的Apache进程,而且将初始化负载平衡器插件,从而导致请求停放在同一实例中.
在Solaris和Linux上启动Apache通常,应当使用安装ApplicationServer时所用的用户身份启动Apache.
在以下情况下,您必须以超级用户身份启动Apache:如果您是JavaEnterpriseSystem用户.
如果您使用的端口号小于1024.
如果Apache运行时所用的用户身份不同于启动时所用的用户身份.
要以SSL模式启动Apache,请使用以下命令之一:apachetlstartssl或apachetl-kstart-DSSL如果需要,请查阅ApacheWeb站点以获得有关启动ApacheServer的最新信息.
验证安装1.
安装负载平衡器插件.
有关安装该插件的详细步骤,请参见《SunJavaSystemApplicationServer9.
1InstallationGuide》.
在安装过程中,提供指向DAS证书的路径.
567使用ApacheWebServerSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月1142.
登录到ApplicationServer管理控制台,并创建一个新群集.
有关创建新群集的步骤,请参阅管理控制台联机帮助.
3.
创建新的HTTP负载平衡器.
创建负载平衡器时,请将Web服务器主机的FQDN指定为设备主机名,将Web服务器SSL端口指定为设备端口,并选择上一步中创建的群集作为目标.
有关创建新的HTTP负载平衡器的详细步骤,请参阅管理控制台联机帮助.
4.
要验证DAS和Web服务器之间的通信是否正常进行,请在管理控制台中,导航到"HTTP负载平衡器"节点,然后单击"HTTP负载平衡器".
在出现的"负载平衡器设备设置"页面中,按"测试连接"按钮.
如果在创建负载平衡器时未启用"自动应用更改"选项,则必须通过转到"导出"选项卡并单击"立即应用更改"手动导出负载平衡器配置.
5.
如果测试连接失败,请务必检查ApplicationServer域日志和Web服务器日志以解决问题.
此外,检查是否正确执行了所有配置步骤.
使用MicrosoftIIS要将MicrosoftInternetInformationServices(IIS)与负载平衡器插件一起使用,请按照以下各节中提供的步骤操作.
配置MicrosoftIIS以使用负载平衡器插件打开Internet服务管理器.
选择要为其启用此插件的Web站点.
此Web站点通常名为"默认Web站点".
在此Web站点上单击鼠标右键,并选择"属性"以打开"属性"记事本.
按照以下步骤,添加一个新的ISAPI过滤器:a.
打开"ISAPI过滤器"选项卡.
b.
单击"添加".
c.
在"过滤器名称"字段中,输入ApplicationServerd.
在"可执行文件"字段中,键入C:\Inetpub\wwwroot\sun-passthrough\sun-passthrough.
dll.
e.
单击"确定"关闭"属性"记事本.
1234使用MicrosoftIIS第4章配置Web服务器以实现负载平衡115创建并配置新的虚拟目录:a.
在默认的Web站点上单击鼠标右键,选择"新建",然后选择"虚拟目录".
将打开"虚拟目录创建向导".
b.
在"别名"字段中,键入sun-passthrough.
c.
在"目录"字段中,键入C:\Inetpub\wwwroot\sun-passthrough.
d.
选中"执行权限"复选框.
使与权限相关的所有其他复选框保持未选中状态.
e.
单击"完成".
将sun-passthrough.
dll文件的路径、ApplicationServeras-install/bin以及ApplicationServeras-install/lib添加到系统的PATH环境变量中.
对于IIS6.
0用户,请使用以下步骤将负载平衡器Web服务扩展配置为在IIS6中运行:a.
在IIS管理器中,展开本地计算机,并单击"Web服务扩展".
b.
在"任务"窗格中,选择"添加一个新的Web服务扩展".
c.
将扩展的名称输入为Sun-Passthrough并单击"添加".
d.
键入sun-passthrough.
dll的路径C:\Inetpub\wwwroot\sun-passthrough.
e.
单击"确定".
f.
选择"设置扩展状态为允许".
对于IIS6.
0用户,请创建文件C:\inetput\wwwroot\sun-passthrough\lb.
log,并为组IIS_WPG提供对该文件的NTFS写入和修改权限.
由于IIS6.
0以"工作进程隔离模式"运行,因此它会使用组IIS_WPG的安全权限运行IIS服务器.
对于所有IIS用户,请重新启动计算机.
检验Web服务器、负载平衡器插件和ApplicationServer是否运行正常.
在Web浏览器中键入以下地址,以访问此Web应用程序的上下文根:http://web-server-name/web-application,其中web-server-name是Web服务器的主机5678910使用MicrosoftIISSunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月116名或IP地址,web-application是在C:\Inetpub\wwwroot\sun-passthrough\sun-passthrough.
properties文件中列出的上下文根.
提示–ISAPI过滤器状态应当为绿色.
要检查过滤器状态,请访问此Web站点的"Properties"笔记簿,并单击"ISAPIFilters"选项卡.
如果状态不为绿色,请尝试向IISHTTP端口发送任一HTTP请求.
如果请求失败,则表明情况确实如此.
请重新检查ISAPI过滤器的状态.
自动配置的sun-passthrough属性安装程序会在sun-passthrough.
properties中自动配置以下属性.
您可以更改默认值.
属性定义默认值lb-config-file负载平衡器配置文件的路径IIS-www-root\sun-passthrough\loadbalancer.
xmllog-file负载平衡器日志文件的路径IIS-www-root\sun-passthrough\lb.
loglog-levelWeb服务器的日志级别INFO注–IIS当前不支持ApplicationServer9.
1的"自动应用"功能.
使用MicrosoftIIS第4章配置Web服务器以实现负载平衡117118配置HTTP负载平衡本章介绍了HTTP负载平衡器插件.
其中包括以下主题:第119页中的"负载平衡器插件的新增功能"第121页中的"HTTP负载平衡器如何工作"第122页中的"设置HTTP负载平衡"第126页中的"配置负载平衡器"第139页中的"配置多个Web服务器实例"第139页中的"升级应用程序而不使可用性受到损失"第145页中的"监视HTTP负载平衡器插件"有关其他类型负载平衡的信息,请参见第10章和第11章.
本节讨论如何使用ApplicationServer随带的HTTP负载平衡插件.
另一个HTTP负载平衡选项是将SunSecureApplicationSwitch和ApplicationServer一起使用,以作为基于硬件的负载平衡解决方案.
有关配置此解决方案的教程,请参见文章ClusteringandSecuringWebApplications:ATutorial(http://developers.
sun.
com/prodtech/appserver/reference/techart/load-balancing.
html).
负载平衡器插件的新增功能在SunJavaSystemApplicationServer9.
1中,增强了负载平衡器的功能,可通过以下特性提供更大的灵活性和更高的易用性.
自动应用ApplicationServer允许将从管理控制台对负载平衡器配置进行的更改通过线路自动发送到WebServer配置目录.
在ApplicationServer的以前版本中,必须导出负载平衡器配置,然后将其复制到Web服务器配置目录.
5第5章119加权RoundRobin负载平衡器启用了改进的HTTP请求分发.
管理员可以使用名为"weight"的属性,指定如何将请求成比例地路由到实例.
例如,假定某个群集具有两个实例,管理员为实例x指定的权重为100,为实例y指定的权重为400.
现在,对于每100个请求,20个将转到实例x,80个将转到实例y.
用户定义的负载平衡通过ApplicationServer,管理员可以定义用于分发HTTP请求的自定义策略.
自定义策略定义负载平衡器插件必须使用的负载平衡算法.
换句话说,管理员可以定义哪个ApplicationServer实例将处理HTTP请求.
要使用此功能,管理员需要开发共享库.
例如,开发的共享库可以用于评估提供给它的传入请求头,并遵照某些条件选择可以处理请求的实例.
此共享库将由负载平衡器装入.
共享库必须实现一个接口,如loadbalancer.
h(可在appserver_install_dir/lib/install/templates下找到)中所定义.
ApplicationServer还捆绑了一个实现基本roundrobin算法的样例模块roundrobin.
c.
管理员可以使用此样例模块作为模板来生成共享库.
此样例模块也可在appserver_install_dir/lib/install/templates下找到.
配置用户定义的负载平衡将roundrobin.
c从appserver_install_dir/lib/install/templates复制到工作目录(例如:/home/user/workspacelb).
使用ANSIC/C++编译器(例如SunStudio编译器或GCC)编译roundrobin.
c.
务必生成动态共享库,而不是生成静态可执行文件.
a.
如果使用的是SunStudioCC编译器,请通过以下命令进行编译:cc-G-I/lib/install/templatesroundrobin.
c-oroundrobin.
sob.
如果使用的是GCC,请通过以下命令编译共享库:gcc-shared-I/lib/install/templatesroundrobin.
c-oroundrobin.
so12负载平衡器插件的新增功能SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月120注–如果遇到重定位错误,请使用选项"-fPIC"重新编译.
命令将与如下所示类似:gcc-shared-fPIC-I/lib/install/templatesroundrobin.
c-oroundrobin.
so在MicrosoftWindows上,从http://www.
redhat.
com/services/custom/cygwin下载Cygwin实用程序.
此实用程序已将GCC与自身捆绑在一起.
使用以下GCC命令创建动态链接库(dynamiclinklibrary,dll):gcc-shared-I/lib/install/templatesroundrobin.
c-oroundrobin.
dll将loadbalancer.
xml更改为指向新生成的模块.
loadbalancer.
xml在编辑后将如下所示.
将roundrobin.
so复制到Web服务器实例目录.
启动Web服务器(如果它未运行),或者等待,直到重新配置了负载平衡器.
HTTP负载平衡器如何工作负载平衡器尝试在多个ApplicationServer实例(独立或群集)之间平均分配工作量,从而提高系统的整体吞吐量.
HTTP负载平衡器对JavaEE应用服务器上部署的服务启用高可用性.
在这样做时,如果检测到原始的处理实例因不可用或异常而无法处理请求,它会将会话请求故障转移到其他服务器实例.
为了使HTTP会话信息能够保留下来,您必须使用群集配置文件,已安装和设置HADB,并已配置HTTP会话持久性.
有关更多信息,请参见第9章.
注–负载平衡器不能处理大于8k的URI/URL.
HTTP负载平衡算法默认情况下,SunJavaSystemApplicationServer负载平衡器使用粘性roundrobin算法对收到的HTTP和HTTPS请求进行负载平衡.
新的HTTP请求发送到负载平衡器插件时,系统将基于简单的roundrobin方案将该请求转发到某个应用服务器实例.
如果请求用于基于会话的应用程序,则这还包括对新会话的请求.
来自同一客户机的对同一基于会话的应用程序的后续请求被认为是已分345HTTP负载平衡器如何工作第5章配置HTTP负载平衡121配的请求或粘性请求,并由负载平衡器路由到同一实例.
粘性roundrobin由此得名.
对非基于会话的应用程序的请求和对基于会话的应用程序的第一个请求称为未分配的请求.
粘性是通过使用Cookie或显式URL重写实现的.
负载平衡器会自动确定粘性方法.
负载平衡器插件使用以下方法来确定会话粘性:Cookie方法:负载平衡器插件使用一个单独的Cookie来记录路由信息.
HTTP客户机(通常为Web浏览器)必须支持Cookie才能使用基于Cookie的方法.
如果HTTP客户机无法接受Cookie,则插件使用以下方法.
显式URL重写:粘性信息将被附加至URL.
即使HTTP客户机不支持Cookie,也可以使用此方法.
从粘性信息中,负载平衡器插件将首先确定请求先前被转发到的实例.
如果发现该实例工作正常,负载平衡器插件会将请求转发至该特定应用程序服务器实例.
因此,给定会话的所有请求都将被发送到同一个应用程序服务器实例.
设置HTTP负载平衡本节介绍了如何设置负载平衡器插件,并且包含以下各节:第122页中的"设置负载平衡的先决条件"第123页中的"设置负载平衡的步骤"第126页中的"HTTP负载平衡器部署"设置负载平衡的先决条件配置负载平衡器之前,您必须执行以下操作:安装支持的Web服务器并对其进行配置.
有关配置支持的Web服务器的更多信息,请参见第4章.
安装负载平衡器插件.
有关安装过程的信息,请参见《SunJavaSystemApplicationServer9.
1InstallationGuide》.
创建ApplicationServer群集或服务器实例以参与负载平衡.
将应用程序部署到这些群集或实例.
设置HTTP负载平衡SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月122注–如果具有在不同网络域上安装ApplicationServer实例和负载平衡器的部署方案,必须通过使用选项--agentproperties指定全限定域名来创建节点代理.
例如,asadmincreate-node-agent--agentpropertiesremoteclientaddress=machine1.
server.
example.
comtest-na.
有关此命令的更多信息,请参见create-node-agent(1).
设置负载平衡的步骤使用管理控制台GUI或asadmin工具在您的环境中配置负载平衡.
以下各节为您提供更多信息.
使用管理控制台设置负载平衡创建负载平衡器配置.
在管理控制台的左框架上,单击"HTTP负载平衡器",然后单击"新建".
在"新建HTTP负载平衡器"页面中,提供设备详细信息,并选择目标群集或实例.
添加对群集或独立服务器实例的引用,以供负载平衡器进行管理.
要使用管理控制台执行此操作,请在左框架上,单击"HTTP负载平衡器"节点,然后单击该节点下列出的所需负载平衡器.
打开"目标"选项卡,单击"管理目标",然后在"管理目标"页面中选择所需的目标.
如果您创建了具有目标的负载平衡器配置,并且该目标是负载平衡器引用的唯一群集或独立服务器实例,则请跳过此步骤.
启用负载平衡器所引用的群集或独立服务器实例.
要使用管理控制台启用独立服务器实例,请在左框架上,单击"HTTP负载平衡器"节点,然后单击该节点下列出的所需负载平衡器.
打开"目标"选项卡,在"目标"表中单击要启用的实例旁边的复选框,然后单击"启用".
要启用群集中的服务器实例,请选择负载平衡器(如上所述),然后在"目标"选项卡中单击所需的群集.
现在,打开"实例"选项卡,选择所需的实例,然后从"负载平衡器操作"下拉列表中选择"启用负载平衡".
启用群集或独立实例的等效命令是asadminenable-http-lb-server.
启用用于负载平衡的应用程序.
要使用管理控制台执行此操作,请打开"目标"选项卡(如上所述),然后单击所需的群集.
现在,打开"应用程序"选项卡,选择所需的应用程序,然后从"更多操作"下拉列表中选择"负载平衡器启用".
1234设置HTTP负载平衡第5章配置HTTP负载平衡123这些应用程序必须已部署到负载平衡器所引用的群集或独立实例上,并且已启用,可以在群集或独立实例上使用.
启用应用程序以用于负载平衡与启用以使用这些应用程序是两个独立的步骤.
创建运行状况检查器.
要使用管理控制台执行此操作,请打开负载平衡器的"目标"选项卡(如上一步所述),然后在"目标"表中单击"编辑运行状况检查器".
运行状况检查器监视工作异常的服务器实例,以便在这些服务器实例重新正常工作时,负载平衡器可以向它们发送新请求.
注–如果使用的是SunJavaSystemWebServer(6.
1或7.
0),则可以在单个步骤中生成负载平衡器配置文件并通过线路将数据发送到WebServer,而不是执行步骤6和7.
要使用管理控制台执行此操作,请单击所需的负载平衡器,然后打开"导出"选项卡.
在此选项卡中,单击"立即应用更改".
这会将数据发送到WebServer配置目录.
生成负载平衡器配置文件.
要使用管理控制台执行此操作,请单击负载平衡器,然后打开"导出"选项卡.
在此选项卡中,单击"立即导出".
此命令将生成一个配置文件,该配置文件要与SunJavaSystemApplicationServer附带的负载平衡器插件一起使用.
将负载平衡器配置文件复制到WebServer的config目录中,此目录用于存储负载平衡器插件的配置文件.
注–要在单个步骤中自动生成负载平衡器配置文件并通过线路将数据发送到WebServer,需要为SSL设置配置Web服务器并导入DAS证书.
有关配置SunJavaSystemWebServer的信息,请参见第100页中的"配置SunJavaSystemWebServer".
使用asadmin工具设置负载平衡创建负载平衡器配置.
为此,请使用命令asadmincreate-http-lb-config.
注–可以使用单个asadmin命令create-http-lb及其选项执行所有后续步骤(步骤2到步骤7).
有关此命令的更多信息,请参见create-http-lb(1).
添加对群集或独立服务器实例的引用,以供负载平衡器进行管理.
为此,请使用命令asadmincreate-http-lb-ref.
有关此命令的更多信息,请参见create-http-lb-ref(1).
56712设置HTTP负载平衡SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月124如果您创建了具有目标的负载平衡器配置,并且该目标是负载平衡器引用的唯一群集或独立服务器实例,则请跳过此步骤.
启用负载平衡器所引用的群集或独立服务器实例.
为此,请使用命令asadminenable-http-lb-server.
有关此命令的更多信息,请参见enable-http-lb-server(1).
启用用于负载平衡的应用程序.
为此,请使用命令asadminenable-http-lb-application.
有关此命令的更多信息,请参见enable-http-lb-application(1).
这些应用程序必须已部署到负载平衡器所引用的群集或独立实例上,并且已启用,可以在群集或独立实例上使用.
启用应用程序以用于负载平衡与启用以使用这些应用程序是两个独立的步骤.
创建运行状况检查器.
为此,请使用命令asadmincreate-http-health-checker.
有关此命令的更多信息,请参见create-http-health-checker(1).
运行状况检查器监视工作异常的服务器实例,以便在这些服务器实例重新正常工作时,负载平衡器可以向它们发送新请求.
注–如果使用SunJavaSystemWebServer(6.
1或7.
0),而不是执行步骤6和7,可以在单个步骤中生成负载平衡器配置文件并通过线路将数据发送到WebServer.
要使用asadmin工具执行此操作,请将create-http-lb命令的--autoapplyenabled选项设置为true.
有关此命令的更多信息,请参见create-http-lb(1).
生成负载平衡器配置文件.
为此,请使用命令asadminexport-http-lb-config.
有关此命令的更多信息,请参见export-http-lb-config(1).
此命令将生成一个配置文件,该配置文件要与SunJavaSystemApplicationServer附带的负载平衡器插件一起使用.
将负载平衡器配置文件复制到WebServer的config目录中,此目录用于存储负载平衡器插件的配置文件.
注–要在单个步骤中自动生成负载平衡器配置文件并通过线路将数据发送到WebServer,需要为SSL设置配置Web服务器并导入DAS证书.
有关配置SunJavaSystemWebServer的信息,请参见第100页中的"配置SunJavaSystemWebServer".
34567设置HTTP负载平衡第5章配置HTTP负载平衡125HTTP负载平衡器部署根据您的目的和环境,可以使用不同方法配置负载平衡器,如以下各节所述:第126页中的"使用群集服务器实例"第126页中的"使用多个独立实例"使用群集服务器实例部署负载平衡器最常用的方法是使用服务器实例的一个或多个群集.
默认情况下,群集中的所有实例都具有相同的配置,并被部署了相同的应用程序.
负载平衡器在服务器实例之间分配工作量并将请求从异常实例故障转移到正常实例.
如果您已配置了HTTP会话持久性,则对请求进行故障转移时,会话信息将保留.
如果具有多个群集,可以跨群集对请求进行负载平衡,但是仅在单个群集中的实例之间进行故障转移.
在一个负载平衡器中使用多个群集可以轻易启用应用程序的滚动升级.
有关更多信息,请参见第139页中的"升级应用程序而不使可用性受到损失".
注–不能跨群集和独立实例对请求进行负载平衡.
使用多个独立实例您还可以将负载平衡器配置为使用多个独立实例,并在这些实例之间对请求进行负载平衡和故障转移.
但是,在此配置中,您必须手动确保独立实例具有同构环境和部署到其上的相同的应用程序.
由于群集自动维护同构环境,因此对于大多数情况,使用群集更好、更容易.
配置负载平衡器负载平衡器配置在domain.
xml文件中维护.
配置负载平衡器是极其灵活的:尽管一个域可以关联多个负载平衡器,但一个负载平衡器只为一个域提供服务.
尽管每个负载平衡器只有一个负载平衡器配置,但每个负载平衡器配置可以关联多个负载平衡器.
以下各节更详细地介绍如何创建、修改和使用负载平衡器配置:第127页中的"在DAS上配置HTTP负载平衡器"第128页中的"创建HTTP负载平衡器引用"第128页中的"启用用于负载平衡的服务器实例"第129页中的"启用用于负载平衡的应用程序"第129页中的"创建HTTP运行状况检查器"第131页中的"导出负载平衡器配置文件"第132页中的"更改负载平衡器配置"配置负载平衡器SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月126第132页中的"启用动态重新配置"第133页中的"禁用(停止)服务器实例或群集"第133页中的"禁用(停止)应用程序"第134页中的"配置HTTP和HTTPS故障转移"第135页中的"在负载平衡器中使用重定向"第138页中的"配置幂等URL"在DAS上配置HTTP负载平衡器在ApplicationServer9.
1中,可以使用管理控制台或asadmin命令create-http-lb在DAS上创建负载平衡器配置.
以下步骤介绍了如何执行该操作.
如果需要有关asadmin命令create-http-lb、delete-http-lb和list-http-lbs的更多信息,请参见《SunJavaSystemApplicationServer9.
1ReferenceManual》.
在管理控制台中,向下滚动左框架,单击"HTTP负载平衡器"节点,然后在右侧的"HTTP负载平衡器"页面中单击"新建".
在"新建HTTP负载平衡器"页面中,提供托管负载平衡器的计算机的以下详细信息.
字段说明名称负载平衡器配置的名称.
已启用单击"已启用"复选框将负载平衡器配置更改自动推送到驻留在Web服务器配置目录中的物理负载平衡器.
主机安装了Web服务器实例的服务器.
管理端口Web服务器实例使用的管理端口号.
代理主机安装了代理服务器实例的服务器.
代理端口代理服务器使用的端口号.
也可以使用asadmin命令create-http-lb-config创建负载平衡器配置.
表5–1介绍了各个参数.
有关命令create-http-lb-config、delete-http-lb-config和list-http-lb-configs的更多信息,请参见《SunJavaSystemApplicationServer9.
1ReferenceManual》.
表5–1负载平衡器配置参数参数说明responsetimeout服务器实例必须返回响应的时间(以秒为单位).
如果在该时间段内未收到任何响应,则服务器将被视为处于异常状态.
默认值为60.
配置负载平衡器第5章配置HTTP负载平衡127表5–1负载平衡器配置参数(续)参数说明HTTPSrouting对负载平衡器的HTTPS请求是否会导致对服务器实例的HTTPS或HTTP请求.
有关更多信息,请参见第134页中的"配置HTTPS路由选择".
reloadinterval检查负载平衡器配置文件loadbalancer.
xml的更改的时间间隔.
当检查检测到更改时,系统将重新装入配置文件.
0值禁用重新装入.
有关更多信息,请参见第132页中的"启用动态重新配置".
monitor是否为负载平衡器启用监视功能.
routecookie负载平衡器插件用于记录路由信息的Cookie的名称.
HTTP客户机必须支持Cookie.
如果您的浏览器设置为在存储Cookie之前进行询问,则Cookie的名称为JROUTE.
target负载平衡器配置的目标.
指定目标的效果与向该目标添加引用的效果相同.
目标可以是群集,也可以是独立实例.
创建HTTP负载平衡器引用当您在负载平衡器中创建对独立服务器或群集的引用时,此服务器或群集将被添加到负载平衡器控制的目标服务器和群集的列表中.
所引用的服务器或群集仍需要被启用,然后才能对向其发出的请求进行负载平衡.
如果创建了带有目标的负载平衡器配置,则系统已将该目标添加为引用.
要使用管理控制台创建引用,请在左框架上,单击"HTTP负载平衡器"节点,然后单击该节点下列出的所需负载平衡器.
打开"目标"选项卡,单击"管理目标",然后在"管理目标"页面中选择所需的目标.
也可以使用create-http-lb-ref创建引用.
您必须提供负载平衡器配置名称和目标服务器实例或群集.
要删除引用,请使用delete-http-lb-ref.
要删除某个引用前,必须先使用disable-http-lb-server禁用所引用的服务器或群集.
有关这些命令的更多信息,请参见《SunJavaSystemApplicationServer9.
1ReferenceManual》.
启用用于负载平衡的服务器实例创建对服务器实例或群集的引用后,请使用enable-http-lb-server来启用服务器实例或群集.
如果在创建负载平衡器配置时使用了某个服务器实例或群集作为目标,则必须启用该服务器实例或群集.
要使用管理控制台执行此操作,请在左框架上,单击"HTTP负载平衡器"节点,然后单击该节点下列出的所需负载平衡器.
现在,打开"目标"选项卡,在"目标"表中单击要启用的实例旁边的复选框,然后单击"启用".
有关此命令的更多信息,请参见enable-http-lb-server(1).
配置负载平衡器SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月128启用用于负载平衡的应用程序由负载平衡器管理的所有服务器都必须具有同构配置,包括部署到这些服务器的相同的应用程序集.
部署和启用某个应用程序以便进行访问(在部署期间或部署之后发生)后,您必须启用该应用程序以进行负载平衡.
如果没有为负载平衡启用应用程序,则即使已对该应用程序所部署到的服务器的请求执行了负载平衡和故障转移,也不会对该应用程序的请求执行负载平衡和故障转移.
启用应用程序时,请指定应用程序名称和目标.
如果负载平衡器管理了多个目标(例如,两个群集),请在所有目标上启用该应用程序.
要使用管理控制台启用应用程序,请在左框架上,单击"HTTP负载平衡器"节点,然后单击该节点下列出的所需负载平衡器.
打开"目标"选项卡(如上所述),然后单击所需的群集.
现在,打开"应用程序"选项卡,选择所需的应用程序,然后从"更多操作"下拉列表中选择"负载平衡器启用".
如果要从命令行执行此操作,可以使用命令asadminenable-http-lb-application.
有关更多信息,请参见enable-http-lb-application(1).
如果部署了新的应用程序,则还必须启用该应用程序以进行负载平衡并再次导出负载平衡器配置.
创建HTTP运行状况检查器负载平衡器的运行状况检查器将定期检查被标记为异常的所有已配置的ApplicationServer实例.
运行状况检查器不是必需的,但如果没有运行状况检查器,或者禁用了运行状况检查器,则不会执行异常实例的定期运行状况检查.
负载平衡器不能确定异常实例变为正常的时间.
负载平衡器的运行状况检查机制使用HTTP与应用程序服务器实例进行通信.
运行状况检查器将HTTP请求发送给指定的URL并等待响应.
HTTP响应标题中的状态码在100到500之间时表示实例处于正常状态.
注–如果在您的部署方案中负载平衡器是一个群集的前端,该群集具有使用启用了客户机证书验证的受保护端口的实例,则运行状况检查器将无法执行实例的运行状况检查.
因此,那些实例将始终被标记为异常,且不会向它们发送请求.
创建运行状况检查器要指定运行状况检查器属性,可以使用管理控制台或asadmincreate-http-health-checker命令.
要在管理控制台中执行此操作,请导航到"HTTP负载平衡器"节点,展开它并选择负载平衡器.
然后,打开"目标"选项卡,在"目标"表中,单击所需目标的"编辑运行状况检查器"链接.
指定下列参数.
配置负载平衡器第5章配置HTTP负载平衡129表5–2运行状况检查器参数参数说明默认值LoadBalancer单击"已启用"复选框以使所选服务器可用于负载平衡.
False/DisabledDisableTimeout此服务器在被禁用后到达停顿状态所用的时间(以分钟为单位).
30分钟url指定负载平衡器检查的侦听器的URL以确定其运行状况.
"/"interval指定进行实例的运行状况检查的时间间隔(以秒为单位).
指定0将禁用运行状况检查器.
30秒timeout指定超时间隔(以秒为单位),必须在该时间间隔内获得响应才能认为侦听器运行正常.
10秒如果应用程序服务器实例被标记为异常,运行状况检查器将轮询异常实例以确定实例的状态是否已变为正常.
运行状况检查器使用指定的URL来检查所有异常的应用程序服务器实例,以确定这些异常的应用程序服务器实例是否已返回到正常状态.
如果运行状况检查器发现某个异常实例已变为正常,该实例将被添加到正常实例列表中.
有关这些命令的更多信息,请参见create-http-health-checker(1)和delete-http-health-checker(1).
正常实例的附加运行状况检查属性create-http-health-checker创建的运行状况检查器仅检查异常实例.
要定期检查正常实例,请在导出的loadbalancer.
xml文件中设置某些附加属性.
注–只能在导出loadbalancer.
xml之后,通过对此文件进行手动编辑来设置这些属性.
没有等效的asadmin命令可以使用.
要检查正常的实例,请设置以下属性.
表5–3运行状况检查器手动设置属性属性定义active-healthcheck-enabledTrue/False标志,用于表示是否要对正常服务器实例执行Ping操作以确定这些实例是否正常.
要对服务器实例执行Ping操作,请将标志设置为True.
配置负载平衡器SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月130表5–3运行状况检查器手动设置属性(续)属性定义number-healthcheck-retries指定将未响应的服务器实例标记为异常之前,负载平衡器的运行状况检查器执行Ping操作的次数.
有效范围在1到1000之间.
默认设置值为3.
通过编辑loadbalancer.
xml文件来设置属性.
例如:如果添加了这些属性,随后再次编辑并导出loadbalancer.
xml文件,则新导出的配置将不包含这些属性.
必须再次将这些属性添加到新导出的配置中.
导出负载平衡器配置文件SunJavaSystemApplicationServer附带的负载平衡器插件使用名为loadbalancer.
xml的配置文件.
配置负载平衡器后,可以将配置详细信息从domain.
xml导出到loadbalancer.
xml文件.
可以使用管理控制台或asadmin实用程序执行此操作.
使用管理控制台导出负载平衡器配置导航到"HTTP负载平衡器"节点并展开它.
单击所需的负载平衡器.
所有的负载平衡器配置详细信息都显示在"常规"、"设置"和"目标"选项卡中.
打开"导出"选项卡并单击"立即导出".
将已导出的负载平衡器配置文件复制到Web服务器的配置目录.
使用asadmin工具导出负载平衡器配置使用asadmin命令export-http-lb-config导出loadbalancer.
xml文件.
有关该命令的更多信息,请参见export-http-lb-config(1).
导出用于特定负载平衡器配置的loadbalancer.
xml文件.
您可以指定路径和其他文件名.
如果不指定文件名,则此文件将被命名为loadbalancer.
xml.
load-balancer-config-name.
如果不指定路径,则将在domain-dir/generated目录中创建该文件.
要在Windows上指定路径,请用引号将路径引起来.
例如,"C:\Sun\AppServer\loadbalancer.
xml".
12341配置负载平衡器第5章配置HTTP负载平衡131将已导出的负载平衡器配置文件复制到Web服务器的配置目录.
例如,对于SunJavaSystemWebServer,目录位置通常为web-server-root/config.
Web服务器配置目录中的负载平衡器配置文件名必须为loadbalancer.
xml.
如果您的文件使用其他名称(例如loadbalancer.
xml.
load-balancer-config-name),则必须进行重命名.
更改负载平衡器配置如果您通过创建或删除对服务器的引用、部署新的应用程序、启用或禁用服务器或应用程序等方法来更改负载平衡器配置,请再次导出负载平衡器配置文件并将其复制到Web服务器的config目录.
有关更多信息,请参见第131页中的"导出负载平衡器配置文件".
负载平衡器插件将根据在负载平衡器配置中指定的重新装入时间间隔定期检查已更新的配置.
在指定的时间值后,如果负载平衡器发现新的配置文件,它将开始使用该配置.
启用动态重新配置使用动态重新配置时,负载平衡器插件将定期检查已更新的配置.
要启用动态重新配置,请执行以下步骤:要创建负载平衡器配置,请将--reloadinterval选项与asadmincreate-http-lb一起使用.
有关该命令的更多信息,请参见create-http-lb(1).
此选项用于设置检查负载平衡器配置文件loadbalancer.
xml的更改的时间间隔.
值为0将禁用动态重新配置.
默认情况下,将以60秒的重新装入时间间隔启用动态重新配置.
如果先前已禁用动态重新配置,或者要更改重新装入时间间隔,请使用asadminset命令.
更改重新装入时间间隔后,请再次导出负载平衡器配置文件并将其复制到Web服务器的config目录中,然后重新启动Web服务器.
注–如果负载平衡器在尝试进行重新配置时遇到硬盘读取错误,它将使用内存中的当前配置.
负载平衡器还确保了在覆写现有配置之前,已修改的配置数据符合DTD.
遇到磁盘读取错误后,将在Web服务器的错误日志文件中记录一则警告消息.
SunJavaSystemWebServer的错误日志位于:web-server-install-dir/web-server-instance/logs/.
2配置负载平衡器SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月132禁用(停止)服务器实例或群集出于任何原因停止应用服务器之前,实例应该完成正在处理的请求.
正常禁用服务器实例或群集的进程称为停止.
负载平衡器使用以下策略来停止应用程序服务器实例:如果已禁用某个实例(独立实例或群集的一部分),并且超时尚未到期,粘性请求将继续发送到该实例.
但是,新请求将不会发送到已禁用的实例.
超时到期后,该实例将被禁用.
从负载平衡器到该实例的所有打开的连接将被关闭.
即使并非所有粘连至该实例的会话均已失效,负载平衡器也不会将任何请求发送到该实例.
负载平衡器会将粘性请求故障转移到另一个正常实例上.
禁用服务器实例或群集运行asadmindisable-http-lb-server,设置超时值(以分钟为单位).
有关该命令的更多信息,请参见disable-http-lb-server(1).
使用asadminexport-http-lb-config导出负载平衡器配置文件.
有关该命令的更多信息,请参见export-http-lb-config(1).
将导出的配置复制到Web服务器的config目录.
停止该服务器实例或群集.
禁用(停止)应用程序在取消部署某个Web应用程序之前,该应用程序应该完成正在处理的请求.
正常禁用应用程序的进程称为停止.
停止应用程序时,您可以指定超时时间.
基于超时时间,负载平衡器可使用以下策略停止应用程序:如果超时尚未到期,负载平衡器不会将新请求转发到应用程序,而是将它们返回到WebServer.
但是,负载平衡器将会继续转发粘性请求,直至超时到期.
当超时到期时,负载平衡器将不接受此应用程序的任何请求,包括粘性请求.
当您从负载平衡器引用的每个服务器实例或群集中禁用应用程序时,则在再次启用该应用程序之前,已禁用的应用程序的用户将遭受服务损失.
如果您从一个服务器实例或群集中禁用应用程序而使该应用程序在其他服务器实例或群集中保持启用状态,则用户仍可访问该应用程序.
有关更多信息,请参见第139页中的"升级应用程序而不使可用性受到损失".
1234配置负载平衡器第5章配置HTTP负载平衡133禁用应用程序使用asadmindisable-http-lb-application指定以下内容:超时(以分钟为单位).
要禁用的应用程序的名称.
要禁用此应用程序的目标群集或实例.
有关该命令的更多信息,请参见disable-http-lb-application(1).
使用asadminexport-http-lb-config导出负载平衡器配置文件.
有关该命令的更多信息,请参见export-http-lb-config(1).
将导出的配置复制到Web服务器的config目录.
配置HTTP和HTTPS故障转移如果HTTP/HTTPS会话所连接的原始应用程序服务器实例变为不可用,负载平衡器插件会将这些会话故障转移到其他应用程序服务器实例上.
本节介绍了如何配置负载平衡器插件以启用HTTP/HTTPS路由选择和会话故障转移.
HTTPS路由选择负载平衡器插件将收到的所有HTTP或HTTPS请求路由到应用服务器实例.
但是,如果启用了HTTPS路由选择,则负载平衡器插件将仅把HTTPS请求转发给使用HTTPS端口的应用程序服务器.
HTTPS路由选择是针对新请求和粘性请求而执行的.
如果收到了HTTPS请求且没有正在进行的会话,负载平衡器插件将选择使用已配置的HTTPS端口的可用应用程序服务器实例,并将请求转发到该实例.
在正在进行的HTTP会话中,如果收到对同一个会话的新HTTPS请求,则将使用在HTTP会话期间保存的会话和粘性信息来路由HTTPS请求.
新的HTTPS请求将被路由到处理上一个HTTP请求的同一服务器上,但是,是在HTTPS端口上进行.
配置HTTPS路由选择create-http-lb-config命令的httpsrouting选项用于控制是为正在参与负载平衡的所有应用程序服务器打开还是关闭HTTPS路由选择.
如果此选项设置为False,则所有HTTP和HTTPS请求都将作为HTTP请求进行转发.
如果设置为True,则HTTPS将作为HTTPS请求进行转发.
创建新的负载平衡器配置时请设置HTTPS路由选择,或者在以后使用asadminset命令进行更改.
123配置负载平衡器SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月134注–要使用HTTPS路由选择,必须配置一个或多个HTTPS侦听器.
如果https-routing设置为true,而新请求或粘性请求传入到没有正常HTTPS侦听器的群集中,该请求将生成一个错误.
已知问题负载平衡器对HTTP/HTTPS请求处理具有以下限制.
如果某个会话使用HTTP和HTTPS请求的组合,则第一个请求必须是HTTP请求.
如果第一个请求是HTTPS请求,它后面将不能跟HTTP请求.
这是因为与HTTPS会话关联的Cookie不是由浏览器返回的.
浏览器将两个不同的协议解释为两个不同的服务器,并启动新的会话.
仅当httpsrouting设置为True时,此限制才有效.
如果某个会话具有HTTP和HTTPS请求的组合,则必须将应用程序服务器实例配置为同时具有HTTP和HTTPS侦听器.
仅当httpsrouting设置为true时,此限制才有效.
如果某个会话具有HTTP和HTTPS请求的组合,则必须将应用程序服务器实例配置为具有使用标准端口号(即,HTTP为80,HTTPS为443)的HTTP和HTTPS侦听器.
不管为httpsrouting设置了何值,此限制都适用.
在负载平衡器中使用重定向使用重定向可将请求从一个URL重定向到另一个URL.
例如,使用重定向将用户发送到其他Web站点(例如,从旧版本的应用程序重定向到较新版本的应用程序),或者从HTTP重定向到HTTPS或从HTTPS重定向到HTTP.
在应用程序中可按多种方式启用重定向(例如,基于servlet的重定向、web.
xml重定向).
不过,通过负载平衡器发送重定向URL可能需要对ApplicationServer或负载平衡器进行一些其他配置.
请注意,重定向与使用HTTPS路由选择转发的请求不同.
使用重定向时,请将httpsrouting设置为False.
如果将HTTPS请求配置为转发到HTTP,请使用第134页中的"HTTPS路由选择".
以下属性将影响重定向:HTTP服务或HTTP侦听器的authPassthroughEnabled属性和proxyHandler属性,以及loadbalancer.
xml文件中的rewrite-location属性.
authPassthroughEnabled属性当ApplicationServerauthPassthroughEnabled属性设置为True时,有关原始客户机请求的信息(如客户机IP地址、SSL密钥大小和已认证的客户机证书链)将通过使用自定义请求标头发送到HTTP侦听器.
如果安装了硬件加速器,authPassThroughEnabled属性允许您使用硬件加速器来进行更快速的SSL验证.
在负载平衡器中配置硬件加速器比在每个群集ApplicationServer实例中配置硬件加速器更为容易.
配置负载平衡器第5章配置HTTP负载平衡135注意–仅当ApplicationServer位于防火墙之后时,才将authPassthroughEnabled设置为True.
使用asadminset命令在HTTP服务或单个HTTP侦听器中设置authPassthroughEnabled属性.
单个HTTP侦听器的设置优先于HTTP服务的设置.
要在所有HTTP/HTTPS侦听器上设置authPassthroughEnabled属性,请使用以下命令:asadminsetcluster-name-config.
http-service.
property.
authPassthroughEnabled=true要在单个侦听器上设置该属性,请使用以下命令:asadminsetcluster-name-config.
http-service.
http-listener.
listener-name.
property.
authPassthroughEnabled=trueproxyHandler属性ApplicationServer的代理处理程序负责检索有关代理服务器(在本例中,为负载平衡器)拦截并转发给ApplicationServer的原始客户机请求的信息,并负责使该信息可供作为客户机请求的目标部署在ApplicationServer中的Web应用程序使用.
如果进行拦截的代理服务器是SSL终止代理服务器,则代理处理程序将检索有关原始请求的其他信息(如原始请求是否为HTTPS请求,以及是否启用了SSL客户机验证),并使这些信息可用.
仅当将authPassThroughEnabled设置为True时才使用proxyHandler属性.
代理处理程序将在接收到的请求中检查自定义请求标头,这样,代理服务器即可传送有关原始客户机请求的信息,并使此信息可供使用标准ServletRequestAPI的ApplicationServer中的Web应用程序使用.
代理处理程序实现是可配置的,可以使用proxyHandler属性在HTTP服务级别全局配置,也可以针对单个HTTP侦听器进行配置.
proxyHandler属性的值指定com.
sun.
appserv.
ProxyHandler抽象类实现的完全限定类名.
只要代理处理程序实现知道HTTP请求标头名称,并且了解其值的格式,可配置的代理处理程序实现就允许ApplicationServer与任何代理服务器协同工作,这样,代理服务器便可以传送有关原始客户机请求的信息.
ApplicationServer的代理处理程序将从该请求标头中读取并解析SSL证书链.
这将允许后端应用服务器实例检索SSL终止代理服务器(在本例中,为负载平衡器)拦截的原始客户机请求的有关信息.
您可以使用默认的代理处理程序设置,也可以使用HTTP服务或HTTP/HTTPS侦听器的proxyHandler属性自行配置.
proxyHandler属性可用于指定该侦听器或全部侦听器使用的com.
sun.
appserv.
ProxyHandler抽象类的自定义实现的完全限定类名.
配置负载平衡器SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月136此抽象类的实现将在给定请求中检查自定义请求标头,这样,代理服务器可将有关原始客户机请求的信息传送至ApplicationServer实例,并将该信息返回给其调用方.
默认实现将从名为Proxy-ip的HTTP请求标头中读取客户机IP地址,从名为Proxy-keysize的HTTP请求标头中读取SSL密钥大小,并从名为Proxy-auth-cert的HTTP请求标头中读取SSL客户机证书链.
Proxy-auth-cert值必须包含BASE-64编码的客户机证书链且无BEGINCERTIFICATE和ENDCERTIFICATE边界,并将\n替换为%d%a.
仅当authPassThroughEnabled设置为True时才可以使用此属性.
如果在单个HTTP或HTTPS侦听器中设置proxyHandler属性,则它将覆盖所有侦听器的默认设置.
可使用asadminset命令在HTTP服务或在单个HTTP侦听器中设置proxyHandler属性.
要在所有HTTP/HTTPS侦听器中设置proxyHandler属性,请使用以下命令:asadminsetcluster-name-config.
http-service.
property.
proxyHandler=classname要在单个侦听器上设置该属性,请使用以下命令:asadminsetcluster-name-config.
http-service.
http-listener.
listener-name.
property.
proxyHandler=classnamerewrite-location属性如果rewrite-location属性设置为True,则它将重写原始请求信息,并会包括协议(HTTP或HTTPS)、主机和端口信息.
默认情况下,会将rewrite-location属性设置为True,以便保持与以前ApplicationServer版本的向后兼容性.
不能通过asasmincreate-http-lb-config命令或asadminset命令来使用rewrite-location属性.
要使用该属性,请在导出负载平衡器配置后将其手动添加到loadbalancer.
xml文件中.
例如,将以下内容添加到导出的loadbalancer.
xml文件中:配置负载平衡器第5章配置HTTP负载平衡137设置rewrite-location属性时,请记住以下几点:如果httpsrouting为False,且ApplicationServer中未启用authPassthroughEnabled,请将rewrite-location属性设置为True.
如果未启用authPassthroughEnabled,ApplicationServer将不能识别原始请求的协议(HTTP或HTTPS).
通过将rewrite-location设置为True,负载平衡器可适当地修改重写位置的协议部分.
即,如果客户机发送HTTPS请求,则负载平衡器会将客户机重定向到负载平衡器上启用HTTPS的侦听器端口.
对于HTTP请求,该过程相同.
如果httpsrouting为False,且ApplicationServer中启用了authPassthroughEnabled,则rewrite-location既可设置为True,也可设置为False,因为ApplicationServer可识别客户机请求是HTTP还是HTTPS.
启用了authPassthroughEnabled时,ApplicationServer可适当地修改重写位置的协议部分.
如果rewrite-location设置为False,则负载平衡器不会重写已重定向URL的位置.
如果设置为True,则它会重写已重定向URL的位置.
但此重写是不需要的,因为ApplicationServer可以识别来自客户机的HTTPS连接.
另外,如果应用程序需要将HTTP重定向到HTTPS,或将HTTPS重定向到HTTP,则必须将rewrite-location参数设置为False.
配置幂等URL幂等请求是一种在重试时不会在应用程序中造成任何更改或不一致的请求.
在HTTP中,某些方法(例如GET)是幂等的,而其他方法(例如POST)则不是.
重试幂等URL不能导致服务器或数据库中的值发生更改.
唯一的区别在于用户收到的响应会有所不同.
幂等请求的示例包括搜索引擎查询和数据库查询.
基本原则是重试不会导致数据的更新或修改.
要增强已部署的应用程序的可用性,请这样配置环境:使其在由负载平衡器提供服务的所有应用服务器实例上重试失败的幂等HTTP请求.
此选项用于只读请求(例如,重试搜索请求).
请在sun-web.
xml文件中配置幂等URL.
当您导出负载平衡器配置时,幂等URL信息将自动被添加到loadbalancer.
xml文件中.
有关配置幂等URL的更多信息,请参见《SunJavaSystemApplicationServer9.
1Developer'sGuide》中的"ConfiguringIdempotentURLRequests".
配置负载平衡器SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月138配置多个Web服务器实例SunJavaSystemApplicationServer安装程序不允许在单个计算机上安装多个负载平衡器插件.
要在单个群集或多个群集中的单个计算机上安装多个带有负载平衡器插件的Web服务器,需要手动执行一些步骤来配置负载平衡器插件.
配置多个Web服务器实例配置新的WebServer实例以使用负载平衡器插件.
有关详细说明,请参见第100页中的"配置SunJavaSystemWebServer".
将DTD文件sun-loadbalancer_1_1.
dtd从现有Web服务器实例的config目录复制到新实例的config目录.
设置负载平衡器配置文件.
执行以下操作之一:复制现有负载平衡器配置.
使用现有负载平衡器配置,将loadbalancer.
xml文件从现有Web服务器实例的config目录复制到新实例的config目录中.
创建新的负载平衡器配置:a.
使用asadmincreate-http-lb-config创建新的负载平衡器配置.
b.
使用asadminexporthttp-lb-config将新配置导出到loadbalancer.
xml文件中.
c.
将loadbalancer.
xml文件复制到新WebServer的config目录中.
有关创建负载平衡器配置并将其导出到loadbalancer.
xml文件的信息,请参见第127页中的"在DAS上配置HTTP负载平衡器".
升级应用程序而不使可用性受到损失将应用程序升级到新版本而不会给用户造成任何可用性方面的损失,这样的升级称为滚动升级.
管理好应用程序升级前后的两个版本可以确保应用程序的当前用户能够不中断地完成任务,同时新用户可以透明地获得应用程序的新版本.
执行滚动升级时,用户不会察觉在进行升级.
应用程序兼容性根据应用程序两个版本间变更的大小,滚动升级的难度将有所不同.
123升级应用程序而不使可用性受到损失第5章配置HTTP负载平衡139如果变更很小(例如静态文本和图像的变更),则此应用程序的两个版本可以兼容,并且可同时在同一群集中运行.
兼容的应用程序必须满足以下条件:使用相同的会话信息使用兼容的数据库模式通常具有兼容的应用程序级业务逻辑使用相同的物理数据源您可以对单个群集或多个群集中兼容的应用程序执行滚动升级.
有关更多信息,请参见第140页中的"在单个群集中升级".
如果应用程序的两个版本不满足上述所有条件,则应用程序被视为不兼容.
在一个群集中执行不兼容的应用程序版本将破坏应用程序数据并导致会话故障转移功能失常.
问题取决于不兼容的类型和程度.
好的做法是通过创建要在其上部署新版本的"阴影群集"来升级不兼容的应用程序,然后再慢慢停止旧的群集和应用程序.
有关更多信息,请参见第144页中的"升级不兼容的应用程序".
应用程序开发者和管理员是确定应用程序版本是否兼容的最佳人员.
如果不确定,请假定版本不兼容,因为这是最安全的方法.
在单个群集中升级假如单个群集的配置未与其他任何群集共享,则您可以对部署到此群集的应用程序执行滚动升级.
在单个群集中升级应用程序保存旧版本的应用程序或备份域.
要备份域,请使用asadminbackup-domain命令.
有关该命令的更多信息,请参见backup-domain(1).
关闭群集的动态重新配置(如果已启用).
从管理控制台执行此操作:a.
展开"配置"节点.
b.
单击群集配置的名称.
c.
在"配置系统属性"页面中,取消选中"已启用动态重新配置"框.
d.
单击"保存"或者,使用以下命令:12升级应用程序而不使可用性受到损失SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月140asadminset--useruser--passwordfilepassword-filecluster-name-config.
dynamic-reconfiguration-enabled=false将已升级的应用程序重新部署到目标domain中.
如果使用管理控制台进行重新部署,域将自动成为目标.
如果您使用asadmin,请指定目标域.
由于已禁用动态重新配置,因此旧应用程序将继续在群集上运行.
使用asadminenable-http-lb-application为实例启用已重新部署的应用程序.
有关该命令的更多信息,请参见enable-http-lb-application(1).
从负载平衡器停止群集中的一个服务器实例.
请执行以下步骤:a.
使用asadmindisable-http-lb-server禁用服务器实例.
有关该命令的更多信息,请参见disable-http-lb-server(1).
b.
使用asadminexport-http-lb-config导出负载平衡器配置文件.
有关该命令的更多信息,请参见export-http-lb-config(1).
c.
将已导出的配置文件复制到Web服务器实例的配置目录.
例如,对于SunJavaSystemWebServer,目录位置为web-server-install-dir/https-host-name/config/loadbalancer.
xml.
为确保负载平衡器能够装入新的配置文件,请通过在负载平衡器配置中设置reloadinterval来确保启用动态重新配置.
d.
请等待,直至超时到期.
监视负载平衡器的日志文件以确保实例已脱机.
如果用户看到重试URL,将跳过停止时间并立即重新启动服务器.
在群集中的其他实例仍处于运行状态的情况下,重新启动已禁用的服务器实例.
重新启动操作将使服务器与域同步,并更新应用程序.
测试重新启动的服务器上的应用程序,以确保应用程序运行正常.
重新启用负载平衡器中的服务器实例.
请执行以下步骤:a.
使用asadminenable-http-lb-server启用服务器实例.
有关该命令的更多信息,请参见enable-http-lb-server(1).
b.
使用asadminexport-http-lb-config导出负载平衡器配置文件.
有关该命令的更多信息,请参见export-http-lb-config(1).
345678升级应用程序而不使可用性受到损失第5章配置HTTP负载平衡141c.
将配置文件复制到Web服务器的配置目录.
对群集中的每个实例重复步骤5至步骤8.
当所有服务器实例都具有新的应用程序并已运行时,您可以再次为群集启用动态重新配置.
在多个群集中进行升级在两个或多个群集中升级兼容的应用程序:保存旧版本的应用程序或备份域.
要备份域,请使用asadminbackup-domain命令.
有关该命令的更多信息,请参见backup-domain(1).
关闭所有群集的动态重新配置(如果已启用).
从管理控制台执行此操作:a.
展开"配置"节点.
b.
单击其中一个群集配置的名称.
c.
在"配置系统属性"页面中,取消选中"已启用动态重新配置"框.
d.
单击"保存"e.
对其他群集重复此过程或者,使用以下命令:asadminset--useruser--passwordfilepassword-filecluster-name-config.
dynamic-reconfiguration-enabled=false将已升级的应用程序重新部署到目标domain中.
如果使用管理控制台进行重新部署,域将自动成为目标.
如果您使用asadmin,请指定目标域.
由于已禁用动态重新配置,因此旧应用程序将继续在群集上运行.
使用asadminenable-http-lb-application为群集启用已重新部署的应用程序.
有关该命令的更多信息,请参见enable-http-lb-application(1).
9101234升级应用程序而不使可用性受到损失SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月142从负载平衡器停止一个群集a.
使用asadmindisable-http-lb-server禁用此群集.
有关该命令的更多信息,请参见disable-http-lb-server(1).
b.
使用asadminexport-http-lb-config导出负载平衡器配置文件.
有关该命令的更多信息,请参见export-http-lb-config(1).
c.
将已导出的配置文件复制到Web服务器实例的配置目录.
例如,对于SunJavaSystemWebServer,目录位置为web-server-install-dir/https-host-name/config/loadbalancer.
xml.
必须为负载平衡器启用动态重新配置(通过在负载平衡器配置中设置reloadinterval),以便自动装入新的负载平衡器配置文件.
d.
请等待,直至超时到期.
监视负载平衡器的日志文件以确保实例已脱机.
如果用户看到重试URL,将跳过停止时间并立即重新启动服务器.
在其他群集仍处于运行状态的情况下,重新启动已禁用的群集.
重新启动操作将使群集与域同步,并更新应用程序.
测试重新启动的群集上的应用程序,以确保应用程序运行正常.
在负载平衡器中启用此群集:a.
使用asadminenable-http-lb-server启用群集.
有关该命令的更多信息,请参见enable-http-lb-server(1).
b.
使用asadminexport-http-lb-config导出负载平衡器配置文件.
有关该命令的更多信息,请参见export-http-lb-config(1).
c.
将配置文件复制到Web服务器的配置目录.
对其他群集重复步骤5至步骤8.
当所有服务器实例都具有新的应用程序并已运行时,您可以再次为所有群集启用动态重新配置.
5678910升级应用程序而不使可用性受到损失第5章配置HTTP负载平衡143升级不兼容的应用程序如果应用程序的新版本与旧版本不兼容,请使用以下过程.
有关应用程序兼容条件的信息,请参见第139页中的"应用程序兼容性".
此外,您必须在两个或更多群集中升级不兼容的应用程序.
如果您只有一个群集,则请为升级创建"阴影群集",如下所述.
升级不兼容的应用程序时,请执行以下操作:赋予应用程序新版本一个名称,此名称应与旧版本的名称不同.
以下步骤假定已重新命名此应用程序.
如果数据模式不兼容,请在规划数据迁移后使用不同的物理数据源.
将应用程序的新版本部署到与旧版本所部署到的群集不同的群集上.
在使运行旧应用程序的群集脱机前,请为其设置一个适当长的超时,因为此应用程序的请求无法故障转移到新的群集.
这些用户会话将只会失败.
通过创建第二个群集来升级不兼容的应用程序保存旧版本的应用程序或备份域.
要备份域,请使用asadminbackup-domain命令.
有关该命令的更多信息,请参见backup-domain(1).
在与现有群集相同或不同组的计算机上创建"阴影群集".
如果已经拥有第二个群集,请跳过此步骤.
a.
使用管理控制台创建新的群集并引用现有群集的命名配置.
为每台计算机上的新实例自定义端口,以避免与现有的活动端口冲突.
b.
对于所有与群集相关联的资源,请使用asadmincreate-resource-ref将资源引用添加到新创建的群集.
有关该命令的更多信息,请参见create-resource-ref(1).
c.
使用asadmincreate-application-ref从新创建的群集创建对部署到此群集的所有其他应用程序(当前已重新部署的应用程序除外)的引用.
有关该命令的更多信息,请参见create-application-ref(1).
d.
使用asadminconfigure-ha-cluster将群集配置为高可用性群集.
有关该命令的更多信息,请参见configure-ha-cluster(1).
e.
使用asadmincreate-http-lb-ref创建对负载平衡器配置文件中新创建的群集的引用.
有关该命令的更多信息,请参见create-http-lb-ref(1).
赋予应用程序新版本一个名称,此名称应与旧版本的名称不同.
123升级应用程序而不使可用性受到损失SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月144将新群集作为目标来部署新的应用程序.
使用一个或多个不同的上下文根.
使用asadminenable-http-lb-application为群集启用已部署的新应用程序.
有关该命令的更多信息,请参见enable-http-lb-application(1).
在另一个群集仍处于运行状态的情况下,启动新群集.
启动操作将导致群集与域同步,并使用新应用程序进行更新.
测试新群集上的应用程序,以确保应用程序运行正常.
使用asadmindisable-http-lb-server从负载平衡器上禁用旧群集.
有关该命令的更多信息,请参见disable-http-lb-server(1).
为延迟会话存在的时间设置超时值.
使用asadminenable-http-lb-server从负载平衡器上启用新群集.
有关该命令的更多信息,请参见enable-http-lb-server(1).
使用asadminexport-http-lb-config导出负载平衡器配置文件.
有关该命令的更多信息,请参见export-http-lb-config(1).
将已导出的配置文件复制到Web服务器实例的配置目录.
例如,对于SunJavaSystemWebServer,目录位置为web-server-install-dir/https-host-name/config/loadbalancer.
xml.
必须为负载平衡器启用动态重新配置(通过在负载平衡器配置中设置reloadinterval),以便自动装入新的负载平衡器配置文件.
在超时时间到期或旧应用程序的所有用户都退出后,停止旧的群集并删除旧的应用程序.
监视HTTP负载平衡器插件第145页中的"配置日志消息"第146页中的"日志消息类型"第147页中的"启用负载平衡器日志记录"第148页中的"了解监视消息"配置日志消息负载平衡器插件使用Web服务器的日志记录机制来写入日志消息.
ApplicationServer上的默认日志级别被设置为SunJavaSystemWebServer(INFO)、ApacheWebServer(WARN)45678910111213监视HTTP负载平衡器插件第5章配置HTTP负载平衡145和MicrosoftIIS(INFO)上的默认日志级别.
应用服务器日志级别(FINE、FINER和FINEST)映射到Web服务器上的DEBUG级别.
这些日志消息将被写入Web服务器日志文件,其形式为可使用脚本进行解析或可被导入电子表格以计算所需的衡量标准的原始数据.
日志消息类型负载平衡器插件生成以下类型的日志消息:第146页中的"负载平衡器配置器日志消息"第146页中的"请求分发和运行时日志消息"第147页中的"配置器错误消息"负载平衡器配置器日志消息使用幂等URL和错误页面设置时,将记录这些消息.
幂等URL模式配置的输出包含以下信息:当日志级别被设置为详细时:CONFxxxx:IdempotentUrlPatternconfiguredforweb-module:当日志级别被设置为严重时:CONFxxxx:DuplicateentryofIdempotentURLelementforwebModuleinloadbalancer.
xml.
"当日志级别被设置为警告时:CONFxxxx:InvalidIdempotentUrlPatternDataforweb-module错误页面URL配置的输出包含以下信息(日志级别设置为警告):CONFxxxx:Invaliderror-urlforweb-module请求分发和运行时日志消息在对请求进行负载平衡和分发时,将生成这些日志消息.
每个方法开始的标准日志的输出均包含以下信息(日志级别设置为详细):ROUTxxxx:ExecutingRoutermethod每个方法开始的路由器日志的输出均包含以下信息(日志级别设置为信息):ROUTxxxx:SuccessfullySelectedanotherServerInstanceforidempotentrequest运行时日志的输出包含以下信息(日志级别设置为信息):监视HTTP负载平衡器插件SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月146RNTMxxxx:RetryingIdempotentRequest配置器错误消息如果存在配置问题(例如,缺少引用的自定义错误页面),将显示这些错误消息.
日志级别设置为信息:ROUTxxxx:NonIdempotentRequestcannotberetried例如:ROUTxxxx:NonIdempotentRequesthttp://sun.
com/addToDBx=11&abc=2cannotberetried日志级别设置为详细:RNTMxxxx:Invalid/MissingCustomerror-url/page:forweb-module:例如:RNTMxxxx:Invalid/MissingCustomerror-url/page:myerror1xyzforweb-module:test启用负载平衡器日志记录负载平衡器插件记录以下信息:每个请求的请求开始/停止信息.
当请求从异常实例故障转移到正常实例时的故障转移请求信息.
每个运行状况检查周期结束时的异常实例列表.
注–启用负载平衡器日志记录后,如果将Web服务器日志级别设置为DEBUG或设置为打印详细消息,负载平衡器会将HTTP会话ID写入Web服务器日志文件中.
因此,如果托管负载平衡器插件的Web服务器位于DMZ中,请不要在生产环境中使用DEBUG或类似的日志级别.
如果必须使用DEBUG日志记录级别,请在loadbalancer.
xml中将require-monitor-data属性设置为false,以关闭负载平衡器日志记录.
打开负载平衡器日志记录设置Web服务器中的日志选项.
此过程将取决于WebServer:对于SunJavaSystemWebServer在服务器的管理控制台中,转到"Magnus编辑器"选项卡,然后将"LogVerbose"选项设置为On.
对于ApacheWebServer,请将日志级别设置为DEBUG.
1监视HTTP负载平衡器插件第5章配置HTTP负载平衡147对于MicrosoftIIS,请在sun-passthrough.
properties文件中将日志级别设置为FINE.
将负载平衡器配置的monitor选项设置为True.
使用asadmincreate-http-lb-config命令在最初创建负载平衡器配置时将监视设置为True,也可以在以后使用asadminset命令将其设置为True.
默认情况下,监视处于禁用状态.
了解监视消息负载平衡器插件日志消息的格式如下所示:HTTP请求的开头处包含以下信息:RequestStartSticky(New)时间戳值是从1970年1月1日开始的毫秒数.
例如:RequestStartNew123456602983http://austen.
sun.
com/Webapps-simple/servlet/Example1HTTP请求的结尾包含RequestExit消息,如下所示:RequestExitSticky(New)Failure-(incaseofafailure)例如:RequestExitNew123456603001http://austen.
sun.
com/Webapps-simple/servlet/Example1http://austen:222218注–在RequestExit消息中,response-time表示从负载平衡器插件方面请求的往返总时间(以毫秒为单位).
异常实例列表,如下所示:UnhealthyInstances,.
.
.
例如:UnhealthyInstancescluster1701923http://austen:2210,http://austen:3010故障转移请求列表,如下所示:FailedoverRequest例如:FailedoverRequest239496705623http://austen.
sun.
com/Apps/servlet/SessionTest16dfdac3c7e80a40http://austen:4044http://austen:40452监视HTTP负载平衡器插件SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月148使用ApplicationServer群集本章介绍如何使用ApplicationServer群集.
它包含以下小节:第149页中的"群集概述"第149页中的"组管理服务"第150页中的"使用群集"群集概述群集是命名的服务器实例集合,它们共享相同的应用程序、资源和配置信息.
您可以将不同计算机上的服务器实例分组到一个逻辑群集中并将其作为一个单元来管理.
您可以使用DAS轻松控制多机群集的生命周期.
群集可以启用水平可伸缩性、负载平衡和故障转移保护.
根据定义,群集中的所有实例都具有相同的资源和应用程序配置.
当群集中的服务器实例或计算机出现故障时,负载平衡器检测到该故障,会将通信从出现故障的实例重定向至群集中的其他实例,并恢复用户会话状态.
由于群集中所有实例上的应用程序和资源都相同,因此一个实例可以故障转移至群集中的任何其他实例.
组管理服务组管理服务(GroupManagementService,GMS)是为群集中的实例启用的基础结构组件.
启用了GMS时,如果群集实例出现故障,群集和域管理服务器将可以识别该故障,并在出现故障时采取行动.
ApplicationServer的许多功能依赖于GMS.
例如,IIOP故障转移、内存中复制、事务服务和计时器服务功能均使用GMS.
如果群集中的服务器实例位于不同的计算机上,请确保这些计算机在同一子网上.
6第6章149注–GMS功能在开发者配置文件中不可用.
在群集配置文件和企业配置文件中,默认情况下启用GMS.
GMS是Shoal框架的核心服务.
有关Shoal的更多信息,请访问项目Shoal主页(https://shoal.
dev.
java.
net/).
对群集启用或禁用GMS在树组件中,选择"群集".
单击群集的名称.
在"常规信息"下,确保根据需要选中或取消选中了"启用心跳"复选框.
要启用GMS,请确保选中"启用心跳"复选框.
要禁用GMS,请确保取消选中"启用心跳"复选框.
如果要启用GMS且需要与这些默认值不同的值,请为GMS更改默认端口和IP地址.
单击"保存".
配置GMS通过更改确定GMS检查故障的频率的设置,配置适合您环境的GMS.
例如,可以更改故障检测尝试之间的超时、对可疑故障成员的重试次数或检查群集成员时的超时.
要在管理控制台中配置监视,请转到ApplicationServer节点–>"配置"–>"组管理服务".
等效的asadmin命令是get和set.
使用群集第151页中的"创建群集"第152页中的"为群集创建服务器实例"第153页中的"配置群集"第153页中的"启动、停止和删除群集实例"第154页中的"在群集中配置服务器实例"12345使用群集SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月150第155页中的"为群集配置应用程序"第155页中的"为群集配置资源"第156页中的"删除群集"第156页中的"迁移EJB计时器"第157页中的"升级组件而不使服务受到任何损失"创建群集在树组件中,选择"群集"节点.
在"群集"页面中,单击"新建".
将显示"创建群集"页面.
在"名称"字段中,键入群集的名称.
名称必须:仅由大小写字母、数字、下划线、连字符和句点(.
)组成在所有节点代理名称、服务器实例名称、群集名称和配置名称中都是唯一的不能是domain在"配置"字段中,从下拉式列表中选择配置.
要创建不使用共享配置的群集,请选择default-config.
使标有"复制选定的配置"的单选按钮保持选定状态.
默认配置的副本的名称将为cluster_name-config.
要创建使用共享配置的群集,请从下拉式列表中选择该配置.
选择标有"引用选定的配置"的单选按钮,以创建使用指定的现有共享配置的群集.
另外,添加服务器实例.
您也可以在创建群集后添加服务器实例.
为群集添加服务器实例之前,请先创建一个或多个节点代理或节点代理占位符.
请参见第176页中的"创建节点代理占位符".
创建服务器实例:a.
在"要创建的服务器实例"区域,单击"添加".
b.
在"实例名称"字段中为实例输入名称.
c.
从"节点代理"下拉式列表中选择节点代理.
12345使用群集第6章使用ApplicationServer群集151单击"确定".
在显示的"已成功创建群集"页面中单击"确定".
等效的asadmin命令create-cluster第153页中的"配置群集"第152页中的"为群集创建服务器实例"第155页中的"为群集配置应用程序"第155页中的"为群集配置资源"第156页中的"删除群集"第157页中的"升级组件而不使服务受到任何损失"有关如何管理群集、服务器实例和节点代理的详细信息,请参见第169页中的"部署节点代理".
为群集创建服务器实例为群集创建服务器实例之前,必须先创建节点代理或节点代理占位符.
请参见第176页中的"创建节点代理占位符".
在树组件中,展开"群集"节点.
选择群集的节点.
单击"实例"选项卡以显示"群集服务器实例"页面.
单击"新建"以显示"创建群集服务器实例"页面.
在"名称"字段中,键入服务器实例的名称.
从"节点代理"下拉式列表中选择节点代理.
单击"确定".
等效的asadmin命令create-instance第167页中的"什么是节点代理"第151页中的"创建群集"67更多信息另请参见开始之前1234567更多信息另请参见使用群集SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月152第153页中的"配置群集"第155页中的"为群集配置应用程序"第155页中的"为群集配置资源"第156页中的"删除群集"第157页中的"升级组件而不使服务受到任何损失"第154页中的"在群集中配置服务器实例"配置群集在树组件中,展开"群集"节点.
选择群集的节点.
在"常规信息"页面中,您可以执行以下任务:单击"启动实例"以启动群集服务器实例.
单击"停止实例"以停止群集服务器实例.
单击"迁移EJB计时器"以将EJB计时器从已停止的服务器实例迁移到群集中的其他服务器实例.
等效的asadmin命令start-cluster、stop-cluster、migrate-timers第151页中的"创建群集"第152页中的"为群集创建服务器实例"第155页中的"为群集配置应用程序"第155页中的"为群集配置资源"第156页中的"删除群集"第157页中的"升级组件而不使服务受到任何损失"第156页中的"迁移EJB计时器"启动、停止和删除群集实例在树组件中,展开"群集"节点.
展开包含服务器实例的群集的节点.
单击"实例"选项卡以显示"群集服务器实例"页面.
在此页面中,您可以执行以下操作:12更多信息另请参见123使用群集第6章使用ApplicationServer群集153选中一个实例的复选框,然后单击"删除"、"启动"或"停止",以对所有指定的服务器实例执行选定的操作.
单击实例的名称,以显示"常规信息"页面.
在群集中配置服务器实例在树组件中,展开"群集"节点.
展开包含服务器实例的群集的节点.
选择服务器实例节点.
在"常规信息"页面中,您可以执行以下操作:单击"启动实例"以启动实例.
单击"停止实例"以停止正在运行的实例.
单击"JNDI浏览"以浏览正在运行的实例的JNDI树.
单击"查看日志文件",以打开服务器日志查看器.
单击"轮转日志文件",以轮转实例的日志文件.
该操作将安排日志文件以进行轮转.
实际的轮转将在下一次向日志文件写入条目时发生.
单击"恢复事务"以恢复未完成的事务.
单击"属性"选项卡,以修改实例的端口号.
单击"监视"选项卡,以更改监视属性.
第151页中的"创建群集"第153页中的"配置群集"第152页中的"为群集创建服务器实例"第155页中的"为群集配置应用程序"第155页中的"为群集配置资源"第156页中的"删除群集"第157页中的"升级组件而不使服务受到任何损失"《SunJavaSystemApplicationServer9.
1管理指南》中的"配置ApplicationServer从事务中恢复的方式"1234另请参见使用群集SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月154为群集配置应用程序在树组件中,展开"群集"节点.
选择群集的节点.
单击"应用程序"选项卡,以显示"应用程序"页面.
在此页面中,您可以执行以下操作:从"部署"下拉式列表中,选择要部署的应用程序的类型.
在显示的"部署"页面中,指定应用程序.
从"过滤器"下拉式列表中,选择要在列表中显示的应用程序的类型.
要编辑应用程序,请单击应用程序名称.
选中应用程序旁边的复选框,然后选择"启用"或"禁用"以启用或禁用用于群集的应用程序.
第151页中的"创建群集"第153页中的"配置群集"第152页中的"为群集创建服务器实例"第155页中的"为群集配置资源"第156页中的"删除群集"第157页中的"升级组件而不使服务受到任何损失"为群集配置资源在树组件中,展开"群集"节点.
选择群集的节点.
单击"资源"选项卡,以显示"资源"页面.
在此页面中,您可以执行以下操作:为群集创建新资源:从"新建"下拉式列表中,选择要创建的资源的类型.
创建资源时,请确保将群集指定为目标.
全局启用或禁用资源:选中资源旁边的复选框,然后单击"启用"或"禁用".
该操作不会删除资源.
仅显示特定类型的资源:从"过滤器"下拉式列表中,选择要在列表中显示的资源的类型.
编辑资源:单击资源名称.
123另请参见123使用群集第6章使用ApplicationServer群集155第151页中的"创建群集"第153页中的"配置群集"第152页中的"为群集创建服务器实例"第155页中的"为群集配置应用程序"第156页中的"删除群集"删除群集在树组件中,选择"群集"节点.
在"群集"页面中,选中群集名称旁边的复选框.
单击"删除".
等效的asadmin命令delete-cluster第151页中的"创建群集"第153页中的"配置群集"第152页中的"为群集创建服务器实例"第155页中的"为群集配置应用程序"第155页中的"为群集配置资源"第157页中的"升级组件而不使服务受到任何损失"迁移EJB计时器如果服务器实例非正常或意外地停止运行,则可能需要将该服务器实例上安装的EJB计时器移至群集中正在运行的服务器实例.
要完成此操作,请执行以下步骤:在树组件中,展开"群集"节点.
选择群集的节点.
在"常规信息"页面中,单击"迁移EJB计数器".
在"迁移EJB计时器"页面中:a.
从"源"下拉式列表中,选择要迁移的计时器所在的已停止的服务器实例.
另请参见123更多信息另请参见1234使用群集SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月156b.
(可选的)从"目标"下拉式列表中,选择要将计时器迁移到的正在运行的服务器实例.
如果将该字段保留为空,将随机选择一个正在运行的服务器实例.
c.
单击"确定".
停止并重新启动目标服务器实例.
如果源服务器实例正在运行或目标服务器实例未运行,则管理控制台将显示一条错误消息.
等效的asadmin命令migrate-timers第153页中的"配置群集"用于配置EJB计时器服务的设置的管理控制台联机帮助升级组件而不使服务受到任何损失在ApplicationServer中,您可以使用负载平衡器和多个群集来升级组件,而不使服务受到任何损失.
例如,组件可以是JVM、ApplicationServer或Web应用程序.
在以下情况下不能使用此方法:您更改高可用性数据库(high-availabilitydatabase,HADB)的模式.
有关更多信息,请参见第3章.
注–HADB软件随SunJavaSystemApplicationServer的ApplicationServer独立分发提供.
有关SunJavaSystemApplicationServer的可用分发的信息,请参见《SunJavaSystemApplicationServer9.
1InstallationGuide》中的"DistributionTypesandTheirComponents".
HADB功能仅在企业配置文件中可用.
有关配置文件的信息,请参见《SunJavaSystemApplicationServer9.
1管理指南》中的"用法配置文件".
您执行涉及对应用程序数据库模式的更改的应用程序升级.
注意–请同时升级群集中的所有服务器实例.
否则,可能会出现由从运行不同版本的组件的一个实例到另一个实例的会话故障转移引起的版本不匹配.
使用群集的"常规信息"页面上的"停止群集"按钮来停止其中一个群集.
升级该群集中的组件.
5更多信息另请参见12使用群集第6章使用ApplicationServer群集157使用群集的"常规信息"页面上的"启动群集"按钮来启动群集.
对其他群集逐个重复此过程.
由于一个群集中的会话决不会故障转移到另一个群集中的会话,因此不会出现由会话故障转移所引起的版本不匹配,这种故障转移是指从运行一个版本的组件的服务器实例故障转移到运行其他版本的组件的另一个服务器实例(位于其他群集中).
这样,群集就用作了它所包含的服务器实例的会话故障转移的安全边界.
第151页中的"创建群集"第153页中的"配置群集"第152页中的"为群集创建服务器实例"第155页中的"为群集配置应用程序"第155页中的"为群集配置资源"第156页中的"删除群集"34另请参见使用群集SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月158管理配置本章介绍了在ApplicationServer中添加、更改以及使用命名的服务器配置.
它包含以下小节:第159页中的"使用配置"第162页中的"使用命名配置"使用配置第159页中的"配置"第160页中的"default-config配置"第160页中的"创建实例或群集时创建的配置"第161页中的"唯一端口号和配置"配置配置是一组服务器配置信息,包括针对以下内容的设置:HTTP侦听器、ORB/IIOP侦听器、JMS代理、EJB容器、安全性、日志记录和监视功能等.
命名配置中未定义应用程序和资源.
配置存在于管理域中.
该域中的多个服务器实例或群集可以引用相同的配置,也可以有各自独立的配置.
对于群集,群集中的所有服务器实例都继承群集的配置,从而确保群集实例具有同构环境.
由于配置包含如此多的必需设置,因此请通过复制现有命名配置来创建新配置.
更改新建配置的配置设置之前,该配置与被复制的配置完全相同.
群集或实例使用配置的方法有以下三种:7第7章159独立:独立服务器实例或群集不与其他服务器实例或群集共享其配置;也就是说,其他服务器实例或群集不引用独立服务器实例或群集的命名配置.
您可以通过复制或重命名现有配置来创建独立服务器实例或群集.
共享:共享服务器实例或群集与其他服务器实例或群集共享配置;也就是说,多个实例或群集引用相同的命名配置.
您可以通过引用(而非复制)现有配置来创建共享服务器实例或群集.
群集:群集服务器实例继承群集的配置.
另请参见:第160页中的"default-config配置"第160页中的"创建实例或群集时创建的配置"第161页中的"唯一端口号和配置"第162页中的"创建命名配置"第162页中的"编辑命名配置的属性"default-config配置default-config配置是一种特殊配置,用作创建独立服务器实例或独立群集配置的模板.
群集和单个服务器实例不能引用default-config;只能复制它来创建新配置.
编辑默认配置,以确保从默认配置复制而来的新配置具有正确的初始设置.
有关更多信息,请访问:第160页中的"创建实例或群集时创建的配置"第159页中的"配置"第162页中的"创建命名配置"第162页中的"编辑命名配置的属性"第163页中的"编辑引用配置的实例的端口号"创建实例或群集时创建的配置创建新服务器实例或新群集时,可以执行以下操作之一:引用现有配置.
不添加新配置.
创建现有配置的副本.
添加服务器实例或群集时,将添加新配置.
默认情况下,在创建新群集或实例时,其配置是从default-config配置中复制的.
要从其他配置进行复制,请在创建新实例或群集时指定要复制的配置.
对于服务器实例,新配置的名称为instance_name-config.
对于群集,新配置的名称为cluster-name-config.
有关更多信息,请访问:使用配置SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月160第160页中的"default-config配置"第159页中的"配置"第162页中的"创建命名配置"第162页中的"编辑命名配置的属性"群集配置同步创建群集配置后,ApplicationServer会在域管理服务器上创建domain-root/domain-dir/config/cluster-config群集配置目录.
该目录用来同步群集中所有实例的配置.
唯一端口号和配置如果同一主机上有多个实例引用相同的配置,则每个实例必须在唯一的端口号上进行侦听.
例如,如果两个服务器实例都引用某个命名配置,该配置包含一个位于端口80上的HTTP侦听器,则端口冲突将阻止其中一个服务器实例启动.
更改用于定义端口号(各个服务器实例在这些端口号上进行侦听)的属性,从而确保各个实例使用唯一的端口.
以下原则适用于端口号设定:各个服务器实例的端口号最初是从配置继承而来的.
创建服务器实例时,如果该端口号已经被使用,则请在实例级别上覆盖继承的默认值,以防止发生端口冲突.
假定实例正在共享配置.
该配置具有端口号n.
如果使用相同的配置在计算机上创建新实例,则为新实例指定的端口号为n+1(如果此端口号可用).
如果此端口号不可用,将选择n+1后下一个可用的端口.
如果您更改了配置的端口号,则继承该端口号的服务器实例将自动继承更改后的端口号.
如果您更改了实例的端口号,然后又更改了配置的端口号,则实例的端口号将保持不变.
有关更多信息,请访问:第163页中的"编辑引用配置的实例的端口号"第162页中的"编辑命名配置的属性"第159页中的"配置"使用配置第7章管理配置161使用命名配置第162页中的"创建命名配置"第162页中的"编辑命名配置的属性"第163页中的"编辑引用配置的实例的端口号"第164页中的"查看命名配置的目标"第164页中的"删除命名配置"创建命名配置在树组件中,选择"配置"节点.
在"配置"页面中,单击"新建".
在"创建配置"页面中,为配置输入唯一名称.
选择要复制的配置.
default-config配置是创建独立服务器实例或独立群集时所使用的默认配置.
等效的asadmin命令copy-config第159页中的"配置"第160页中的"default-config配置"第162页中的"编辑命名配置的属性"第163页中的"编辑引用配置的实例的端口号"第164页中的"查看命名配置的目标"第164页中的"删除命名配置"编辑命名配置的属性下表介绍了配置的预定义属性.
预定义属性是端口号.
有效的端口值为1–65535.
在UNIX上,创建在端口1–1024上进行侦听的套接字需要超级用户权限.
如果系统中存在多个服务器实例,则它们各自的端口号必须是唯一的.
1234更多信息另请参见使用命名配置SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月162属性名称说明HTTP_LISTENER_PORThttp-listener-1的端口号.
HTTP_SSL_LISTENER_PORThttp-listener-2的端口号.
IIOP_SSL_LISTENER_PORTIIOP侦听器SSL侦听的IIOP连接的ORB侦听器端口.
IIOP_LISTENER_PORTorb-listener-1侦听的IIOP连接的ORB侦听器端口.
JMX_SYSTEM_CONNECTOR_PORTJMX连接器侦听的端口号.
IIOP_SSL_MUTUALAUTH_PORTIIOP侦听器SSL_MUTUALAUTH侦听的IIOP连接的ORB侦听器端口.
编辑命名配置的属性在树组件中,展开"配置"节点.
选择命名配置的节点.
在"配置系统属性"页面中,选择是否启用动态重新配置.
如果已启用,则对配置所作的更改将应用于服务器实例,而无需重新启动服务器.
根据需要添加、删除或修改属性.
要编辑与配置关联的所有实例的属性的当前值,请单击"实例值".
等效的asadmin命令set第159页中的"配置"第162页中的"创建命名配置"第164页中的"查看命名配置的目标"第164页中的"删除命名配置"编辑引用配置的实例的端口号每个引用命名配置的实例最初都从该配置继承端口号.
由于系统中的端口号必须是唯一的,因而可能需要覆盖继承的端口号.
在树组件中,展开"配置"节点.
12345更多信息另请参见1使用命名配置第7章管理配置163选择命名配置的节点.
管理控制台将显示"配置系统属性"页面.
单击要编辑的实例变量旁边的"实例值".
例如,如果单击实例变量HTTP-LISTENER-PORT旁边的"实例值",将看到引用该配置的每个服务器实例的HTTP-LISTENER-PORT的值.
根据需要更改该值,然后单击"保存".
等效的asadmin命令set第161页中的"唯一端口号和配置"第159页中的"配置"第162页中的"编辑命名配置的属性"查看命名配置的目标"配置系统属性"页面将显示使用该配置的所有目标的列表.
对于群集配置,目标是群集.
对于实例配置,目标是实例.
在树组件中,展开"配置"节点.
选择命名配置的节点.
第161页中的"唯一端口号和配置"第159页中的"配置"第162页中的"创建命名配置"第162页中的"编辑命名配置的属性"第164页中的"删除命名配置"删除命名配置在树组件中,选择"配置"节点.
在"配置"页面中,选中要删除的命名配置的复选框.
不能删除default-config配置.
单击"删除".
234更多信息另请参见12另请参见123使用命名配置SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月164等效的asadmin命令delete-config第159页中的"配置"第162页中的"创建命名配置"第162页中的"编辑命名配置的属性"第164页中的"查看命名配置的目标"更多信息另请参见使用命名配置第7章管理配置165166配置节点代理本章介绍了ApplicationServer中的节点代理.
它包含以下小节:第167页中的"什么是节点代理"第168页中的"节点代理出现故障后的服务器实例行为"第169页中的"部署节点代理"第171页中的"同步节点代理和域管理服务器"第175页中的"查看节点代理日志"第175页中的"处理节点代理"什么是节点代理节点代理是托管服务器实例的每台计算机(包括托管域管理服务器(DomainAdministrationServer,DAS)的计算机)上都需要的轻量级进程.
节点代理可以:按照域管理服务器的指示启动、停止、创建和删除服务器实例.
重新启动有故障的服务器实例.
提供有故障的服务器的日志文件视图.
使每个服务器实例的本地配置系统信息库与域管理服务器的中心系统信息库同步.
每个本地系统信息库只包含与该服务器实例或节点代理相关的信息.
下图说明了节点代理的整个体系结构:8第8章167安装ApplicationServer时,默认情况下将使用该计算机的主机名创建节点代理.
必须先在本地计算机上手动启动节点代理之后,该节点代理才能运行.
即使未运行节点代理,您也可以创建和删除服务器实例.
但是,节点代理必须处于运行状态,您才能用它来启动和停止服务器实例.
一个节点代理服务一个域.
如果一台计算机托管在多个域中运行的实例,则该计算机必须运行多个节点代理.
节点代理出现故障后的服务器实例行为节点代理可能会因某些原因而意外停止,例如软件故障或其他错误.
在这种情况下,将不再管理节点代理所管理的所有服务器实例.
但是,此服务器实例继续运行,并且DAS仍可访问它们.
有关服务器实例的信息仍可通过ApplicationServer管理接口获得,并且仍可访问在服务器实例上部署的应用程序.
节点代理出现故障后的服务器实例行为SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月168如果重新启动节点代理,则未管理的服务器实例仍处于未管理状态.
节点代理不会恢复对这些服务器实例的管理.
如果未管理的服务器实例因某些原因意外停止,例如软件故障或其他错误,则节点代理无法重新启动该服务器实例.
如果未管理的服务器实例必须继续运行,则无法恢复节点代理对服务器实例的管理.
恢复对未管理的服务器实例管理的唯一方法是,在重新启动节点代理后,先停止该服务器实例,然后再重新启动.
部署节点代理可以使用以下两种方式配置和部署节点代理:联机部署.
如果您已知道域的拓扑并且已经具有用于该域的硬件,则请使用联机部署.
脱机部署.
如果是在设置整个环境之前配置域和服务器实例,则请使用脱机部署.
联机部署节点代理如果您已经知道域的拓扑并且具有用于该域的硬件,则使用联机部署.
下图总结了节点代理的联机部署:安装并启动域管理服务器.
启动并运行域管理服务器后,便可以开始进行联机或脱机部署.
在将要托管服务器实例的每台计算机上安装节点代理.
使用安装程序或asadmincreate-node-agent命令.
如果某台计算机需要多个节点代理,请使用asadmincreate-node-agent命令来创建这些节点代理.
有关更多信息,请参见第177页中的"创建节点代理".
开始之前1部署节点代理第8章配置节点代理169使用asadminstart-node-agent命令启动节点代理.
启动之后,节点代理将与域管理服务器进行通信(DAS).
当节点代理到达DAS时,将在DAS上创建该节点代理的配置.
具备了配置之后,即可在管理控制台中查看该节点代理.
有关更多信息,请参见第179页中的"启动节点代理".
配置域:创建服务器实例和群集,并部署应用程序.
脱机部署节点代理在配置各个本地计算机之前,使用脱机部署在域中部署节点代理.
下图总结了脱机部署.
安装并启动域管理服务器.
启动并运行域管理服务器后,便可以开始进行联机或脱机部署.
在域管理服务器中创建占位符节点代理.
有关更多信息,请参见第176页中的"创建节点代理占位符".
创建服务器实例和群集并部署应用程序.
创建服务器实例时,请确保指定尚未使用的端口号.
因为正在进行脱机配置,所以域无法在创建时检查端口冲突.
23开始之前12部署节点代理SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月170在将要托管服务器实例的每台计算机上安装节点代理.
使用安装程序或asadmincreate-node-agent命令.
节点代理的名称必须与先前创建的占位符节点代理的名称相同.
有关更多信息,请参见第177页中的"创建节点代理".
使用asadminstart-node-agent命令启动节点代理.
节点代理启动之后,它将绑定到域管理服务器并创建先前已与该节点代理相关联的所有服务器实例.
有关更多信息,请参见第179页中的"启动节点代理".
同步节点代理和域管理服务器因为配置数据既存储在域管理服务器的系统信息库(中心系统信息库)中,又高速缓存在节点代理的本地计算机中,所以这两者必须同步.
用户应始终通过管理工具执行显式操作来实现高速缓存的同步.
本节包括以下主题:第171页中的"节点代理同步"第172页中的"服务器实例同步"第173页中的"同步库文件"第174页中的"独特的设置和配置管理"第174页中的"同步大型应用程序"节点代理同步第一次启动节点代理时,该节点代理将向域管理服务器(DAS)发送一个请求,以获得中心系统信息库中的最新信息.
当节点代理成功地与DAS取得联系并获得配置信息时,该节点代理即绑定到该DAS.
注–默认情况下,asadminstart-node-agent命令将自动启动未与DAS同步的远程服务器实例.
如果要启动与DAS所管理的中心系统信息库同步的远程服务器实例,请指定asadminstart-node-agent命令的--startinstances=false选项.
然后使用asadminstart-instance命令启动远程服务器实例.
如果您在DAS上创建了占位符节点代理,则第一次启动节点代理时,该节点代理将从DAS的中心系统信息库中获取其配置.
初始启动节点代理过程中,如果由于没有运行DAS而使该节点代理无法到达DAS,则该节点代理将停止并保持未绑定状态.
如果在域中更改了节点代理的配置,这些更改将在节点代理运行时自动与本地计算机中的节点代理进行通信.
34同步节点代理和域管理服务器第8章配置节点代理171如果删除了DAS中的一个节点代理配置,则下次该节点代理进行同步时将停止它自身并将自身标记为待删除状态.
使用本地asadmindelete-node-agent命令手动将其删除.
服务器实例同步如果使用管理控制台或asadmin工具明确启动了服务器实例,则该服务器实例将与中心系统信息库同步.
如果此同步失败,则服务器实例不会启动.
如果节点代理未通过向管理控制台或asadmin工具发送显式请求来启动服务器实例,将不同步该服务器实例的系统信息库高速缓存.
该服务器实例将以存储在其高速缓存中的配置运行.
您不能在远程服务器实例的高速缓存中添加或删除文件.
远程服务器实例的配置被视为高速缓存(nodeagents/na1/server1下的所有文件)并由ApplicationServer所有.
在极少数情况下,如果用户删除了远程服务器实例的所有文件并重新启动节点代理,则将重新创建远程服务器实例(例如,server1)并同步所有必需的文件.
ApplicationServer将保持以下文件和目录的同步.
表8–1在远程服务器实例之间同步的文件和目录文件或目录说明applications所有已部署的应用程序.
已同步的此目录(及子目录)的部分取决于服务器实例中引用的应用程序.
节点代理不会同步任何应用程序,因为它并没有引用任何应用程序.
config包含整个域的配置文件.
此目录中的所有文件均被同步,但运行时临时文件(例如admch、admsn、secure.
seed、timestamp和__timer_service_shutdown__.
dat)除外.
config/config_name所有实例共享的存储文件的目录(使用名为config_name的配置).
对于每个在domain.
xml中定义的配置,都存在这样一个目录.
此目录中的所有文件均同步到使用config_name的服务器实例.
config/config_name/lib/ext可向其中放入Java扩展类(如zip或jar归档文件)的文件夹.
此文件夹供部署到服务器实例(使用名为config_name的配置)的应用程序使用.
这些jar文件使用Java扩展机制装入.
docrootHTTP文档根目录.
在现有(outofthebox)配置中,域中的所有服务器实例均使用相同的docroot.
需要对虚拟服务器的docroot属性进行配置,以使服务器实例使用不同的docroot.
generated已生成的JavaEE应用程序文件和模块文件,例如EJB桩模块、已编译的JSP类和安全策略文件.
此目录与applications目录同步.
因此,仅同步与服务器实例所引用的应用程序对应的目录.
同步节点代理和域管理服务器SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月172表8–1在远程服务器实例之间同步的文件和目录(续)文件或目录说明lib、lib/classes可以丢弃应用程序(部署到整个域)使用的通用Java类文件或jar和zip归档文件所在的文件夹.
这些类使用ApplicationServer的类加载器装入.
类加载器的装入顺序为:lib/classes、lib/*.
jar和lib/*.
zip.
lib/ext可以丢弃应用程序(部署到整个域)使用的Java扩展类(如zip或jar归档文件)所在的文件夹.
这些jar文件使用Java扩展机制装入.
lib/applibs将相关jar放在domains/lib/applibs下,并通过libraries选项指定jar文件的相对路径.
例如,asadmindeploy--librariescommons-coll.
jar,X1.
jarfoo.
earjava-web-start此目录(及子目录)的各部分根据服务器实例引用的应用程序进行同步.
同步库文件可以使用应用程序的--libraries部署时间属性来指定应用程序的运行时相关项.
指定相对路径(仅jar名称)后,ApplicationServer会尝试在domain-dir/lib/applibs中查找指定的库.
为使库可用于整个域,可以将JAR文件放在domain-dir/lib或domain-dir/lib/classes中.
(有关更多信息,请参见《SunJavaSystemApplicationServer9.
1Developer'sGuide》中的"UsingtheCommonClassLoader".
这种情况通常适用于JDBC驱动程序以及域中所有应用程序共享的其他实用程序库.
为了在群集范围或独立服务器范围中使用,请将jar复制到domain-dir/domain1/config/xyz-config/lib目录中.
接下来,将jar添加在xyz-config的classpath-suffix或classpath-prefix元素中.
这将针对所有使用xyz-config的服务器实例同步jar.
具体概括如下:domains/domain1/lib-用于域范围,使用通用类加载器,自动添加jar.
domains/domain1/config/cluster1、config/lib-用于配置范围,更新classpath-prefix或classpath-suffix.
domains/domain1/lib/applibs-用于应用程序范围,自动添加到应用程序类加载器.
domains/domain1/config/cluster1、config/lib/ext-自动添加到http://java.
sun.
com/j2se/1.
5.
0/docs/guide/extensions/extensions.
html.
同步节点代理和域管理服务器第8章配置节点代理173独特的设置和配置管理配置文件(位于domains/domain1/config下)在整个域中进行同步.
如果要为独立服务器实例(server1)使用的server1-config自定义server.
policy文件,请将修改后的server.
policy文件放在domains/domain1/config/server1-config目录下.
此修改后的server.
policy文件仅针对独立服务器实例server1进行同步.
应谨记更新jvm-option.
例如:.
.
.
-Djava.
security.
policy=${com.
sun.
aas.
instanceRoot}/config/server1-config/server.
policy同步大型应用程序当环境中有大型应用程序要进行同步或者可用内存受到限制时,您可以调整JVM选项以限制内存的使用.
这种调整将减少收到内存不足错误的可能性.
实例同步JVM使用的是默认设置,但您可以配置JVM选项来更改这些设置.
可以使用INSTANCE-SYNC-JVM-OPTIONS属性设置JVM选项.
设置属性的命令为:asadminsetdomain.
node-agent.
node_agent_name.
property.
INSTANCE-SYNC-JVM-OPTIONS="JVM_options"例如:asadminsetdomain.
node-agent.
node0.
property.
INSTANCE-SYNC-JVM-OPTIONS="-Xmx32m-Xss2m"在此示例中,节点代理为node0,JVM选项为-Xmx32m-Xss2m.
有关更多信息,请参见http://java.
sun.
com/docs/hotspot/VMOptions.
html.
注–更改INSTANCE-SYNC-JVM-OPTIONS属性后,请重新启动节点代理,因为在节点代理的配置中添加或更改了某个属性时节点代理并不会自动同步.
使用doNotRemoveList标志如果应用程序需要在ApplicationServer同步的目录(applications、generated、docroot、config、lib、java-web-start)中存储和读取文件,请使用doNotRemoveList标志.
此属性接受以逗号分隔的文件或目录列表.
即使应用程序相关文件不存在于DAS所管理的中心系统信息库中,在服务器启动期间也不会删除这些文件.
如果中心系统信息库中存在相同的文件,则在同步期间将会覆写这些文件.
可以使用INSTANCE-SYNC-JVM-OPTIONS属性传入doNotRemoveList属性.
例如:同步节点代理和域管理服务器SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月174.
.
.
/logs,generated/mylogdir"/>查看节点代理日志每个节点代理都有自己的日志文件.
如果使用节点代理时遇到问题,请参见位于以下位置的日志文件:node_agent_dir/node_agent_name/agent/logs/server.
log.
有时,节点代理日志会指示您查看服务器的日志以获得关于所出现的问题的详细消息.
服务器日志位于:node_agent_dir/node_agent_name/server_name/logs/server.
lognode_agent_dir的默认位置为install_dir/nodeagents.
处理节点代理第176页中的"如何执行节点代理任务"第176页中的"节点代理占位符"第176页中的"创建节点代理占位符"第177页中的"创建节点代理"第179页中的"启动节点代理"第179页中的"停止节点代理"第180页中的"删除节点代理"第180页中的"查看常规节点代理信息"第181页中的"删除节点代理配置"第182页中的"编辑节点代理配置"第182页中的"编辑节点代理区域"第182页中的"编辑节点代理的JMX侦听器"处理节点代理第8章配置节点代理175如何执行节点代理任务有些节点代理任务要求您在运行节点代理的系统上从本地使用asadmin工具.
可以使用管理控制台或asadmin远程执行其他任务.
下表总结了这些任务以及执行这些任务的方式:表8–2如何执行节点代理任务任务管理控制台asadmin命令在域管理服务器中创建节点代理占位符"创建节点代理占位符"页面create-node-agent-config创建节点代理不可用create-node-agent启动节点代理不可用start-node-agent停止节点代理不可用stop-nodeagent从域管理服务器中删除节点代理配置"节点代理"页面delete-node-agent-config从本地计算机中删除节点代理不可用delete-node-agent编辑节点代理配置"节点代理"页面set列出节点代理"节点代理"页面list-node-agents节点代理占位符在没有节点代理的情况下,可以使用节点代理占位符创建和删除服务器实例.
节点代理占位符是在节点代理的本地系统中创建节点代理本身之前,在域管理服务器(DomainAdministrationServer,DAS)上创建的.
有关创建节点代理占位符的信息,请参见第176页中的"创建节点代理占位符".
注–当您创建占位符节点代理之后,即可使用该占位符节点代理在域中创建实例.
但是,在启动实例之前,您必须先使用asadmin命令在实例将要驻留的计算机上从本地创建并启动实际的节点代理.
请参见第177页中的"创建节点代理"和第179页中的"启动节点代理".
创建节点代理占位符节点代理是在远程计算机上运行的服务器实例的本地监视程序.
因此,必须在托管服务器实例的计算机上创建节点代理.
为满足此要求,您可以使用管理控制台仅为节点代理创建占位符.
此占位符是尚不存在的节点代理的节点代理配置.
处理节点代理SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月176创建一个占位符之后,请在托管节点代理的计算机中使用asadmin命令create-node-agent完成节点代理的创建.
有关更多信息,请参见第177页中的"创建节点代理".
有关创建和使用节点代理所涉及的一系列步骤,请参见第169页中的"部署节点代理".
在树组件中,选择"节点代理"节点.
在"节点代理"页面中,单击"新建".
在"当前节点代理占位符"页面中为新节点代理输入一个名称.
在域中的所有节点代理名称、服务器实例名称、群集名称和配置名称中,此名称必须是唯一的.
单击"确定".
新节点代理的占位符将列出在"节点代理"页面中.
等效的asadmin命令create-node-agent-config创建节点代理要创建节点代理,请在运行节点代理的本地计算机上运行asadmin命令create-node-agent.
节点代理的默认名称为创建节点代理时所在的主机的名称.
如果已创建节点代理占位符,请使用与节点代理占位符相同的名称来创建相应的节点代理.
如果尚未创建节点代理占位符,而DAS已启动并且可访问,则create-node-agent命令还将在DAS上创建节点代理配置(占位符).
有关命令语法的完整说明,请参见该命令的联机帮助.
可以将DAS和节点代理配置为安全地进行通信.
在这种情况下,启动节点代理时,节点代理必须验证DAS发送给它的证书.
为验证证书,节点代理在其本地truststore(受主密码保护)中查找证书.
要使节点代理可以在不提示用户输入密码的情况下启动,请在创建节点代理时将节点代理的主密码保存到文件中.
如果不将节点代理的主密码保存到文件中,则每当用户启动节点代理时都提示用户输入主密码.
1234更多信息处理节点代理第8章配置节点代理177注–在某些情况下,必须指定可以通过DNS访问的主机的名称.
有关更多信息,请参见第178页中的"为可通过DNS访问的主机创建节点代理".
创建节点代理键入以下命令:asadmincreate-node-agent--hostdas-host--portport-no--userdas-user[--savemasterpassword=true]nodeagent要使节点代理可以在不提示用户输入密码的情况下启动,请将节点代理的主密码保存到文件中.
要将节点代理的主密码保存到文件中,请在用于创建节点代理的命令中将--savemasterpassword选项设置为true.
如果将--savemasterpassword设置为true,将提示您输入主密码.
否则,不提示您输入密码.
--hostdas-host指定运行域管理服务器(DomainAdministrationServer,DAS)的主机名称.
-portport-no指定用于管理域的HTTP或HTTPS端口号.
--userdas-user指定DAS用户.
nodeagent指定要创建的节点代理名称.
此名称在域中必须是唯一的.
创建节点代理asadmincreate-node-agent--hostmyhost--port4848--useradminnodeagent1此命令创建一个名为nodeagent1的节点代理.
节点代理与其进行通信的DAS正在计算机myhost上运行.
用于管理代理域的HTTP端口是4848.
DAS用户的名称是admin.
为可通过DNS访问的主机创建节点代理在以下情况下,运行DAS的主机必须可通过DNS进行访问:各个域跨子网边界,即节点代理和DAS在不同的域中,例如sun.
com和java.
com.
正在使用其主机名未在DNS中注册的DHCP计算机.
在用于创建域的create-domain命令中,指定--domainpropertiesdomain.
hostName=das-host-name选项.
das-host-name是运行DAS的计算机的名称.
在用于创建节点代理的create-node-agent命令中,指定以下选项:示例8–112处理节点代理SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月178--hostdas-host-name,其中das-host-name是在步骤1中指定的DNS主机名.
此选项与文件as-install/nodeagents/nodeagentname/agent/config/das.
properties中的agent.
das.
host属性相对应.
--agentpropertiesremoteclientaddress=node-agent-host-name,其中node-agent-host-name是DAS用来连接到节点代理的的主机名.
此选项与文件as-install/nodeagents/nodeagentname/agent/config/nodeagent.
properties中的agent.
client.
host属性相对应.
通过更新hosts文件指定主机另外一种解决方案是更新特定于平台的hosts主机名/IP解析文件,从而将主机名解析为正确的IP地址.
但是,使用DHCP重新连接时,可能会为您分配不同的IP地址.
在这种情况下,您必须更新每个服务器中的主机解析文件.
启动节点代理节点代理必须先运行才能管理服务器实例.
通过在节点代理所驻留的系统中以本地方式运行asadmin命令start-node-agent来启动节点代理.
有关命令语法的完整说明,请参见该命令的联机帮助.
例如:asadminstart-node-agent--useradmin--startinstances=falsenodeagent1其中,admin为管理用户,nodeagent1为要启动的节点代理.
默认情况下,重新启动节点代理时,节点代理实例的高速缓存系统信息库不与中心系统信息库同步.
要强制将实例的高速缓存系统信息库与中心系统信息库同步,请将asadminstart-node-agent命令中的--syncinstances选项设置为true.
注–如果将--syncinstances选项设置为true,在重新启动节点代理时将同步所有实例的系统信息库.
重新启动节点代理后,使用asadminstart-instance命令启动服务器实例.
停止节点代理要停止正在运行的节点代理,请在该节点代理驻留的系统中运行asadmin命令stop-node-agent.
stop-node-agent命令将停止节点代理所管理的所有服务器实例.
更多信息处理节点代理第8章配置节点代理179有关命令语法的完整说明,请参见该命令的联机帮助.
例如:asadminstop-node-agentnodeagent1其中,nodeagent1为节点代理的名称.
删除节点代理删除节点代理之前,必须先停止节点代理.
您还可以删除从未启动过或者从未成功地与域管理服务器连接(即尚未绑定)的节点代理.
要删除节点代理文件,请在该节点代理驻留的系统中运行asadmin命令delete-node-agent.
有关命令语法的完整说明,请参见该命令的联机帮助.
例如:asadmindelete-node-agentnodeagent1其中,nodeagent1是节点代理.
删除节点代理时,还必须使用管理控制台或asadmindelete-node-agent-config命令从域管理服务器中删除该节点代理的配置.
查看常规节点代理信息在树组件中,选择"节点代理"节点.
单击一个节点代理的名称.
如果节点代理已经存在但并未在此处显示,请在节点代理的主机上使用asadminstart-node-agent来启动该节点代理.
请参见第179页中的"启动节点代理"检查节点代理的主机名.
如果主机名为"未知主机",则该节点代理没有同域管理服务器(DomainAdministrationServer,DAS)进行初始联系.
检查节点代理的状态.
状态可以为:正在运行:已正确创建节点代理,并且当前该节点代理正在运行.
1234处理节点代理SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月180未在运行:已在本地计算机中创建了节点代理,但该节点代理从未启动过,或启动过但已停止.
等待会合:节点代理是从未在本地计算机中创建的占位符.
请参见第177页中的"创建节点代理"和第179页中的"启动节点代理".
选择启动节点代理时是否启动实例.
选择"是",将在启动节点代理时自动启动与该节点代理关联的服务器实例.
选择"否"以手动启动这些实例.
确定节点代理是否已同域管理服务器进行了联系.
如果节点代理从未与域管理服务器进行过联系,则该节点代理从未被成功启动过.
管理与节点代理关联的服务器实例.
如果节点代理正在运行,则通过单击实例名称旁边的复选框并单击"启动"或"停止"来启动或停止实例.
删除节点代理配置通过管理控制台,只能删除域中的节点代理配置,而不能删除实际的节点代理.
要删除节点代理本身,请在该节点代理的本地计算机中运行asadmin命令delete-node-agent.
有关更多信息,请参见第180页中的"删除节点代理".
删除节点代理配置之前,必须停止该节点代理并且该节点代理不能有任何关联的实例.
要停止节点代理,请使用asadmin命令stop-node-agent.
有关更多信息,请参见第179页中的"停止节点代理".
在树组件中,选择"节点代理"节点.
在"节点代理"页面中,选中要删除的节点代理旁边的复选框.
单击"删除".
等效的asadmin命令delete-node-agent-config567123更多信息处理节点代理第8章配置节点代理181编辑节点代理配置在树组件中,展开"节点代理"节点.
选择要编辑的节点代理配置.
选中"在启动时启动实例"以在代理启动时启动代理的服务器实例.
您还可以从此页面手动启动和停止实例.
如果此配置用于占位符节点代理,则使用asadmincreate-node-agent创建实际的节点代理时,实际的节点代理将使用此配置.
有关创建节点代理的信息,请参见第177页中的"创建节点代理".
如果此配置是现有节点代理的配置,则将自动同步此节点代理配置信息.
编辑节点代理区域必须为连接到节点代理的用户设置验证区域.
只有管理用户才能访问节点代理.
在树组件中,展开"节点代理"节点.
选择要编辑的节点代理配置.
单击"验证区域"选项卡.
在"节点代理编辑区域"页面中,输入一个区域.
默认区域为admin-realm,它是在您创建节点代理时创建的.
要使用其他区域,请用新区域替换由域控制的所有组件中的区域,否则这些组件将无法正常通信.
在"类名"字段中,指定实现该区域的Java类.
添加需要的所有属性.
验证区域需要特定于提供商的属性,这些属性会因特定实现的需求而有所不同.
编辑节点代理的JMX侦听器节点代理使用JMX与域管理服务器通信.
因此,该节点代理必须具有侦听JMX请求的端口和其他侦听器信息.
在树组件中,展开"节点代理"节点.
1231234561处理节点代理SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月182选择要编辑的节点代理配置.
单击"JMX"选项卡.
在"地址"字段中,输入IP地址或主机名.
如果侦听器使用唯一端口值侦听服务器的所有IP地址,请输入0.
0.
0.
0.
否则,请输入此服务器的有效IP地址.
在"端口"字段中,键入节点代理的JMX连接器将要侦听的端口.
如果IP地址为0.
0.
0.
0,则端口号必须唯一.
在"JMX协议"字段中,键入JMX连接器支持的协议.
默认值为rmi_jrmp.
单击"接受所有地址"旁边的复选框以允许连接到所有IP地址.
节点代理将侦听与网卡相关联的特定IP地址或侦听所有IP地址.
如果接受所有地址,则会将值0.
0.
0.
0放入"侦听主机地址"属性中.
在"区域名称"字段中,键入为侦听器处理验证的区域的名称.
在此页面的"安全性"部分中,将侦听器配置为使用SSL安全性、TLS安全性或同时使用SSL和TLS安全性.
要设置安全侦听器,请执行以下操作:在"安全性"字段中选中"启用"框.
默认情况下,启用"安全性".
设置客户机验证.
如果需要客户机在使用此侦听器时自行向服务器进行验证,请在"客户机验证"字段中选中"启用"框.
输入证书昵称.
在"证书昵称"字段中输入现有服务器密钥对和证书的名称.
有关使用证书和SSL的信息,请参见管理控制台联机帮助.
在"SSL3/TLS"部分:a.
选取要在侦听器上启用的安全协议.
必须选取SSL3或TLS,或同时选取两者.
23456789101112处理节点代理第8章配置节点代理183b.
选取协议所使用的加密算法套件.
要启用所有加密算法套件,请选取"所有支持的加密算法套件".
单击"保存".
13处理节点代理SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月184配置高可用性会话持久性和故障转移本章介绍了如何启用和配置高可用性会话持久性.
第185页中的"会话持久性和故障转移概述"第187页中的"设置高可用性会话持久性"第189页中的"HTTP会话故障转移"第194页中的"有状态会话Bean故障转移"会话持久性和故障转移概述ApplicationServer通过HTTP会话数据和有状态会话Bean(StateFulSessionBean,SFSB)会话数据的故障转移提供高可用性会话持久性.
故障转移意味着如果服务器实例或硬件发生故障,另一个服务器实例将接管分布式会话.
要求分布式会话可以在多个SunJavaSystemApplicationServer实例中运行,如果:每个服务器实例都可以访问相同的会话状态数据.
ApplicationServer为HTTP会话和有状态会话Bean数据提供了以下类型的高可用性存储:群集中其他服务器上的内存中复制.
对于群集配置文件,默认情况下启用内存中复制.
使用内存中复制要求启用组管理服务(GroupManagementService,GMS).
有关GMS的更多信息,请参见第149页中的"组管理服务".
如果群集中的服务器实例位于不同的计算机上,请确保满足以下先决条件:要确保GMS和内存中复制正常工作,这些计算机必须在同一子网上.
要确保内存中复制正常工作,必须同步群集中所有计算机上的系统时钟使其尽可能接近.
9第9章185高可用性数据库(High-availabilitydatabase,HADB).
有关如何启用此数据库的信息,请参见configure-ha-cluster(1).
注–HADB软件随SunJavaSystemApplicationServer的ApplicationServer独立分发提供.
有关SunJavaSystemApplicationServer的可用分发的信息,请参见《SunJavaSystemApplicationServer9.
1InstallationGuide》中的"DistributionTypesandTheirComponents".
HADB功能仅在企业配置文件中可用.
有关配置文件的信息,请参见《SunJavaSystemApplicationServer9.
1管理指南》中的"用法配置文件".
每个服务器实例上均部署有相同的可分布Web应用程序.
web.
xml部署描述符文件的web-app元素中必须包含distributable元素.
Web应用程序使用高可用性会话持久性.
如果将非可分布的Web应用程序配置为使用高可用性会话持久性,服务器会将错误写入日志文件.
必须使用deploy或deploydir命令并且将--availabilityenabled选项设置为true来部署Web应用程序.
有关这些命令的更多信息,请参见deploy(1)和deploydir(1).
限制会话故障转移时,将丢失所有对打开文件或网络连接的引用.
编码应用程序时必须考虑到此限制.
您只能将某些对象绑定到支持故障转移的分布式会话中.
与Servlet2.
4规范不同,如果将不支持故障转移的对象类型绑定到分布式会话中,SunJavaSystemApplicationServer不会抛出IllegalArgumentException.
您可以将以下对象绑定到支持故障转移的分布式会话中:所有EJB组件的本地主引用和对象引用.
共存的无状态会话、有状态会话或实体Bean引用.
分布式无状态会话、有状态会话或实体Bean引用.
InitialContext和java:comp/env的JNDI上下文.
UserTransaction对象.
但是,如果从未重新启动失败的实例,则会丢失所有就绪的全局事务,并且可能无法正确回滚或提交这些事务.
可序列化的Java类型.
您不能将以下对象类型绑定到支持故障转移的会话中:JDBC数据源Java消息服务(JavaMessageService,JMS)ConnectionFactory和Destination对象会话持久性和故障转移概述SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月186JavaMailTM会话连接工厂受管对象Web服务引用对于这些对象,故障转移通常不起作用.
但是,在某些情况下故障转移也可能发挥作用,例如,如果对象为可序列化对象.
设置高可用性会话持久性本节介绍了如何设置高可用性会话持久性,其中包括以下主题:第187页中的"设置高可用性会话持久性"第188页中的"启用会话可用性"设置高可用性会话持久性高可用性会话持久性与动态部署、动态重新装入和自动部署不兼容.
这些功能适用于开发环境而不适用于生产环境,因此您必须在启用HA会话持久性之前禁用它们.
有关如何禁用这些功能的信息,请参见《SunJavaSystemApplicationServer9.
1ApplicationDeploymentGuide》.
创建ApplicationServer群集.
有关更多信息,请参见第151页中的"创建群集".
如果要使用HADB存储会话状态数据,请为群集创建HADB数据库.
注–HADB软件随SunJavaSystemApplicationServer的ApplicationServer独立分发提供.
有关SunJavaSystemApplicationServer的可用分发的信息,请参见《SunJavaSystemApplicationServer9.
1InstallationGuide》中的"DistributionTypesandTheirComponents".
HADB功能仅在企业配置文件中可用.
有关配置文件的信息,请参见《SunJavaSystemApplicationServer9.
1管理指南》中的"用法配置文件".
如果要将群集中其他服务器上的内存中复制用于会话状态数据,请省略此步骤.
有关创建HADB数据库的更多信息,请参见configure-ha-cluster(1).
为群集设置HTTP负载平衡.
有关更多信息,请参见第122页中的"设置HTTP负载平衡".
启用所需的应用程序服务器实例和Web或EJB容器的可用性.
然后配置会话持久性设置.
选择以下方法之一:开始之前1234设置高可用性会话持久性第9章配置高可用性会话持久性和故障转移187使用管理控制台.
请参见第189页中的"启用服务器实例的可用性".
使用asadmin命令行实用程序.
请参见set(1)和configure-ha-persistence(1).
重新启动群集中的每个服务器实例.
如果实例当前正在处理请求,请在重新启动该实例前停止它,这样,它就有足够的时间来处理它正在处理的请求.
有关更多信息,请参见第133页中的"禁用(停止)服务器实例或群集".
启用所有特定SFSB所必需的可用性.
选择需要进行会话状态检查点操作的方法.
请参见第197页中的"为单个Bean配置可用性".
如果要使每个Web模块具有高可用性,请使这些模块可分布.
在部署期间启用各个应用程序、Web模块或EJB模块的可用性.
请参见第196页中的"为单个应用程序或EJB模块配置可用性".
在管理控制台中,选中"启用高可用性"框,或结合使用asadmindeploy命令和设置为true的--availabilityenabled选项.
启用会话可用性您可以启用五个不同范围(从最高到最低)的会话可用性:1.
服务器实例,默认情况下已启用.
启用服务器实例的会话可用性意味着此服务器实例上运行的所有应用程序都会具有高可用性会话持久性.
有关说明,请参见下一节第189页中的"启用服务器实例的可用性".
2.
容器(Web或EJB),默认情况下已启用.
有关启用容器级别的可用性的信息,请参见:第190页中的"为Web容器配置可用性"第195页中的"为EJB容器配置可用性"3.
应用程序,默认情况下已禁用.
4.
独立的Web或EJB模块,默认情况下已禁用.
5.
单个SFSB,默认情况下已禁用.
要启用指定范围内的可用性,您必须同时启用所有更高级别的可用性.
例如,要启用应用程序级别的可用性,必须在服务器实例级别和容器级别启用可用性.
给定级别的默认值是其上一级别的设置值.
例如,如果已启用容器级别的可用性,则默认情况下,启用应用程序级别的可用性.
如果禁用了服务器实例级别的可用性,则启用其他任何级别的可用性都不生效.
如果启用了服务器实例级别的可用性,则将启用所有级别的可用性,除非已明确禁用.
5678设置高可用性会话持久性SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月188启用服务器实例的可用性要启用服务器实例的可用性,请使用asadminset命令将配置的availability-service.
availability-enabled属性设置为true.
例如,如果config1为配置名称:asadminset--useradmin--passwordfilepassword.
txt--hostlocalhost--port4849config1.
availability-service.
availability-enabled="true"使用管理控制台启用服务器实例的可用性在树组件中,展开"配置"节点.
展开要编辑的配置的节点.
选择"可用性服务"节点.
在"可用性服务"页面中,选中"可用性服务"框以启用实例级别的可用性.
要禁用可用性,请取消选中该框.
此外,如果更改了用于连接HADB的JDBC资源以获得会话持久性,您还可以更改存储池名称.
有关详细信息,请参见configure-ha-cluster(1).
注–HADB软件随SunJavaSystemApplicationServer的ApplicationServer独立分发提供.
有关SunJavaSystemApplicationServer的可用分发的信息,请参见《SunJavaSystemApplicationServer9.
1InstallationGuide》中的"DistributionTypesandTheirComponents".
HADB功能仅在企业配置文件中可用.
有关配置文件的信息,请参见《SunJavaSystemApplicationServer9.
1管理指南》中的"用法配置文件".
单击"保存"按钮.
停止并重新启用服务器实例.
HTTP会话故障转移JavaEE应用程序通常具有大量会话状态数据.
Web购物车是一个典型的会话状态示例.
此外,应用程序可以高速缓存会话对象中需要频繁使用的数据.
事实上,几乎带有重要用户交互的所有应用程序都需要维护会话状态.
123456HTTP会话故障转移第9章配置高可用性会话持久性和故障转移189为Web容器配置可用性注–HADB软件随SunJavaSystemApplicationServer的ApplicationServer独立分发提供.
有关SunJavaSystemApplicationServer的可用分发的信息,请参见《SunJavaSystemApplicationServer9.
1InstallationGuide》中的"DistributionTypesandTheirComponents".
HADB功能仅在企业配置文件中可用.
有关配置文件的信息,请参见《SunJavaSystemApplicationServer9.
1管理指南》中的"用法配置文件".
如果要使用HADB,请通过asadminconfigure-ha-persistence启用和配置Web容器可用性.
有关此命令的更多信息,请参见configure-ha-persistence(1).
或者,使用asadminset命令将配置的availability-service.
web-container-availability.
availability-enabled属性设置为true,然后使用configure-ha-persistence根据需要设置属性.
注–如果要使用内存中复制来存储会话状态数据,必须使用asadminset命令启用Web容器可用性和设置属性.
configure-ha-persistence命令只能与HADB一起使用.
例如,按如下所示使用set命令,其中config1为配置名称:asadminset--useradmin--passwordfilepassword.
txt--hostlocalhost--port4849config1.
availability-service.
web-container-availability.
availability-enabled="true"asadminconfigure-ha-persistence--useradmin--passwordfilesecret.
txt--typeha--frequencyweb-method--scopemodified-session--storejdbc/hastore--propertymaxSessions=1000:reapIntervalSeconds=60cluster1使用管理控制台启用Web容器的可用性在树组件中,选择所需配置.
单击"可用性服务".
选择"Web容器可用性"选项卡.
选中"可用性服务"框以启用可用性.
要禁用可用性,请取消选中该框.
更改其他设置,如下一节第191页中的"可用性设置"所述.
重新启动服务器实例.
12345HTTP会话故障转移SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月190可用性设置注–HADB软件随SunJavaSystemApplicationServer的ApplicationServer独立分发提供.
有关SunJavaSystemApplicationServer的可用分发的信息,请参见《SunJavaSystemApplicationServer9.
1InstallationGuide》中的"DistributionTypesandTheirComponents".
HADB功能仅在企业配置文件中可用.
有关配置文件的信息,请参见《SunJavaSystemApplicationServer9.
1管理指南》中的"用法配置文件".
通过"可用性服务"的"Web容器可用性"选项卡,您可以更改这些可用性设置:持久性类型:指定已启用可用性的Web应用程序的会话持久性机制.
允许的值有memory(无持久性)、file(文件系统)、replicated(其他服务器上的内存)和ha(HADB).
在使用ha会话持久性之前,必须先配置和启用HADB.
有关配置的详细信息,请参见configure-ha-cluster(1).
如果已启用Web容器可用性,则默认的持久性类型取决于配置文件,如下表所示.
配置文件持久性类型开发者memory群集replicated企业ha对于需要会话持久性的生产环境,请使用ha或replicated.
memory持久性类型和file持久性类型不提供高可用性会话持久性.
如果已禁用Web容器可用性,则默认的持久性类型是memory.
持久性频率:指定存储会话状态的频率.
仅当持久性类型为ha或replicated时适用.
允许的值包括:web-method-将响应发送回客户机之前,将在每个Web请求结束时存储会话状态.
此模式为发生故障时完全更新会话状态提供了最好的保证.
这是默认选项.
time-based-在后台按照reapIntervalSeconds存储属性设置的频率存储会话状态.
此模式不能保证完全更新会话状态.
但是,它可以提供很大的性能改善,因为在每个请求之后都不存储状态.
持久性范围:指定会话对象的数目和存储会话状态的频率.
仅当持久性类型为ha或replicated时适用.
允许的值包括:session-每次都存储整个会话状态.
此模式为正确存储任何可分发Web应用程序的会话数据提供了最好的保证.
这是默认选项.
HTTP会话故障转移第9章配置高可用性会话持久性和故障转移191modified-session-如果会话状态已被修改,则存储整个会话状态.
如果调用了HttpSession.
setAttribute()或HttpSession.
removeAttribute(),则系统将认为会话已被修改.
您必须保证每次更改属性时都调用setAttribute().
这不是JavaEE规范的要求,但是此模式需要这样做才能正常工作.
modified-attribute-仅存储修改后的会话属性.
要使此模式正常工作,您必须遵循一些指导原则:每次修改会话状态时都调用setAttribute().
确保各属性之间没有交叉引用.
系统将对每个不同的属性关键字的对象图形单独进行序列化并单独存储.
如果每个单独的关键字下的对象之间有对象交叉引用,则它们将不会被正确序列化和反序列化.
在多个属性之间分布会话状态,或者至少在只读属性和可修改属性之间分布会话状态.
单点登录状态:选中此框以启用单点登录状态的持久性.
要禁用可用性,请取消选中该框.
有关更多信息,请参见第193页中的"结合使用会话故障转移和单点登录".
HTTP会话存储:如果更改了用于连接HADB的JDBC资源以获得会话持久性,您可以更改HTTP会话存储.
有关详细信息,请参见configure-ha-cluster(1).
为单个Web应用程序配置可用性要启用和配置单个Web应用程序的可用性,请编辑应用程序部署描述符文件sun-web.
xml.
应用程序的部署描述符中的设置将覆盖Web容器的可用性设置.
session-manager元素的persistence-type属性用于确定应用程序使用的会话持久性的类型.
必须将其设置为ha或replicated以启用高可用性会话持久性.
有关sun-web.
xml文件的更多信息,请参见《SunJavaSystemApplicationServer9.
1ApplicationDeploymentGuide》中的"Thesun-web.
xmlFile".
示例.
.
.
.
.
.
.
.
.
HTTP会话故障转移SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月192结合使用会话故障转移和单点登录在单个应用程序服务器实例中,如果一个应用程序验证了用户,则运行在同一个实例上的其他应用程序不会对用户进行重新验证.
这称为单点登录.
有关更多信息,请参见《SunJavaSystemApplicationServer9.
1Developer'sGuide》中的"UserAuthenticationforSingleSign-on".
为了使HTTP会话故障转移到群集中另一个实例后该功能仍然可用,必须将单点登录信息保留在HADB中.
要保留单点登录信息,请首先启用服务器实例和Web容器的可用性,然后启用单点登录状态故障转移.
注–HADB软件随SunJavaSystemApplicationServer的ApplicationServer独立分发提供.
有关SunJavaSystemApplicationServer的可用分发的信息,请参见《SunJavaSystemApplicationServer9.
1InstallationGuide》中的"DistributionTypesandTheirComponents".
HADB功能仅在企业配置文件中可用.
有关配置文件的信息,请参见《SunJavaSystemApplicationServer9.
1管理指南》中的"用法配置文件".
可以通过管理控制台在"可用性服务"的"Web容器可用性"选项卡中启用单点登录状态故障转移,如第190页中的"为Web容器配置可用性"中所述.
也可以使用asadminset命令将配置的availability-service.
web-container-availability.
sso-failover-enabled属性设置为true.
例如,按如下所示使用set命令,其中config1为配置名称:asadminset--useradmin--passwordfilepassword.
txt--hostlocalhost--port4849config1.
availability-service.
web-container-availability.
sso-failover-enabled="true"单点登录组可以通过单个名称和密码的组合进行访问的应用程序组成了单点登录组.
对于与应用程序(是单点登录组的一部分)相对应的HTTP会话,如果其中一个会话超时,其他会话并不会失效,并且仍然可用.
这是因为一个会话的超时不应影响其他会话的可用性.
作为这个行为的推论,如果一个会话超时并且您尝试从运行该会话的同一浏览器窗口访问相应的应用程序,则您无需再次进行验证.
但是,将创建一个新的会话.
以属于含有其他两个应用程序的单点登录组的购物车应用程序为例.
假设其他两个应用程序的会话超时值大于购物车应用程序的会话超时值.
如果购物车应用程序的会话超时,并且您尝试从运行该会话的同一浏览器窗口运行购物车应用程序,则您无需再次进行验证.
但是,前一个购物车将丢失,并且您必须创建一个新的购物车.
即使运行购物车应用程序的会话已超时,其他两个应用程序也会继续照常运行.
HTTP会话故障转移第9章配置高可用性会话持久性和故障转移193类似地,可假定与其他两个应用程序中的任何一个应用程序对应的会话超时.
当从运行该会话的同一浏览器窗口连接应用程序时,您无需再次进行验证.
注–此行为仅适用于会话超时情况.
如果启用了单点登录,并且您使用HttpSession.
invalidate()令其中一个会话失效,则属于单点登录组的所有应用程序的会话都将失效.
如果您尝试访问属于单点登录组的任一应用程序,则需要再次进行验证,系统将为访问该应用程序的客户机创建一个新的会话.
有状态会话Bean故障转移有状态会话Bean(SFSB)包含特定于客户机的状态.
客户机和有状态会话Bean之间存在一对一关系.
创建时,EJB容器赋予每个SFSB唯一的会话ID,以便将其绑定到客户机.
服务器实例出现故障时,SFSB的状态可以保存在持久性存储中.
在SFSB的生命周期中,其预定义点处的状态将被保存到持久性存储库中.
这称为检查点操作.
如果已启用,通常会在Bean完成了任意事务之后(即使该事务回滚)执行检查点操作.
但是,如果SFSB参与了Bean管理的事务,则该事务可能会在Bean方法执行的中间就被提交.
由于Bean的状态可能因方法调用而发生转换,因此这不是对Bean的状态进行检查点操作的适当时间.
在此情况下,EJB容器将在相应方法结束时对Bean的状态进行检查点操作,前提是当该方法结束时,该Bean不在另一个事务的范围内.
如果Bean管理的事务涉及多个方法,则检查点操作将被延迟,直至在后继方法结束时没有活动的事务.
SFSB的状态并不一定具有事务性,并且可能因非事务性业务方法而被显著修改.
如果某个SFSB出现这种情况,则您可以指定一系列检查点方法,如第197页中的"指定对其执行检查点操作的方法"所述.
如果可分布的Web应用程序引用了SFSB,并且Web应用程序的会话发生故障转移,则EJB引用也将进行故障转移.
如果停止ApplicationServer实例时取消部署使用会话持久性的SFSB,则持久性存储中的会话数据可能不被清除.
要避免这种情况,请在运行ApplicationServer实例时取消部署SFSB.
有状态会话Bean故障转移SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月194为EJB容器配置可用性启用EJB容器的可用性选择"EJB容器可用性"选项卡.
选中"可用性服务"框.
要禁用可用性,请取消选中该框.
更改其他设置,如第196页中的"可用性设置"中所述.
单击"保存"按钮.
重新启动服务器实例.
等效的asadmin命令要启用EJB容器的可用性,请使用asadminset命令设置以下三个配置属性:availability-service.
ejb-container-availability.
availability-enabledavailability-service.
ejb-container-availability.
sfsb-persistence-typeavailability-service.
ejb-container-availability.
sfsb-ha-persistence-type例如,如果config1为配置名称,请使用以下命令:asadminset--useradmin--passwordfilepassword.
txt--hostlocalhost--port4849config1.
availability-service.
ejb-container-availability.
availability-enabled="true"asadminset--useradmin--passwordfilepassword.
txt--hostlocalhost--port4849config1.
availability-service.
ejb-container-availability.
sfsb-persistence-type="file"asadminset--useradmin--passwordfilepassword.
txt--hostlocalhost--port4849config1.
availability-service.
ejb-container-availability.
sfsb-ha-persistence-type="ha"12345更多信息有状态会话Bean故障转移第9章配置高可用性会话持久性和故障转移195可用性设置注–HADB软件随SunJavaSystemApplicationServer的ApplicationServer独立分发提供.
有关SunJavaSystemApplicationServer的可用分发的信息,请参见《SunJavaSystemApplicationServer9.
1InstallationGuide》中的"DistributionTypesandTheirComponents".
HADB功能仅在企业配置文件中可用.
有关配置文件的信息,请参见《SunJavaSystemApplicationServer9.
1管理指南》中的"用法配置文件".
通过"可用性服务"的"EJB容器可用性"选项卡,您可以更改这些设置:HA持久性类型:为已启用可用性的SFSB指定会话持久性和钝化机制.
允许的值有file(文件系统)、replicated(其他服务器上的内存)和ha(HADB).
默认值是ha.
对于需要会话持久性的生产环境,请使用ha或replicated.
SFSB持久性类型:为尚未启用可用性的SFSB指定钝化机制.
允许的值有file(默认值)、replicated和ha.
如果将任一持久性类型设置为file,EJB容器都将指定用于存储已钝化的会话Bean状态的文件系统位置.
文件系统的检查点操作对于测试很有用,但不适用于生产环境.
有关配置存储属性的信息,请参见管理控制台联机帮助.
HA持久性可以允许服务器实例的群集在任何服务器实例出现故障时恢复SFSB状态.
HADB还可以用作钝化和活化存储.
在要求SFSB状态持久性的生产环境中使用此选项.
有关更多信息,请参见configure-ha-cluster(1).
SFSB存储池名称:如果更改了用于连接HADB的JDBC资源以获得会话持久性,您可以更改SFSB存储池名称.
有关详细信息,请参见configure-ha-cluster(1).
在禁用可用性时配置SFSB会话存储如果已禁用可用性,本地文件系统将用于SFSB状态钝化而非持久性.
要更改SFSB状态的存储位置,请更改EJB容器中的"会话存储位置"设置.
有关配置存储属性的信息,请参见管理控制台联机帮助.
为单个应用程序或EJB模块配置可用性您可以在部署期间启用单个应用程序或EJB模块的SFSB可用性:如果要使用管理控制台进行部署,请选中"启用可用性"复选框.
如果要使用asadmindeploy或asadmindeploydir命令进行部署,请将--availabilityenabled选项设置为true.
有关更多信息,请参见deploy(1)和deploydir(1).
有状态会话Bean故障转移SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月196为单个Bean配置可用性要为单个SFSB启用可用性并选择执行检查点操作的方法,请使用sun-ejb-jar.
xml部署描述符文件.
.
要启用高可用性会话持久性,请在ejb元素中设置availability-enabled="true".
要控制SFSB高速缓存的大小和行为,请使用以下元素:max-cache-size:指定高速缓存中容纳的会话Bean的最大数目.
如果高速缓存溢出(Bean的数目超过了max-cache-size),则容器将钝化某些Bean或将Bean的序列化状态写入文件.
创建文件的目录可以使用配置API从EJB容器处获取.
resize-quantitycache-idle-timeout-in-secondsremoval-timeout-in-secondsvictim-selection-policy有关sun-ejb-jar.
xml的更多信息,请参见《SunJavaSystemApplicationServer9.
1ApplicationDeploymentGuide》中的"Thesun-ejb-jar.
xmlFile".
示例9–1已启用可用性的EJB部署描述符示例.
.
.
.
.
.
MySFSB.
.
.
指定对其执行检查点操作的方法如果已启用,通常会在Bean完成了任意事务之后(即使该事务回滚)执行检查点操作.
要指定非事务性业务方法(导致对Bean状态的重要修改)结束时SFSB的其他可选检查点操作,请使用sun-ejb-jar.
xml部署描述符文件的ejb元素中的checkpoint-at-end-of-method元素.
checkpoint-at-end-of-method元素中的非事务性方法可以是:在SFSB的主接口中定义的create()方法(如果要在创建后立即对SFSB的初始状态进行检查点操作)对于仅使用容器管理的事务的SFSB,Bean的远程接口中使用事务属性TX_NOT_SUPPORTED或TX_NEVER进行标记的方法有状态会话Bean故障转移第9章配置高可用性会话持久性和故障转移197对于仅使用Bean管理的事务的SFSB,既不启动也不提交Bean管理的事务的方法此列表中提到的所有其他方法均忽略.
当调用这些方法结束时,EJB容器会将SFSB的状态保存到持久性存储中.
注–如果SFSB没有参与任何事务,并且没有在checkpoint-at-end-of-method元素中明确指定其任何方法,则将不对Bean的状态进行检查点操作(即使对于此Bean,已设置availability-enabled="true").
请指定方法的较小子集以获得更好的性能.
方法应完成大量工作或导致对Bean状态的重要修改.
示例9–2指定方法检查点操作的EJB部署描述符示例.
.
.
.
.
.
ShoppingCartEJBaddToCart.
.
.
有状态会话Bean故障转移SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月198Java消息服务的负载平衡和故障转移本章介绍了如何配置Java消息服务(JavaMessageService,JMS)的负载平衡和故障转移以与ApplicationServer一起使用.
本章包含以下主题:第199页中的"Java消息服务概述"第200页中的"配置Java消息服务"第202页中的"连接池和故障转移"第204页中的"结合使用ApplicationServer与MQ群集"Java消息服务概述Java消息服务(JavaMessageService,JMS)API是一种通讯标准,使JavaEE应用程序和组件可以创建、发送、接收和读取消息,并启用了松散耦合的可靠异步分布式通信.
SunJavaSystemMessageQueue(MQ)(实现了JMS)与ApplicationServer紧密集成,使您可以创建诸如消息驱动bean(message-drivenbean,MDB)之类的组件.
MQ使用连接器模块(也称为资源适配器,由JavaEE连接器体系结构规范1.
5定义)与ApplicationServer集成.
部署到ApplicationServer的JavaEE组件使用通过连接器模块集成的JMS提供者交换JMS消息.
在ApplicationServer中创建JMS资源将会在后台创建连接器资源.
因此,每个JMS操作将调用连接器运行时并在后台使用MQ资源适配器.
您可以通过管理控制台或asadmin命令行实用程序管理Java消息服务.
更多信息有关配置JMS资源的更多信息,请参见《SunJavaSystemApplicationServer9.
1管理指南》中的第4章"配置Java消息服务资源".
有关JMS的更多信息,请参见《SunJavaSystemApplicationServer9.
1Developer'sGuide》中的第18章"UsingtheJavaMessageService".
有关连接器(资源适配器)的更多信息,请参见《SunJavaSystemApplicationServer9.
1Developer'sGuide》中的第12章"DevelopingConnectors".
10第10章199有关SunJavaSystemMessageQueue的更多信息,请参见(http://docs.
sun.
com/coll/1343.
4)和MessageQueue文档(http://docs.
sun.
com/coll/1578.
2).
有关JMSAPI的常规信息,请参见JMSWeb页(http://java.
sun.
com/products/jms/index.
html).
配置Java消息服务Java消息服务配置可用于到SunJavaSystemApplicationServer群集或实例的所有入站和出站连接.
您可以使用以下方法配置Java消息服务:管理控制台.
在相关配置下打开Java消息服务组件.
有关详细信息,请参见《SunJavaSystemApplicationServer9.
1管理指南》中的第4章"配置Java消息服务资源".
asadminset命令.
您可以设置以下属性:server.
jms-service.
init-timeout-in-seconds=60server.
jms-service.
type=LOCALserver.
jms-service.
start-args=server.
jms-service.
default-jms-host=default_JMS_hostserver.
jms-service.
reconnect-interval-in-seconds=60server.
jms-service.
reconnect-attempts=3server.
jms-service.
reconnect-enabled=trueserver.
jms-service.
addresslist-behavior=randomserver.
jms-service.
addresslist-iterations=3server.
jms-service.
mq-scheme=mqserver.
jms-service.
mq-service=jms您也可以设置以下属性:server.
jms-service.
property.
instance-name=imqbrokerserver.
jms-service.
property.
instance-name-suffix=server.
jms-service.
property.
append-version=false使用asadminget命令列出所有Java消息服务属性.
有关asadminget的更多信息,请参见get(1).
有关asadminset的更多信息,请参见set(1).
您可以使用JMS连接工厂设置覆盖Java消息服务配置.
有关详细信息,请参见《SunJavaSystemApplicationServer9.
1管理指南》中的"JMS连接工厂".
注–更改Java消息服务的配置之后,您必须重新启动ApplicationServer实例.
有关JMS管理的更多信息,请参见《SunJavaSystemApplicationServer9.
1管理指南》中的第4章"配置Java消息服务资源".
配置Java消息服务SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月200Java消息服务集成MQ可以通过三种方法与ApplicationServer集成:LOCAL、REMOTE和EMBEDDED.
这些模式在管理控制台中由Java消息服务的"类型"属性表示.
LOCALJava消息服务"类型"属性为LOCAL(群集实例的默认值)时,ApplicationServer将启动和停止指定为默认JMS主机的MQ代理.
MQ进程从ApplicationServer进程在单独的VM中于进程外启动.
ApplicationServer为代理提供一个额外的端口.
此端口将由代理用来启动RMI注册表.
此端口号将等于该实例的已配置JMS端口号加上100.
例如,如果JMS端口号是37676,则此附加端口号将是37776.
要在ApplicationServer实例和MessageQueue代理之间创建一对一关系,请将类型设置为LOCAL并为每个ApplicationServer实例提供一个不同的默认JMS主机.
无论是否已在ApplicationServer或MQ中定义了群集,都可以进行此操作.
在类型为LOCAL的情况下,请使用"启动参数"属性指定MQ代理的启动参数.
REMOTEJava消息服务"类型"属性为REMOTE时,必须单独启动MQ代理.
有关启动代理的信息,请参见SunJavaSystemMessageQueueAdministrationGuide.
在此情况下,ApplicationServer将使用从外部配置的代理或代理群集.
另外,您必须从ApplicationServer单独启动和停止MQ代理,并使用MQ工具配置和调整代理或代理群集.
REMOTE类型是适用于ApplicationServer群集的最佳类型.
在类型为REMOTE的情况下,您必须使用MQ工具指定MQ代理启动参数.
忽略"启动参数"属性.
EMBEDDEDJava消息服务JMS"类型"属性为EMBEDDED时,表示应用服务器和JMS代理位于同一VM中,且JMS服务在进程中启动并由ApplicationServer管理.
在此模式下,JMS操作绕过网络栈,从而优化了性能.
JMS主机列表JMS主机用于表示MQ代理.
Java消息服务包含JMS主机列表(也称为AddressList),该主机列表包含ApplicationServer使用的所有JMS主机.
JMS主机列表包含指定的MQ代理的主机和端口,并且在JMS主机配置更改后随时更新.
当您创建JMS资源或部署MDB时,它们将继承JMS主机列表.
配置Java消息服务第10章Java消息服务的负载平衡和故障转移201注–在SunJavaSystemMessageQueue软件中,AddressList属性被称为imqAddressList.
缺省JMS主机JMS主机列表中的一个主机被指定为默认JMS主机,命名为Default_JMS_host.
当Java消息服务类型配置为LOCAL时,ApplicationServer实例将启动默认JMS主机.
如果您已在SunJavaSystemMessageQueue软件中创建了多代理群集,则删除默认JMS主机,然后将MessageQueue群集的代理添加为JMS主机.
在此情况下,默认JMS主机将成为JMS主机列表中的第一个主机.
ApplicationServer使用MessageQueue群集时,将在默认JMS主机上执行MessageQueue特定命令.
例如,为三个代理的MessageQueue群集创建物理目的地时,将在默认JMS主机上执行创建物理目的地的命令,但是该物理目的地将被群集中的全部三个代理使用.
创建JMS主机您可以使用以下方法创建其他JMS主机:使用管理控制台.
在相关配置下打开"Java消息服务"组件,选择"JMS主机"组件,然后单击"新建".
有关更多信息,请参见管理控制台联机帮助.
使用asadmincreate-jms-host命令.
有关详细信息,请参见create-jms-host(1).
只要JMS主机配置发生更改,JMS主机列表就会被更新.
连接池和故障转移ApplicationServer支持JMS连接池和故障转移.
SunJavaSystemApplicationServer将自动实现JMS连接池.
"地址列表行为"属性为random(默认值)时,ApplicationServer将从JMS主机列表中随机选择其主代理.
发生故障转移时,MQ会将负载透明地转移到另一个代理,并维持JMS语义.
如果JMS类型为LOCAL,"地址列表行为"属性的默认值将为priority.
要指定连接丢失时ApplicationServer是否尝试重新连接到主代理,请选中"重新连接"复选框.
如果已启用,则当主代理出现故障时,ApplicationServer将尝试重新连接到JMS主机列表中的另一个代理.
启用"重新连接"时,也同时指定以下属性:地址列表行为:是按JMS主机列表中的地址顺序(priority)还是按随机顺序(random)尝试连接.
如果设置为Priority,Java消息服务将尝试连接到JMS主机列表中指定的第一个MQ代理,仅当第一个代理不可用时,才使用另一个代理.
如果设置为连接池和故障转移SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月202Random,Java消息服务将从JMS主机列表中随机选择MQ代理.
如果许多客户机同时尝试使用同一个连接工厂来进行连接,请使用此设置以防止它们全部尝试连接至同一个地址.
地址列表重复:Java消息服务建立(或重新建立)连接时,在JMS主机列表中重复的次数.
值-1表示尝试次数没有限制.
重新连接尝试:客户机运行时尝试连接(或重新连接)JMS主机列表中每个地址的次数.
到达这个值后,客户机运行时将尝试连接列表中的下一个地址.
值-1表示重新连接尝试次数没有限制(客户机运行时将尝试连接至第一个地址,直到连接成功).
重新连接时间间隔:两次重新连接尝试之间的秒数.
此设置适用于对JMS主机列表中每个地址的尝试,及对该列表中连续地址的尝试.
如果该时间间隔太短,则代理将没有时间恢复.
如果该时间间隔太长,则重新连接可能会指明这是不可接受的延迟.
您可以使用JMS连接工厂设置覆盖这些设置.
有关详细信息,请参见《SunJavaSystemApplicationServer9.
1管理指南》中的"JMS连接工厂".
负载平衡的消息流入您可以在sun-ejb-jar.
xml文件中使用activation-config-property元素为消息驱动Bean配置jmsra资源适配器的ActivationSpec属性.
每当部署消息驱动Bean(EndPointFactory)后,连接器运行时引擎都会在资源适配器中查找这些属性并相应地对其进行配置.
请参见《SunJavaSystemApplicationServer9.
1ApplicationDeploymentGuide》中的"activation-config-property".
ApplicationServer透明地允许将消息随机传送到具有相同ClientID的消息驱动Bean.
持久订阅者需要ClientID.
对于没有配置ClientID的非持久订阅者,特定的消息驱动Bean中订阅同一主题的所有实例均认为是等效的.
将消息驱动Bean部署到ApplicationServer的多个实例时,只有其中的一个消息驱动Bean接收消息.
如果多个不同的消息驱动Bean订阅同一主题,每个消息驱动Bean的一个实例将接收消息副本.
要使用同一队列支持多个使用者,请将物理目的地的maxNumActiveConsumers属性设置为较大值.
如果设置了此属性,SunJavaSystemMessageQueue软件将允许最多该数目的消息驱动Bean使用同一队列中的消息.
消息将随机传送到各个消息驱动Bean.
如果将maxNumActiveConsumers设置为-1,将不限制使用者的数目.
要确保首选本地传送,请将addresslist-behavior设置为priority.
此设置指定首先选择AddressList中的第一个代理.
此第一个代理是本地共存的MessageQueue实例.
如果此代理不可用,将按代理在AddressList中的列出顺序进行连接尝试.
此设置是属于群集的ApplicationServer实例的默认设置.
连接池和故障转移第10章Java消息服务的负载平衡和故障转移203注–群集功能在开发者配置文件中不可用.
有关配置文件的信息,请参见《SunJavaSystemApplicationServer9.
1管理指南》中的"用法配置文件".
JMS服务高可用性JMS组件有两种级别的可用性:服务可用性-在此级别上,JMS服务的可用性很重要,但在消息仅片刻不可用时它不是很重要.
只要连接故障转移到一个提供服务的新可用实例,JMS组件就认为服务可用并正常运行.
《SunJavaSystemApplicationServer9.
1Developer'sGuide》中的"ConnectionFailover"中介绍了此级别的可用性.
数据可用性-在此级别上,服务的可用性和持久性消息的可用性都是必需的.
有且只有一次的传送和消息排序的JMS语义也在此级别上处理.
可以在包含Java消息服务(JavaMessageService,JMS)的SunJavaSystemMessageQueue群集中启用数据可用性.
消息将持久保存到公共持久性存储,而且从群集中的所有其他代理实例可用,或者从高可用性数据库(high-availabilitydatabase,HADB)可用(如果安装了该数据库并选择了企业配置文件).
有关配置文件的信息,请参见《SunJavaSystemApplicationServer9.
1管理指南》中的"用法配置文件".
必须先对ApplicationServer实例启用可用性,才能对相应的代理启用数据可用性.
注–单个应用程序和模块无法控制或覆盖JMS可用性.
要启用数据可用性,请在管理控制台中的相关配置下选择"可用性服务"组件.
选中"可用性服务"框.
要对JMS服务启用可用性,请选择"JMS可用性"选项卡,然后选中"可用性服务"框.
ApplicationServer群集中的所有实例都应该具有相同的实例可用性和JMS可用性设置,以确保一致的行为.
有关详细信息,请参见《SunJavaSystemApplicationServer9.
1高可用性管理指南》.
注–群集功能在开发者配置文件中不可用.
有关配置文件的信息,请参见《SunJavaSystemApplicationServer9.
1管理指南》中的"用法配置文件".
结合使用ApplicationServer与MQ群集MQ企业版支持多个互连代理实例(称为代理群集).
使用代理群集的情况下,客户机连接将分布在群集的所有代理中.
群集可以提供水平可伸缩性并提高可用性.
本节介绍了如何配置ApplicationServer以使用高可用性SunJavaSystemMessageQueue群集.
还介绍了如何启动和配置MessageQueue群集.
结合使用ApplicationServer与MQ群集SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月204有关ApplicationServer和MQ部署拓扑的更多信息,请参见《SunJavaSystemApplicationServer9.
1部署规划指南》中的"PlanningMessageQueueBrokerDeployment".
高可用性MQ群集SunJavaSystemMessageQueue4.
1通过新的"高可用性"群集类型提供了高可用性消息传送服务.
在此类型的MQ群集中,所有的代理实例都将共享对等关系并共享公共的持久性数据存储,从而提供"数据可用性".
实例将自动地能够检测某个实例是否出现故障,并通过接管选举动态执行故障代理的持久性消息的接管.
这样,在ApplicationServer中部署的应用程序组件可以利用这些可用性功能.
使用此群集类型,队列或持久主题订阅不会丢失任何已处理的持久性消息.
客户机运行时环境所连接到的代理不可用时,很可能会丢失非持久性消息或非持久订阅者的持久性消息.
在本地模式下配置高可用性代理群集1.
启动HADB.
2.
创建一个ApplicationServer域并启动它.
要创建一个域并启动它,请分别使用asadmin命令create-domain和start-domain.
有关这些命令的更多信息,请参见create-domain(1)和start-domain(1).
3.
创建一个节点代理并启动它.
要创建一个节点代理并启动它,请分别使用asadmin命令create-node-agent和start-node-agent.
有关这些命令的更多信息,请参见create-node-agent(1)和start-node-agent(1).
4.
创建群集.
可以使用asadmin命令create-cluster或使用管理控制台创建群集.
有关create-cluster命令的更多信息,请参见create-cluster(1).
有关如何使用管理控制台创建群集的信息,请参见管理控制台联机帮助.
5.
在群集中创建实例.
在创建实例时,请指定远程代理所用的JMS提供者端口号.
如果您不指定一个端口号,将使用默认的JMS提供者端口号.
可以使用管理控制台或asadmin命令create-instance创建实例.
有关如何使用管理控制台创建实例的信息,请参见管理控制台联机帮助.
有关create-instance命令的信息,请参见create-instance(1).
6.
启动群集.
可以通过管理控制台或使用asadmin命令start-cluster启动群集.
有关如何使用管理控制台启动群集的信息,请参阅管理控制台联机帮助.
有关start-cluster命令的信息,请参见start-cluster(1).
7.
使用asadmin命令configure-ha-cluster配置HA群集.
有关该命令的更多信息,请参见configure-ha-cluster(1).
结合使用ApplicationServer与MQ群集第10章Java消息服务的负载平衡和故障转移205在远程模式下配置高可用性代理群集1.
启动HADB.
2.
创建数据库表.
3.
如果要创建高可用性代理群集,请复制HA驱动程序.
cp$AS_HOME/hadb/4.
4.
3-6/lib/hadbjdbc4.
jar$S1AS_HOME/imq/lib/ext4.
创建一个域并启动它.
为此,请使用asadmin命令create-domain和start-domain.
有关这些命令的更多信息,请参见create-domain(1)和start-domain(1).
5.
创建一个节点代理并启动它.
为此,请使用asadmin命令create-node-agent和start-node-agent.
有关这些命令的更多信息,请参见create-node-agent(1)和start-node-agent(1).
6.
创建群集.
可以使用asadmin命令create-cluster或使用管理控制台创建群集.
有关更多信息,请参见create-cluster(1).
有关如何使用管理控制台创建群集的信息,请参见管理控制台联机帮助.
7.
在群集中创建实例.
在创建实例时,请指定远程代理所用的JMS提供者端口号.
如果您不指定一个端口号,将使用默认的JMS提供者端口号.
8.
删除默认的JMS主机,并创建实例可以连接到的JMS主机.
务必将每个代理作为单独的JMS主机进行添加.
有关JMS主机的更多信息,请参见第201页中的"JMS主机列表".
9.
将JMS类型设置为Remote.
为此,可以使用asadmin命令set或管理控制台中的"JMS服务"页面.
10.
如果要配置高可用性代理,请将JMS可用性设置为true.
为此,可以使用asadmin命令set或管理控制台中的"JMS可用性"页面.
11.
启动代理实例.
12.
启动群集.
有关更多信息,请参见start-cluster(1).
为非HA群集自动建立群集直到现在,管理员必须单独建立"非高可用性"MQ群集(具有主代理的MQ群集),如本节后面的过程中所述.
在此发行版中,除了设置MQ群集的手动过程(类型为REMOTE)外,ApplicationServer还提供了"自动建立群集功能",这意味着在用户创建ApplicationServer群集时将自动创建共存的非HA群集(类型为LOCAL).
这将是创建MQ群集的默认模式.
例如,在管理员创建具有三个ApplicationServer实例的ApplicationServer群集时,会将每个ApplicationServer实例配置为与共存代理一起工作,因此将使三个MQ代理实例透明地形成一个MQ群集.
第一个ApplicationServer实例的MQ代理将被设置为主代理.
但是,自动建立群集也有缺点.
如果管理员将一个实例添加到群集,自动创建的MQ代理实例将无法参与群集.
如果将一个实例从群集中删除,也会出现此行为.
结合使用ApplicationServer与MQ群集SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月206使用ApplicationServer群集启用MQ群集如果群集类型为REMOTE,请执行以下步骤.
如果群集类型为LOCAL,则步骤1到4不适用.
如果尚不存在ApplicationServer群集,请先创建一个.
有关创建群集的信息,请参见第151页中的"创建群集".
创建MQ代理群集.
首先,删除涉及由域管理服务器启动的代理的默认JMS主机,然后创建三个将位于MQ代理群集中的外部代理(JMS主机).
使用管理控制台或asadmin命令行实用程序创建JMS主机.
要使用asadmin,请参见以下命令示例:asadmindelete-jms-host--targetcluster1default_JMS_hostasadmincreate-jms-host--targetcluster1--mqhostmyhost1--mqport6769--mquseradmin--mqpasswordadminbroker1asadmincreate-jms-host--targetcluster1--mqhostmyhost2--mqport6770--mquseradmin--mqpasswordadminbroker2asadmincreate-jms-host--targetcluster1--mqhostmyhost3--mqport6771--mquseradmin--mqpasswordadminbroker3要使用管理控制台创建主机,请执行以下操作:a.
导航到"JMS主机"节点("配置">"config-name">"Java消息服务">"JMS主机").
b.
删除默认代理(default_JMS_host).
选择其旁边的复选框,然后单击"删除".
c.
单击"新建"以创建每一台JMS主机并输入其属性值.
填写主机名称、DNS名称或IP地址、端口号、管理用户名和密码.
启动MQ主代理和其他MQ代理.
除了JMS主机上启动的三个外部代理外,请在任一计算机上启动一个主代理.
此主代理不需要是代理群集的一部分.
例如:/usr/bin/imqbrokerd-tty-namebrokerm-port6772-clustermyhost1:6769,myhost2:6770,myhost2:6772,myhost3:6771-D"imq.
cluster.
masterbroker=myhost2:6772"启动群集中的ApplicationServer实例.
开始之前1234结合使用ApplicationServer与MQ群集第10章Java消息服务的负载平衡和故障转移207在群集上创建JMS资源:a.
创建JMS物理目的地.
例如,使用asadmin:asadmincreate-jmsdest--desttypequeue--targetcluster1MyQueueasadmincreate-jmsdest--desttypequeue--targetcluster1MyQueue1要使用管理控制台,请执行以下操作:i.
导航到"JMS主机"页面("配置">"config-name">"Java消息服务">"物理目的地").
ii.
单击"新建"以创建每个JMS物理目的地.
iii.
对于每个目标,输入其名称和类型(队列).
b.
创建JMS连接工厂.
例如,使用asadmin:asadmincreate-jms-resource--targetcluster1--restypejavax.
jms.
QueueConnectionFactoryjms/MyQcfasadmincreate-jms-resource--targetcluster1--restypejavax.
jms.
QueueConnectionFactoryjms/MyQcf1要使用管理控制台,请执行以下操作:i.
导航到"JMS连接工厂"页面("资源">"JMS资源">"连接工厂").
ii.
要创建每个连接工厂,请单击"新建".
将打开"创建JMS连接工厂"页面.
iii.
对于每个连接工厂,请输入JNDI名称(例如jms/MyQcf)和类型(javax.
jms.
QueueConnectionFactory).
iv.
从页面底部的可用目标列表中选择群集,然后单击"添加".
v.
单击"确定"以创建连接工厂.
c.
创建JMS目标资源.
例如,使用asadmin:asadmincreate-jms-resource--targetcluster1--restypejavax.
jms.
Queue--propertyimqDestinationName=MyQueuejms/MyQueueasadmincreate-jms-resource--targetcluster1--restypejavax.
jms.
Queue--propertyimqDestinationName=MyQueue1jms/MyQueue15结合使用ApplicationServer与MQ群集SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月208要使用管理控制台,请执行以下操作:i.
导航到"JMS目标资源"页面("资源">"JMS资源">"连接工厂").
ii.
要创建每个目标资源,请单击"新建".
将打开"创建JMS目标资源"页面.
iii.
对于每个目标资源,请输入JNDI名称(例如jms/MyQueue)和类型(javax.
jms.
Queue).
iv.
从页面底部的可用目标列表中选择群集,然后单击"添加".
v.
单击"确定"创建目标资源.
使用–retrieve选项为应用程序客户机部署应用程序.
例如:asadmindeploy--targetcluster1--retrieve/opt/work/MQapp/mdb-simple3.
ear访问应用程序并进行测试以确保其按预期运行.
如果要将ApplicationServer返回到其默认JMS配置,请删除您创建的JMS主机并重新创建默认值.
例如:asadmindelete-jms-host--targetcluster1broker1asadmindelete-jms-host--targetcluster1broker2asadmindelete-jms-host--targetcluster1broker3asadmincreate-jms-host--targetcluster1--mqhostmyhost1--mqport7676--mquseradmin--mqpasswordadmindefault_JMS_host您还可以使用管理控制台执行等效操作.
如果出现问题,请考虑以下操作:查看位于as-install-dir/nodeagents/node-agent-name/instance-name/logs/server.
log的ApplicationServer日志文件.
如果在日志文件中看到MQ代理没有响应消息,则停止该代理,然后重新启动它.
查看位于as-install-dir/nodeagents/node-agent-name/instance-name/imq/imq-instance-name/log/log.
txt的代理日志.
JMS类型为Remote时,务必始终先启动MQ代理,然后再启动ApplicationServer实例.
所有MQ代理都关闭时,关闭或打开ApplicationServer需要花费30分钟,并具有Java消息服务中的默认值.
调整Java消息服务值以获取此超时的可接受值.
例如:678故障排除结合使用ApplicationServer与MQ群集第10章Java消息服务的负载平衡和故障转移209asadminset--useradmin--passwordadministratorcluster1.
jms-service.
reconnect-interval-in-seconds=5结合使用ApplicationServer与MQ群集SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月210RMI-IIOP负载平衡和故障转移本章介绍如何通过RMI-IIOP使用SunJavaSystemApplicationServer的高可用性功能获得远程EJB引用和JNDI对象.
第211页中的"概述"第213页中的"设置RMI-IIOP负载平衡和故障转移"概述利用RMI-IIOP负载平衡,IIOP客户机请求可分布到不同的服务器实例或名称服务器.
目标是将负载平均分布在群集中,从而提供可伸缩性.
与EJB群集和可用性结合的IIOP负载平衡还可提供EJB故障转移.
客户机执行某个对象的JNDI查找时,命名服务会创建一个与特定服务器实例关联的InitialContext(IC)对象.
从此时起,使用该IC对象进行的所有查找请求都会发送给相同的服务器实例.
使用该InitialContext查找的所有EJBHome对象都托管在相同的目标服务器上.
此后获得的所有Bean引用也创建在相同的目标主机上.
这就有效地提供了负载平衡,原因是所有客户机都在创建InitialContext对象时随机使用动态目标服务器的列表.
如果目标服务器实例发生故障,查找或EJB方法调用会将故障转移到另一个服务器实例.
IIOP负载平衡和故障转移将透明地发生.
在应用程序部署过程中无需特殊的步骤.
ApplicationServer的IIOP负载平衡和故障转移支持动态重新配置的群集.
如果在其上部署应用程序客户机的ApplicationServer实例参与群集,则ApplicationServer将自动查找群集中当前处于活动状态的所有IIOP端点.
因此,如果将新实例添加到群集或将其从群集中删除,则无需手动更新端点列表.
但是,客户机至少应指定两个端点以用于引导目的,防止其中一个端点出现故障.
11第11章211要求SunJavaSystemApplicationServer通过RMI-IIOP提供远程EJB引用和NameService对象的高可用性,前提是满足以下所有条件:您的部署包含一个至少有两个应用程序服务器实例的群集.
JavaEE应用程序已被部署到所有参与负载平衡的应用服务器实例和群集.
已启用RMI-IIOP客户机应用程序以用于负载平衡.
ApplicationServer支持对在应用程序客户机容器(ApplicationClientContainer,ACC)中执行的Java应用程序进行负载平衡.
请参见第213页中的"设置RMI-IIOP负载平衡和故障转移".
注–ApplicationServer不支持通过安全套接字层(SecureSocketLayer,SSL)进行RMI-IIOP负载平衡和故障转移.
算法ApplicationServer使用随机算法和round-robin算法进行RMI-IIOP负载平衡和故障转移.
在RMI-IIOP客户机首次创建新的InitialContext对象时,可用的ApplicationServerIIOP端点的列表对于该客户机是随机的.
对于该InitialContext对象,负载平衡器会将查找请求和其他InitialContext操作定向至随机列表中的第一个端点.
如果第一个端点不可用,则使用列表中的第二个端点,依此类推.
随后每次客户机创建新的InitialContext对象时,将轮转端点列表,从而将不同的IIOP端点用于InitialContext操作.
当您从通过InitialContext对象获取的引用中获取或创建Bean时,将在服务于指定给InitialContext对象的IIOP端点的ApplicationServer实例上创建这些Bean.
对这些Bean的引用包括群集中的所有ApplicationServer实例的IIOP端点地址.
主端点是与用于查找或创建Bean的InitialContext端点对应的Bean端点.
群集中的其他IIOP端点将被指定为备用端点.
如果Bean的主端点变为不可用,则该Bean上的其他请求将故障转移到备用端点之一.
可以配置RMI-IIOP负载平衡和故障转移以用于在ACC中运行的应用程序.
概述SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月212设置RMI-IIOP负载平衡和故障转移可以为在应用程序客户机容器(applicationclientcontainer,ACC)中运行的应用程序设置RMI-IIOP负载平衡和故障转移.
还支持加权的round-robin负载平衡.
为应用程序客户机容器设置RMI-IIOP负载平衡此过程概要介绍了将应用程序客户机容器(ACC)与RMI-IIOP负载平衡和故障转移结合使用所需要的步骤.
有关ACC的其他信息,请参见《SunJavaSystemApplicationServer9.
1Developer'sGuide》中的"DevelopingClientsUsingtheACC".
转到install_dir/bin目录.
运行package-appclient.
此实用程序生成一个appclient.
jar文件.
有关package-appclient的更多信息,请参见package-appclient(1M).
将appclient.
jar文件复制到需要作为客户机的计算机上,然后将其解压缩.
编辑asenv.
conf或asenv.
bat路径变量,以引用该计算机上的正确目录值.
该文件位于appclient-install-dir/config/中.
有关待更新路径变量的列表,请参见package-appclient(1M).
如果需要,请使appclient脚本成为可执行脚本.
例如,在UNIX上使用chmod700.
至少查找群集中两个实例的IIOP侦听器端口号.
在步骤7中将IIOP侦听器指定为端点.
对于每个实例,按如下所述获取IIOP侦听器端口:a.
在管理控制台的树组件中,展开"群集"节点.
b.
展开群集.
c.
在群集中选择一个实例.
d.
在右窗格中单击"属性"选项卡.
e.
注意用于实例的IIOP侦听器端口.
在sun-acc.
xml文件中至少添加两个target-server元素.
1234567设置RMI-IIOP负载平衡和故障转移第11章RMI-IIOP负载平衡和故障转移213注–群集功能在开发者配置文件中不可用.
有关配置文件的信息,请参见《SunJavaSystemApplicationServer9.
1管理指南》中的"用法配置文件".
使用在步骤6中获取的端点.
如果在其上部署应用程序客户机的ApplicationServer实例参与群集,则ACC将自动查找群集中当前处于活动状态的所有IIOP端点.
但是,客户机至少应指定两个端点以达到引导目的,以防其中一个端点出现故障.
target-server元素指定用于负载平衡的一个或多个IIOP端点.
address属性是IPv4地址或主机名,port属性指定端口号.
请参见《SunJavaSystemApplicationServer9.
1ApplicationDeploymentGuide》中的"client-container".
作为使用target-server元素的替代方法,可以使用endpoints属性,如下所示:jvmargvalue="-Dcom.
sun.
appserv.
iiop.
endpoints=host1:port1,host2:port2,.
.
.
"如果需要加权round-robin负载平衡,请执行以下步骤:a.
设置每个服务器实例的负载平衡权重.
asadminsetinstance-name.
lb-weight=weightb.
在sun-acc.
xml中,将ACC的com.
sun.
appserv.
iiop.
loadbalancingpolicy属性设置为ic-based-weighted.
.
.
.
.
.
.
部署客户机应用程序,同时使用--retrieve选项获取客户机jar文件.
将该客户机jar文件保留在客户机上.
例如:asadmindeploy--useradmin--passwordfilepw.
txt--retrieve/my_dirmyapp按下述命令运行应用程序客户机:appclient-clientclientjar-nameappname为RMI-IIOP加权Round-Robin负载平衡设置负载平衡权重在此示例中,包含三个实例的群集中负载平衡权重如下表所示进行设置.
8910示例11–1设置RMI-IIOP负载平衡和故障转移SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月214实例名称负载平衡权重i1100i2200i3300设置这些负载平衡权重的命令序列如下:asadminseti1.
lb-weight=100asadminseti2.
lb-weight=200asadminseti3.
lb-weight=300要测试故障转移,请停止群集中的一个实例,然后查看应用程序是否正常运行.
在客户机应用程序中还可以有断点(或休眠).
要测试负载平衡,请使用多个客户机并查看负载在所有端点上的分布情况.
接下来的操作设置RMI-IIOP负载平衡和故障转移第11章RMI-IIOP负载平衡和故障转移215216索引Aactive-healthcheck-enabled,130AddressList,默认JMS主机,202ApacheWebServerApplicationServer安装程序所做的修改,112安全文件,113负载平衡器插件进行的修改,109-111具有负载平衡器,107asadmincreate-jms-host命令,202asadminget命令,200asadminset命令,200authPassthroughEnabled,135CcacheDatabaseMetaData属性,73checkpoint-at-end-of-method元素,197ConnectionTrace属性,69CoreFile属性,69create-http-lb-config命令,126create-http-lb-ref命令,128create-node-agent命令,177DDatabaseName属性,69databuf选项,92DataBufferPoolSize属性,69datadevices选项,63DataDeviceSize属性,69,83dbpassword选项,59dbpasswordfile选项,59default-config配置,160delete-http-lb-ref命令,128delete-node-agent命令,180DevicePath属性,69,86devicepath选项,64devicesize选项,64disable-http-lb-application命令,133disable-http-lb-server命令,133EEagerSessionThreshold属性,69EagerSessionTimeout属性,69EJB容器,可用性,195eliminateRedundantEndTransaction属性,73enable-http-lb-application命令,129enable-http-lb-server命令,128EventBufferSize属性,69export-http-lb-config命令,131Ffast选项,81HHADBnodes,89217HADB(续)端口指定,67环境变量,60获取JDBCURL,72获取设备信息,90获取状态,88-90获取资源信息,92-94计算机维护,94监视,88-94扩展节点,83-84历史文件,96连接池设置,73连接池属性,73-74列出数据库,80配置,61-74启动节点,76启动数据库,78清除数据库,81删除数据库,81设置属性,65,67数据库名称,63数据损坏,82双网络,36-37添加计算机,84添加节点,84停止节点,77停止数据库,79异构设备路径,66用于JMS数据,204重新分段,86重新启动节点,78重新启动数据库,80HADB管理代理,启动,42-43,49-57HADB配置节点监控进程,40-41时间同步,39网络配置,34-37HADB设置,33hadbmaddnodes命令,84hadbmclear命令,81hadbmclearhistory命令,96hadbmcreate命令,62hadbmdelete命令,81hadbmdeviceinfo命令,90hadbmget命令,67hadbmlist命令,80hadbmrefragment命令,86hadbmresourceinfo命令,92-94hadbmrestart命令,80hadbmrestartnode命令,78hadbmstart命令,78hadbmstartnode命令,76hadbmstatus命令,88-90hadbmstop命令,79hadbmstopnode命令,77hadbm命令,57-61HistoryPath属性,70historypath选项,64hosts选项,64,86HTTPHTTPS路由选择,134会话故障转移,134-135HTTP_LISTENER_PORT属性,163HTTP_SSL_LISTENER_PORT属性,163HTTP会话,22分布式,185-186HTTPS会话故障转移,134-135路由选择,134HTTPS路由选择,134-135IIIOP_LISTENER_PORT属性,163IIOP_SSL_MUTUALAUTH_PORT属性,163InternalLogbufferSize属性,70IOP_SSL_LISTENER_PORT属性,163JJdbcUrl属性,70JMS创建主机,202高可用性,204连接池,22,202连接故障转移,202配置,200索引SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月218JMS主机列表,连接,201JMX_SYSTEM_CONNECTOR_PORT属性,163JMX侦听器,节点代理,182JNDI名称设置,74Lloadbalancer.
xml文件,131locks选项,92logbuf选项,92LogbufferSize属性,70MmaxStatement属性,73MaxTables属性,70MicrosoftInternetInformationServices(IIS),修改以实现负载平衡,115Nnilogbuf选项,92no-refragment选项,85no-repair选项,77nodes选项,89number-healthcheck-retries,131NumberOfDatadevices属性,70NumberOfLocks属性,70NumberOfSessions属性,70Ppassword属性,73Portbase属性,70portbase选项,65RRelalgdeviceSize属性,70rewrite-location属性,137roundrobin负载平衡,粘性,121Ssaveto选项,96serverList属性,73SessionTimeout属性,70set选项,65,66spares选项,65,81,85SQLTraceMode属性,70start-node-agent命令,179startlevel选项,77,78StartRepairDelay属性,70StatInterval属性,71stop-node-agent命令,179sun-ejb-jar.
xml文件,197SunJavaSystemMessageQueue,连接器用于,199SunJavaSystemWebServer,负载平衡器进行的修改,100sun-passthrough.
properties文件,和日志级别,148sun-passthrough属性,117SyslogFacility属性,71SysLogging属性,71SysLogLevel属性,71SyslogPrefix属性,71TTakeoverTime属性,71Uusername属性,73WWeb服务器,多个实例和负载平衡,139Web容器,可用性,190Web应用程序,可分布,188索引219保保证隔离层设置,73备备用端点,RMI-IIOP故障转移,212表表名称设置,73部部署,设置可用性,188持持久性,会话,22持久性存储,对于有状态会话Bean状态,194池池名称设置,74单单点登录,会话持久性,193-194动动态重新配置,负载平衡器,132端端点,RMI-IIOP故障转移,212端口号,和配置,161分分布式HTTP会话,185-186服服务器,群集,149服务器实例启用以进行负载平衡,128停止,133负负载平衡ApacheWebServer,107HTTP,关于,121HTTP算法,121MicrosoftIIS,115RMI-IIOP要求,212SunJavaSystemWebServer,100创建负载平衡器配置,126创建引用,128导出配置文件,131动态重新配置,132多个Web服务器实例,139更改配置,132会话故障转移,134-135幂等URL,138启用服务器实例,128启用应用程序,129日志消息,145设置,123停止服务器实例或群集,133停止应用程序,133运行状况检查器,129粘性roundrobin,121故故障转移JMS连接,202RMI-IIOP要求,212对于Web模块会话,185-186索引SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月220故障转移(续)关于HTTP,121有状态会话Bean状态,194管管理控制台用于创建JMS主机,202用于配置JMS服务,200滚滚动升级,139会会话HTTP,22持久性,22会话持久性单点登录,193-194对于Web模块,185-186对于有状态会话Bean,194,196会话存储对于HTTP会话,191对于有状态会话Bean,196会话故障转移,HTTP和HTTPS,134-135基基于Cookie的会话粘性,122检检查点操作,194选择方法,194,197节节点代理JMX侦听器,182安装,171部署,169创建,177关于,167启动,179日志,175删除,180,181停止,179验证区域,182与域管理服务器同步,171占位符,176节点监控进程和高可用性,40-41可可分布的Web应用程序,188可用性EJB容器级别,197对于Web模块,185-186对于有状态会话Bean,194级别,188启用和禁用,188连连接池HADB的设置,73HADB的属性,73-74路路由Cookie,128幂幂等URL,138索引221名名称设置,73命命名配置default-config,160端口号和,161共享,160关于,159默认名称,160目目标,负载平衡器配置,128配配置,请参见命名配置区区域,节点代理验证,182全全局事务支持设置,73群群集,149独立,26共享,26停止,133群集服务器实例,配置,160日日志记录查看节点代理日志,175负载平衡器,145时时间同步,39事事务会话持久性,194,197事务隔离设置,73数数据库供应商设置,73数据源类名称设置,73算算法HTTP负载平衡,121RMI-IIOP故障转移,212所所有连接均失败设置,73停停止服务器实例或群集,133应用程序,133索引SunJavaSystemApplicationServer9.
1高可用性管理指南2007年12月222网网络配置要求,34-37稳稳定的池大小设置,73响响应超时,127信信号量,37需需要连接验证设置,73验验证方法设置,73验证区域,节点代理,182已已启用的数据源设置,74异异常的服务器实例,129应应用程序启用以进行负载平衡,129升级而不使可用性受到损失,139应用程序(续)停止,133有有状态会话Bean,194会话持久性,194,196有状态会话Bean状态的检查点操作,188域域管理服务器服务器实例同步,172节点代理同步,171运运行状况检查器,129粘粘性roundrobin负载平衡,121中中心系统信息库,节点代理同步,171重重新装入时间间隔,128主主端点,RMI-IIOP故障转移,212索引223224
百星数据(baixidc),2012年开始运作至今,主要提供境外自营云服务器和独立服务器出租业务,根据网络线路的不同划分为:美国cera 9929、美国cn2 gia、香港cn2 gia、韩国cn2 gia、日本cn2 gia等云服务器及物理服务器业务。目前,百星数据 推出的日本、韩国、香港cn2 gia云服务器,2核2G/40G/5M带宽低至60元/月,600元/年。百星数据优惠码:优惠码:30...
Dynadot 是一家非常靠谱的域名注册商家,老唐也从来不会掩饰对其的喜爱,目前我个人大部分域名都在 Dynadot,还有一小部分在 NameCheap 和腾讯云。本文分享一下 Dynadot 最新域名优惠码,包括 .COM,.NET 等主流后缀的优惠码,以及一些新顶级后缀的优惠。对于域名优惠,NameCheap 的新后缀促销比较多,而 Dynadot 则是对于主流后缀的促销比较多,所以可以各取所...
提速啦(www.tisula.com)是赣州王成璟网络科技有限公司旗下云服务器品牌,目前拥有在籍员工40人左右,社保在籍员工30人+,是正规的国内拥有IDC ICP ISP CDN 云牌照资质商家,2018-2021年连续4年获得CTG机房顶级金牌代理商荣誉 2021年赣州市于都县创业大赛三等奖,2020年于都电子商务示范企业,2021年于都县电子商务融合推广大使。资源优势介绍:Ceranetwo...
怎么用代理为你推荐
支持ipad企业邮局系统企业邮件系统用什么软件好?magentomagento是哪年开发出来的,伴随着什么系统,整体运行效果,同类型的系统?美要求解锁iPhoneiphone美版解锁硬解大概需要多少钱啊sns网站有哪些有趣的SNS网站有哪些X1080012高等数学Ⅱ课程教学大纲tplink01cuteftp宜人贷官网宜人贷是不是骗人的三友网广州三友集团在韶关分公司么?银花珠树晓来看下雪喝酒的诗句
ip查域名 个人域名注册 欧洲欧洲vps 新通用顶级域名 vir html空间 河南服务器 dux 129邮箱 微软服务器操作系统 中国电信网络测速 中国电信测速网站 免费稳定空间 睿云 小夜博客 xshell5注册码 聚惠网 magento主机 windowsserverr2 连连支付 更多