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


您有 1 条公共消息
  • 来自: 公共消息 标题: 3-5月ITPUB数据库 ... 内容: ITPUB与3月和5月分别安排了Oracle 11g DBA和Oracle性能优化培训,以及 ...

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



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

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

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


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



    精华贴数 0
    个人空间 0
    技术积分 3388 (527)
    社区积分 0 (1302135)
    注册日期 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 (527)
    社区积分 0 (1302135)
    注册日期 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 (527)
    社区积分 0 (1302135)
    注册日期 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 (527)
    社区积分 0 (1302135)
    注册日期 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 (527)
    社区积分 0 (1302135)
    注册日期 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 (527)
    社区积分 0 (1302135)
    注册日期 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 (527)
    社区积分 0 (1302135)
    注册日期 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 (527)
    社区积分 0 (1302135)
    注册日期 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 (527)
    社区积分 0 (1302135)
    注册日期 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证:060528号 联系我们