ITPUB??ì3
ITPUB论坛 » Websphere » 在WebSphere Commerce中多Instance的应用

标题: [转载] 在WebSphere Commerce中多Instance的应用
离线 petutor
资深会员



精华贴数 0
个人空间 0
技术积分 3388 (394)
社区积分 0 (1269037)
注册日期 2007-2-26
论坛徽章:1
会员2007贡献徽章     
      

发表于 2007-3-17 11:27 
在WebSphere Commerce中多Instance的应用

本文通过在Solaris/Oracle 的环境中实际搭建WebSphere Commerce的多应用服务的例子,介绍了如何在一个WAS环境中对同一个业务系统部署多个应用服务,以提高对硬件资源的有效利用,并适应日益增大的业务量对应用服务器的不同需求。


只看该作者    顶部
离线 petutor
资深会员



精华贴数 0
个人空间 0
技术积分 3388 (394)
社区积分 0 (1269037)
注册日期 2007-2-26
论坛徽章:1
会员2007贡献徽章     
      

发表于 2007-3-17 11:28 
一、引言

当前,越来越多的企业用户基于WebSphere应用服务器搭建业务系统。在实际应用中,在提高系统的可维护性的同时,如何更有效地利用硬件资源被越来越多的人所关注。

以WebSphere Commerce为例,它是基于WAS开发的电子商务应用平台,在安装以后必须建立一个实例(Instance)才能开展服务。在实际应用中,随着业务量的增大,企业对系统的可维护性都提出了更高的要求,同时为了满足系统24小时全天候的可用性,WebSphere Commerce除了真正用于提供服务的实例Production Server外,还提出建立一个实例Staging Server(1),它很好地解决了系统维护和数据更新的难题。然而,WebSphere Commerce的每一个应用实例都需要部署并运行在一个独立的环境里,分别把WebSphere Commerce的Production Server和Staging Server安装在不同的机器硬件上是一种选择,但是这需要更多的硬件资源。为提高硬件资源的利用,节约硬件成本,我们希望能在一台服务器上搭建Production Server 和Staging Server。

WebSphere Commerce多Instance的概念很好的解决了这个难题。在一台机器上可以部署多个应用实例(即应用服务器),每个应用实例独立运行和管理,如同运行在一台独立的机器上。这样,对于像WebSphere Commerce这样的有着上百人的开发和测试项目来说,我们就可以达到有效利用硬件资源,节约维护人力的投入的目的。同时,这种方式也能够给实际的客户应用带来开支上的节约。


只看该作者    顶部
离线 petutor
资深会员



精华贴数 0
个人空间 0
技术积分 3388 (394)
社区积分 0 (1269037)
注册日期 2007-2-26
论坛徽章:1
会员2007贡献徽章     
      

发表于 2007-3-17 11:28 
二、基本概念及体系结构

作为一个基于WAS的应用服务,WebSphere Commerce可以安装部署在多种操作系统上(如Windows、AIX、Solaris、Linux等),支持多种数据库(如DB2、Oralce、DB2 390等)以及各种WebServer(如IBMHttpServer、Internet Information Services、iPlanet等)。在一台机器上部署WebSphere Commerce的多个应用服务器时,每个应用服务需要对应一个数据库,同时,Web Server对每个应用服务器进行相应设置,这样,终端用户可以通过浏览器用不同的IP和Hostname对每个instance进行访问。

< WebSphere Commerce多 Instance结构图>




petutor 上传了这个附件:
2007-3-17 11:28
image002.jpg (34.6 KB)
 

只看该作者    顶部
离线 petutor
资深会员



精华贴数 0
个人空间 0
技术积分 3388 (394)
社区积分 0 (1269037)
注册日期 2007-2-26
论坛徽章:1
会员2007贡献徽章     
      

发表于 2007-3-17 11:29 
三、实现的步骤

3.1 操作系统配置

对于操作系统来说,主要是通过配置,使操作系统对外支持两个或多个IP。这样对于访问该机器的用户来说,就和对多服务器的访问和操作相似了。

下面,我们通过在一台Solaris服务器上配置两个IP来举例。一般来说,如果有多个网卡的话,可以每个网卡绑定一个IP。也可以通过单网卡配置多个虚拟接口和多个IP。我们用后者来举例。

1) 拷贝 /etc/hostname.hme0 到 /etc/hostname.hme0:1

2) 在hostname.hme0:1中加入另一个host name, 在hosts 文件中加入ip和hostname.

在下面的例子中, <IP1>(hostname1.cn.ibm.com)代表第一个IP和hostname; IP2(hostname2.cn.ibm.com) 代表第二个IP和hostname。


bash-2.05# more hosts
#
# Internet host table
#
127.0.0.1       localhost
IP1    hostname1  loghost
IP2    hostname2  loghost

IP1    hostname1.cn.ibm.com
IP2    hostname2.cn.ibm.com

bash-2.05# more hostname.hme0:1
hostname2



完成配置后,需要测试是否生效:

从远程ping和访问该Solaris server,通过两个不同的IP地址,得到的结果应该是相同的。

