1. 介绍
当前,越来越多的企业用户基于WebSphere应用服务器和DB2数据库环境搭建业务系统,实现电子商务。随着业务量的增大,企业对系统的负载量和高可用性提出了更多的要求,特别是一些关键业务,如金融,通信,交通等,要求确保系统24*7*365的可用性。通过WAS ND集群,可以实现包含多个应用服务器的分布式环境,确保系统的吞吐量和高可用性。本文通过两个实际场景,介绍如何从头搭建一个WAS ND水平集群环境以及如何将一个已有的单节点(或三节点)Web环境扩展成五节点的集群环境。
2. WAS ND集群基本概念及体系结构
什么是集群?WAS集群由一组应用服务器组成,每个服务器上部署了同样的应用程序。通过集群可以实现可扩展性(服务更多客户,提高吞吐量),负载均衡(平衡负载资源,使资源得以有效利用),高可用性(提供故障恢复和补偿机制,在关键性业务中提供容错功能)。WAS ND提供水平集群和垂直集群两种形式,垂直集群是指同一机器上部署多个服务器,充分利用硬件资源,而水平集群利用多台机器资源,每台机器部署相同的应用。本文主要侧重水平集群,但是其中的很多概念对于垂直集群也是适用的。
图2.1是ND分布式环境的体系结构,包括单元、节点、服务器等基本概念。每个单元是单一管理域中的一组节点,在基本版和演示版中,一个单元只包含一个节点,每个节点可以有多个服务器,但是每个服务器的配置文件是单独存储和维护的。每个单元可以包含一个或多个集群,也可以不包含集群。在分布式环境中,每个单元包含多个节点,这些节点被统一管理,而且它们的配置文件被中心化到单元主配置文件中。配置管理器线程负责管理这些集中配置文件,并且将任何配置变化同步到每个节点上。节点是服务器线程的逻辑组,每台机器上只能有一个节点,通过节点代理器同配置管理器通信。在ND环境中,WAS plugin起到负载均衡的作用,在plugin-cfg文件中可以定义每个服务器的权重,根据权重值,plugin决定将一个请求定向到哪个服务器。
图2.1WAS 6.0 ND分布式环境的体系结构
3. 搭建WAS ND集群环境
在实际的企业应用中,存在两种不同的集群场景,一种是从头搭建集群环境,然后将应用部署到集群中;另外一种是基于已有的单节点环境(或三节点环境)扩展成集群环境。本文将会覆盖这两种场景的配置和部署,为读者提供切实可行的指导。
图3.1是最终的集群环境,包含五个节点,分布在五台机器上,一台用于部署Deployement Manager,作为集中管理接口管理WAS集群成员;两台作为WAS集群成员,具体处理商业逻辑;一台作为Web服务器,用于接收用户请求,并通过plugin配置文件将负载均衡到WAS集群成员上。一台作为数据库节点,存储企业数据。此例中, DM节点和Web服务器节点是Window操作系统,其余均为AIX5.2操作系统。对于Web服务器的选择,可以是任何WAS支持的服务器,在此我们选择IBM HTTP Server(IHS),对于其他Web服务器,其基本原理是一样的,不同的是某些配置和操作需要手工处理。对于数据库服务器,其基本操作完全一致,此例中我们选择DB2。
图3.1 五节点cluster拓扑
场景1:从头搭建ND集群环境
在这个场景中,企业一开始就有集群环境的需求,这就需要首先搭建集群环境,然后在cluster上部署企业应用程序。以下是详细操作步骤,最后通过部署一个企业应用来测试。
一. 准备WAS 配置管理节点
1. 在silkpc01 服务器上安装WAS6 ND 版本(安装结束后不要立即创建profile).注意安装最新的补丁.
2. 用profile向导创建一个配置管理profile. 首先选择配置管理profile作为profile类型,默认的DM profile名称是Dmgr01.
3. 接下来的步骤选择默认值,记住SOAP连接端口号,默认值是8879.这个端口号会在以后的配置中用到。
4. 运行
5. 登陆http://silkpc01.cn.ibm.com:9060/admin管理控制台确认安装是否成功.
二. 准备Web Server节点
1. 在silkpc06服务器上安装 IBM IHS6.0(选择典型安装)
2. 确保IHS安装成功. 启动Web server,测试http://silkpc06/返回页
三. 安装配置WAS Plugin
对于静态Web页面请求,Web Server会直接处理并将结果返回给终端用户。而对于动态Web页面,如JSP,Servlet等,需要WAS plugin将请求传递给WAS Web容器或者EJB容器来处理。下面将介绍如何安装和配置WAS plugin应用。
1. 确认IBM IHS6.0安装成功后,安装WAS plugin应用程序,选择"IBM HTTP Server V6"
2. 在接下来的步骤中选择plugin的安装路径,IHS配置文件httpd.conf的位置,指定Web服务名字,缺省是webserver1
3. 然后选择Deployement Manager所在服务器的作为应用服务器,这里是silkpc01
四. 把Web Server节点加入配置管理服务器.
1. 开启IHS的admin管理: 在silkpc06
2. 在silkpc06的服务管理面板中启动IBM HTTP Server 和 IBM HTTP Administration Server.
3. 将silkpc06的
4. 在silkpc01上启动DM服务 < was-install >/profiles/ profiles/Dmgr01/bin/ startManager.bat.
5. 在silkpc01打开一个命令行窗口,运行 6. 到配置管理控制台确认Web Server被成功加入. 7. 点击webserver1, 进入后在"additional properties"页中点击"remote web server",输入在第1步中生成的用户名和密码。这样Web Server就可以被配置管理器进行集中管理,包括停止/启动,以及plugin文件的生成和部署。 五. 准备应用服务器节点 1. 在psvt12 服务器上安装WAS6,注意安装最新的WAS补丁 2. 执行< was-install >/ bin/ProfileCreator/ pctAIX.bin 启动profile向导. 3. 选择应用服务profile作为profile类型. 4. 其余步骤使用默认值安装. 5. 在另外一个WAS节点psvt07上执行1至5步. 六. 把应用服务器节点加入到集中管理单元 1. 为保持同步,确保silkpc01, psvt12 和psvt07三台机器上的时间差不超过5分钟. 2. 在psvt12上执行< was-install >/ profiles/AppSrv01/bin/startServer.sh server1 启动 server1 3. 在psvt12上执行< was-install >/ profiles/AppSrv01/bin/addNode.sh 4. 在另外一台节点psvt07上重复2至3步将此节点也加入到集中管理单元. 5. 在配置管理控制台确认psvt07和psvt12加入到集中管理单元,如下图: 七. 准备数据库节点 1. 在数据库服务器psvt06上安装DB2 v8.2. 八. 创建cluster 1. 在WAS节点psvt07和psvt12上运行 2. 登录管理控制台,创建Cluster。输入Cluster名字,点击Next. 3. 输入psvt07作为成员名字, 在"Select node"下拉列表中选择psvt07Node01, 点击Apply. 4. 在同一页面输入psvt12作为成员名字, 选择psvt12Node01, 点击Apply. 5. 点击Next查看Cluster信息. 6. 点击finish创建cluster 7. 点击save保存和同步cluster(注意:在Cluster环境中,保存任何修改时都应该选上"与节点同步"的选项) 8. 确认cluster创建成功.从下图可以发现psvt07和psvt12已经作为cluster成员 至此我们已经完成了cluster的创建,接下来需要部署一个企业应用来测试。 九. 创建数据源(Datasource) 为了让将来发布在Cluster上的应用能连接到数据库, 我们需要在psvt07和psvt12节点上创建相同的数据源. 1. 登录管理控制台, Security'Global security->JAAS Configuration->J2C Authentication data , 点击New. 2. 输入数据库节点上的数据库用户及密码,点击Apply保存 3. 进入管理控制台, Resource'Jdbc Provider, 选择psvt07节点.然后点击New创建一个新的Jdbc Provider. 注意此处应该是在节点范围。如果在cluster级别,可能出现问题。 4. 选择Jdbc Provider类型和实现类 5. 点击Apply按钮保存Jdbc Provider, 并点击Data sources. 6. 点击New创建一个新的Data sources. 7. 输入jdbc/sample作为JNDI名字. 8. 输入数据库sample和数据库节点所在的主机名,选择上面新建的J2C认证. 9. 保存和同步新建的内容. 10. 设置psvt07节点的变量. Enviromnet->Wesphere Variables, 选择psvt07节点并设置DB2 JDBC driver路径. 11. 重复5至12步, 在psvt12节点上创建一个相同的DataSource. 12. 在silkpc01上重启DM服务, 在psvt07和psvt12上重启nodeagent服务。可以通过"Test Connection"测试节点的数据源配置是否正确。 十. 部署应用程序,测试集群环境 1. 下载应用程序到本地并解压缩。 2. 在数据库节点创建数据库sample(确保数据库名和第九步中键入的数据库名一致),并创建表(ddl.txt),加载数据(data.txt)。 3. 登录管理控制台发布应用, Applications->Install New Application, 选择Department.ear 作为发布的应用, 点击Next. 4. 选择default_host作为 Virtual host, 点击Next. 5. 输入应用的名字, 点击Next. 6. 在server列表中选择 TestCluster, 在模块(Module)列表中选择DepartmentEJB,点击Apply. 7. 按住Ctr键, 在server列表中选择 TestCluster和WebServer1, 在模块列表中选择DepartmentWeb, 点击Apply. 8. 点击Next. 9. 确认CurrentBackendId 为DB2UDBNT_V82_1,点击Next. 10. 点击Next. 11. 在应用部件列表中, 输入jdbc/sample 作为DepartmentEJB的Data Source 的JNDI名字. 12. 忽略出现的警告,点击Continue. 13. 在应用部件列表中, 输入jdbc/sample 作为DepartmentEJB的Data Source 的JNDI名字. 14. 忽略出现的警告,点击Continue. 15. 点击Next. 16. 确认DepartmentWeb的Virtual host 是default_host, 点击Next. 17. 点击Next. 18. 点击Finish部属应用在Cluster上. 19. 保存和同步新的修改. 20. 重新启动cluster. 21. 确认应用程序启动后,在IE浏览器键入:http://silkpc06/DepartmentWeb/getDepartmentName.html,输入部门号A00并提交,确认系统返回一个正确的页面. 场景2: 拆分WAS 单节点环境为ND集群环境 如果企业的最初应用搭建在单节点之上,即WAS应用服务器、Web服务器和数据库都在同一物理机器上。或者应用搭建在三节点,WAS应用服务器、Web服务器和数据库分布在三台机器。但是随着业务需求的增加,用户希望在保持现在投资的基础上提供更高的扩展性,容错性和处理性能,这就有了集群环境的需求。本场景将介绍如何将此单节点(或三节点)扩展成图3-1拓扑的五节点环境。对于单节点环境,您需要从第一步开始操作,而对于已有的三节点环境,则可以省去第-和第二步的部分操作,免去单节点拆分成三节点的步骤,而进入第三步。 在此我们假设本文提供的应用程序已经发布到psvt12节点,此节点包含WAS, IHS和DB2环境,并且应用系统可以正常的工作。 (http://psvt12/DepartmentWeb/getDepartmentName.html). 一. 准备安装其他各节点 1. 在silkpc01节点上安装WAS6 ND 版本, 并用profile向导创建一个配置管理profile. 2. 在另外一个Cluster成员psvt07 节点上安装WAS6 ND 版本, 并用profile向导创建一个应用服务profile. 并在此节点安装DB2客户端. 3. 在Web服务器 silkpc06上安装IBM IHS 6.0 和WAS Plugin. 安装Plugin时,选择Remote方式, 选择silkpc01为应用服务器。并开启IHS的admin远程管理服务. (请参照场景一) 4. 在数据库节点psvt06节点上安装DB2 8.2服务器 二. 把psvt12上的应用拆分到三节点上 1. 在psvt12节点上备份当前的数据库,并把该数据库备份文件上传到psvt06节点, 然后在psvt06节点上恢复该数据库. 2. 在psvt12的管理控制台(http://psvt12.cn.ibm.com:9060/ibm/console/)修改server1的DataSource: 把DataSource的服务器名指向数据库服务器psvt06. 然后测试连接. 3. 在psvt12的管理控制台把应用系统所映射到的虚拟主机(virtual host)-主机别名(Host Aliases)属性页的Host Name 指向Web服务器silkpc06. 4. 在psvt12的管理控制台重新生成Web server 的plug-in, 然后把psvt12节点生成的plugin-cfg.xml 文件拷贝到silkpc06节点的相对应目录下. 5. 将psvt12节点的httpd.conf 文件文件拷贝到silkpc06节点的相对应目录下, 并把该httpd.conf文件中的所有host name 改为silkpc06. 6. 重启psvt12节点上的 server1和silkpc06 节点上的Web Server. 7. 这样就将psvt12单节点上的应用拆分为silkpc06(Web节点), psvt12(WAS节点), psvt06(DB2节点)三层结构. 8. 访问http://silkpc06/DepartmentWeb/getDepartmentName.html验证三节点拆分成功. 三. 把各节点加入集中管理单元 本部分首先需要修改一些配置参数(1-4步),接着配置Web Server加入到管理单元(6-14步),并将WAS节点加入到管理单元(5,15和16步) 1. 确认silkpc01, psvt12 和psvt07三台机器上的时间差不超过5分钟. 2. 在psvt12节点上修改addNode.sh 命令的JVM参数: a. 用文本编辑器打开 b. 找到下面的命令行 c. 在该命令行下面加入下面的参数 3. 在psvt12节点上修改SOAP的参数: a. 用文本编辑器打开 b. 找到下面的参数 c. 把它的值改为6000 注意: 在把psvt12加入到管理单元后,把该参数改回到原来的值. 4. 在DM管理控制台(silkpc01)修改DM的JVM参数: System Administration > Deployment Manager > Java and Process Management > Process Definition > Java Virtual Machine. a. 把Initial Heap Size 设为: 256 b. 把Maximum Heap Size 设为: 512 5. 在psvt12节点运行下面的命令把psvt12加入到管理单元: < profile_dir >/bin/addNode.sh silkpc01.cn.ibm.com 8879 -includeapps 注意: -includeapps 参数是表示把该节点上的应用一起加入管理单元. 6. 在DM控制台新建一个unmanaged节点,把该节点的hostname指向silkpc06. 通过(System Administration >Nodes>Add Node)命令 7. 在DM控制台新建一个webserver, 并把它放置在刚建的unmanaged节点上. Servers>Web servers>New 8. 点Next, 输入IHS 和Plug-in的安装路径. 9. 点Next, 设置IHS admin的管理员和密码(在第一部分的第3步中已经创建). 注意: 确保在8,9步中输入了正确的值, 否则Plug-in的变化将不能自动发布到Web Server节点. 10. 点Next, 用默认值完成剩余步骤. 11. 在DM控制台新建一个Virtual host, 并把Host Aliases的Host Name 指向silkpc06. 12. 把已有的应用系统映射到Server1和webserver1上, Applications>Enterprise Applications>AppName>Additional Properties>Map modules to servers. 13. 在server列表中选择 Server1, 在应用部件列表中选择DepartmentEJB,点击Apply. 按住Ctr键, 在server列表中选择Server1和WebServer0, 在应用部件列表中选择DepartmentWeb, 点击Apply. 14. 把应用中的web模块映射到新建的virtual host上. Applications>Enterprise Applications>AppName>Additional Properties> Map virtual hosts for Web modules, 把DepartmentWeb映射到刚建的virtual host上. 15. 在psvt7节点运行下面的命令把psvt7加入到管理单元: < profile_dir >/bin/addNode.sh silkpc01.cn.ibm.com 8879 16. 在DM控制台为psvt7节点添加Datasouce所用到的WebSphere变量, Environment> WebSphere Variables >选择psvt07节点并设置下图中被红线框住的变量. 四. 创建cluster 1. 在WAS节点psvt07和psvt12上运行 2. 登录DM管理控制台,Servers>Cluster>New,输入Cluster名字, 并选择psvt12节点上的server1加到cluster,点击Next. 3. 输入psvt12作为成员名字, 选择psvt12节点,点击Apply. 4. 确认server1和psvt12节点已经被加入到Cluster成员列表中, 点击Next. 5. 点击Finish创建cluster. 6. 把psvt07加入到cluster: Servers>Cluster>ClusterName>Additional Properties>Cluster members>New 7. 输入psvt07作为成员名字, 选择psvt07节点,点击Apply,点击Next. 8. 点击Finish把把psvt07加入到cluster. 9. 确认应用程序被正确映射: Applications>Enterprise Applications>AppName>Additional Properties>Map modules to servers. 10. 确认 DepartmentEJB被映射到TestCluster, DepartmentWeb被映射到TestCluster+ WebServer0. 如果映射有误,可以在该页重新映射. 五. 测试集群环境应用程序 同场景1第十步的最后一步操作。 4. 结束语 随着电子商务的广泛应用,越来越多的企业希望搭建WAS集群环境以提高应用的扩展性和性能。本文针对实际需求,详细介绍了如何搭建集群环境以及如何扩展已有的应用环境为WAS集群环境。