3.2 Web Server 配置

通过对Web Server的配置,使在一台服务器上,Web Server能够同时支持多个IP。下面我们还是通过在Solaris上iPlanet的配置来举例。

前提: iPlanet的安装和基本配置可以参考相应的Web server文档获得帮助。假设iPlanet已经成功安装,并支持一个IP地址。以下步骤将使iPlanet支持第二个IP地址。

1) 在iPlanet控制台,选择管理第二个IP对应的server name。

确认iPlanet server已经启动。

从<SunONE_HOME>目录夹, 输入 ./startconsole。在打开的IE窗口中,输入管理员用户名和密码,进入控制台的管理界面。

在管理服务器的选项中,选择第二个web server的全名。




petutor 上传了这个附件:
2007-3-17 11:29
image004.jpg (33.6 KB)
 

只看该作者    顶部
离线 petutor
资深会员



精华贴数 0
个人空间 0
技术积分 3388 (394)
社区积分 0 (1269037)
注册日期 2007-2-26
论坛徽章:1
会员2007贡献徽章     
      

发表于 2007-3-17 11:30 
2) 为每一个可访问端口创建Listen Socket

从顶端菜单选择Preferences Tab页。

选择'Add Listen Socket'按钮,进入添加Listen Socket屏幕。

Listen Socket ID: 输入ls<port_to_be_listened_to>。如希望监听443端口,可以写ls443;

IP Address: 输入0.0.0.0 表示可以监听来自所有IP的请求。这里可以输入0.0.0.0,然后在后续的第6步修改并确认为只监听来自第二个IP。也可以在此步中直接输入第二个IP;

Port: 输入需监听的端口号;

Servername: 输入第二个IP对于的hostname,需要输入全名。 (e.g. mycomputer.cn.ibm.com);

Security: 选择 enable;

Default VS: 此输入域指出哪个VS将会处理请求,若该请求不对应任何IP和URLhost的时候。可以先使用默认值,在后续步骤中将会修改。




petutor 上传了这个附件:
2007-3-17 11:30
image006.jpg (37.62 KB)
 

只看该作者    顶部
离线 petutor
资深会员



精华贴数 0
个人空间 0
技术积分 3388 (394)
社区积分 0 (1269037)
注册日期 2007-2-26
论坛徽章:1
会员2007贡献徽章     
      

发表于 2007-3-17 11:31 
重复上面的步骤,配置每一个WebSphere Commerce的端口,如端口443, 8000, 8002和8004以及Payments需要的5432和5433。




petutor 上传了这个附件:
2007-3-17 11:31
image008.jpg (43.88 KB)
 

只看该作者    顶部
离线 petutor
资深会员



精华贴数 0
个人空间 0
技术积分 3388 (394)
社区积分 0 (1269037)
注册日期 2007-2-26
论坛徽章:1
会员2007贡献徽章     
      

发表于 2007-3-17 11:31 
3) 为每一个新创建的Listen Socket建立虚拟服务器类

选择Virtual Server Class TAB页,选'Add Class'按钮,进入添加Virtual Server Class屏幕。

Name:输入新的class name,格式为 <short_hostname><port_to_listen_to>-CLASS (如 mycomputer443-CLASS)

Class docroot:输入一般的所有类的文档所在根目录的位置。(如 /usr/iplanet/servers/docs)




petutor 上传了这个附件:
2007-3-17 11:31
image010.jpg (28.44 KB)
 

只看该作者    顶部
离线 petutor
资深会员



精华贴数 0
个人空间 0
技术积分 3388 (394)
社区积分 0 (1269037)
注册日期 2007-2-26
论坛徽章:1
会员2007贡献徽章     
      

发表于 2007-3-17 11:32 
重复上面的步骤,为每一个端口建立虚拟服务器类,即端口443, 8000, 8002和8004以及Payments需要的5432和5433。

4) 为每一个虚拟服务器类创建虚拟服务器

在Virtual Server Class面板,选择'Manage Classes'按钮。

选择一个类,点击'Manage'按钮。

第一个应该是<short_hosname>443-CLASS (如 mycomputer443-CLASS). 选择左面板上的'Add Virtual Server'按钮,进入创建虚拟服务器屏幕。

Name: 输入以下格式 <short_hostname><port_to_listen_to>-VS (如 mycomputer443-VS);

Connections: 选择已创建的监听端口的连接(如对于虚拟服务器mycomputer443-VS, 选择ls443); URLhosts:此处先输入第二个hostname的全名。在后续步骤中,将加入有空格的短名格式。但由于有格式检查,所以只能在后续步骤中加入。




petutor 上传了这个附件:
2007-3-17 11:32
image014.jpg (34.19 KB)
 

只看该作者    顶部
离线 petutor
资深会员



精华贴数 0
个人空间 0
技术积分 3388 (394)
社区积分 0 (1269037)
注册日期 2007-2-26
论坛徽章:1
会员2007贡献徽章     
      

发表于 2007-3-17 11:32 
重复上面的步骤,为每一个虚拟服务器类创建虚拟服务器,即端口443, 8000, 8002和8004以及Payments需要的5432和5433。




petutor 上传了这个附件:
2007-3-17 11:32
image016.jpg (32.34 KB)
 

只看该作者    顶部
离线 petutor
资深会员



精华贴数 0
个人空间 0
技术积分 3388 (394)
社区积分 0 (1269037)
注册日期 2007-2-26
论坛徽章:1
会员2007贡献徽章     
      

发表于 2007-3-17 11:33 
5)在server.xml中加入第二个hostname的短名格式

打开<SunONE_HOME>\<server_name>\config\server.xml,搜索每一个urlhosts="<long hostname>" ,在长名前加入短名。如修改 urlhosts="mycomputer.torolab.ibm.com" 为urlhosts="mycomputer mycomputer.torolab.ibm.com".

6) 修改或确认"server.xml"

编辑<SunONE_HOME>\<server_name>\config\server.xml 查找关键字类似于ip="0.0.0.0", 此处为第二步填写的IP Address ,若此处为0.0.0.0,则将此关键字替换为ip="<real IP>".

举例来说,这是修改前的server.xml: (hostname: juggle.cn.ibm.com)


  ...

<SERVER legacyls="ls1">
<VARS accesslog="/usr/iplanet/servers/https-wcs211_2.cn.ibm.com/
logs/access"/>
    <LS id="ls1" ip="0.0.0.0" port="80" security="off"
        acceptorthreads="1">
    <CONNECTIONGROUP id="group1" matchingip="default"
        servername="juggle.cn.ibm.com" defaultvs="https-juggle.cn.ibm.com"/>
    </LS>
    <MIME id="mime1" file="mime.types" />
    <ACLFILE id="acl1" file="/usr/iplanet/servers/httpacl/generated.
        https-juggle.cn.ibm.com.acl" />
    <VSCLASS id="defaultclass" objectfile="obj.conf"
        rootobject="default" acceptlanguage="off">
    <VARS docroot="/usr/iplanet/servers/docs" user="" group=""
        chroot="" dir="" nice=""/>
      <VS id="https-juggle.cn.ibm.com" connections="group1"
          mime="mime1" urlhosts="juggle.cn.ibm.com" aclids="acl1">
        <VARS webapps_file="web-apps.xml" webapps_enable="on" />
        <USERDB id="default" database="default" />
      </VS>
    </VSCLASS>
</SERVER>



这是修改后的server.xml:



  ...

<SERVER legacyls="ls1">
<VARS accesslog="/usr/iplanet/servers/https-juggle.cn.ibm.com/
logs/access"/>
    <LS id="ls1" ip="IP2" port="80" security="off"
        acceptorthreads="1">
    <CONNECTIONGROUP id="group1" matchingip="default"
        servername="juggle.cn.ibm.com" defaultvs="https-juggle.cn.ibm.com"/>
    </LS>
    <MIME id="mime1" file="mime.types" />
    <ACLFILE id="acl1" file="/usr/iplanet/servers/httpacl/
        generated.https-juggle.cn.ibm.com.acl" />
    <VSCLASS id="defaultclass" objectfile="obj.conf"
        rootobject="default" acceptlanguage="off">
    <VARS docroot="/usr/iplanet/servers/docs" user="" group=""
        chroot="" dir="" nice=""/>
      <VS id="https-juggle.cn.ibm.com" connections="group1"
          mime="mime1" urlhosts="juggle.cn.ibm.com" aclids="acl1">
        <VARS webapps_file="web-apps.xml" webapps_enable="on" />
        <USERDB id="default" database="default" />
      </VS>
    </VSCLASS>
</SERVER>



7)使应用生效

在屏幕右上角点击'Apply',点击' Apply Changes'按钮,输入密码重新启动服务器即可。

测试Web server 配置成功。

打开IE,输入第二个IP对应的hostname,可以看到正确页面返回。


Port 80:  [url]http://[/url]<fully_qualified_hostname>
Port 443: [url]https://[/url]<fully_qualified_hostname>
Port 8000: [url]https://[/url]<fully_qualified_hostname>:8000
Port 8002: [url]https://[/url]<fully_qualified_hostname>:8002
Port 8004: [url]https://[/url]<fully_qualified_hostname>:8004



如果使用了payment,则还需测试:


Port 5432: [url]http://[/url]<fully_qualified_hostname>:5432
Port 5433: [url]https://[/url]<fully_qualified_hostname>:5433



3.3 数据库设置

通过对数据库的设置,使数据库能够支持两个或多个不同的Database。

下面还是通过Solaris上Oracle中建立第二个Database来举例。

1)创建一个新的数据库(database)。对于Oracle来说,需要建立一个Oracle DB 的实例来放置新的DB数据。使用Oracle用户,在<ORACLE_HOME/bin>目录下,运行dbca来启动数据库配置助手。




petutor 上传了这个附件:
2007-3-17 11:33
image018.jpg (21.57 KB)
 

只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问