ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 珠联璧合:WebSphere Application Server Community Edition 和IBM HTTP Server

珠联璧合:WebSphere Application Server Community Edition 和IBM HTTP Server

原创 Linux操作系统 作者:zazasophia 时间:2009-05-12 16:37:29 0 删除 编辑
IBM WebSphere应用服务器社区版WebSphere Application Server Community Edition)是基于Apache基金会的开源项目Geronimo构建的轻量级Java EE应用服务器,可以方便地用于管理和开发Java应用。它采用Tomcat作为Web容器,集成了多种Java EE新技术。

 

IBM HTTP Server 是基于Apache HTTP ServerWeb服务器。它负责处理来自客户端的HTTP请求,并向它们发送相应的HTTP应答。通常,IBM HTTP Server被用来处理静态内容,包括HTML页面和Applet等,因此经常为应用服务器提供辅助功能。在此,将IBM HTTP Server(以下简称IHS)和WebSphere Application Server Community Edition(以下简称WASCE配合使用有下几个益处:
  • IHSWASCE进行URL代理
  • IHSWASCE承担SSL加密解密任务
  • IHS处理静态页面,从而使WASCE可以专注于处理动态页面,例如JSPServlet
  • 两者协作实现集群和负载均衡.

  • WebSphere应用服务器(WebSphere Application Server)内置了IBM HTTP Server 并且包含IHS的管理控制台不同,为了使WASCE能与IHS协调工作,必须要做一些配置工作。本文将以WASCE 2.1.1.2IHS 7.0为例,讨论在Windows XP平台上如何对它们进行配置,以帮助WASCE提高多方面的性能。

    1.
    IBM HTTP Server的基本配置
    IHS的主要配置保存在/conf (IHS的安装目录) 文件夹下的httpd.conf文件中。配置文件的每一行包含一个指令,注释以#开头。通常IHS有如下一些默认的配置:
    # 服务器的根目录,此处仅为举例

    ServerRoot "C:/Program Files/IBM/IHS7"

     

    # 80端口侦听

    Listen 0.0.0.0:80

     

    # 用户能访问的文件根目录,默认为服务器安装目录下的htdocs文件夹

    DocumentRoot "C:/Program Files/IBM/IHS7/htdocs"

     

     # DocumentRoot文件夹的访问控制

    # 允许在此目录中使用符号连接。如果一个映射到目录的URL被请求,而此目录中又没有  index.html等索引页面,那么服务器会返回一个格式化后的目录列表。

    Options Indexes FollowSymLinks

    # 禁止使用.htaccess文件

    AllowOverride None

    # 规定allowdeny的优先级次序

    Order allow,deny

     # 允许所有用户访问DocumentRoot

    Allow from all


    IHS是一个模块化的服务器,我们可以通过配置文件中对服务器包含的模块进行功能增减。除了核心模块之外的多数模块都可以通过httpd.conf文件中指令进行动态加载。如果需要用某个特定的模块存在与否来决定是否作出某些配置的时候。指令一般都放在指令段中。例如:
    # 加载status_module模块,它位于ServerRootmodules文件夹

    LoadModule status_module modules/mod_status.so

     

    # 如果status模块被加载,则请求状态的扩展信息

    ExtendedStatus On

    IHS除了包含大部分Apache HTTP Server的模块之外,增加了LDAP认证模块和用于生成动态内容的FastCGI模块。IHS还提供了IKEYMAN工具用于管理密钥和证书,可以帮助我们提高WASCE的安全性。

     

    通常我们还需要用等指令来指定服务器的主机名和端口号,让IHS能够辨识自己,并提高可靠性。在本文中,我们仅针对本机进行部署和测试,因此对于主机名的配置,在此不作赘述。默认情况下,本机的IHS启动之后,在浏览器中访问http://localhost,会看到如下的结果:




    2.
      把WASCE隐藏在IHS之后
    在本机安装WASCE之后,其管理控制台(Administrative Console)的地址为http://localhost:8080. 可以想象一个远端的客户端并不想以一个类似http://:8080 的地址来访问WASCE, 为什么不是http://或者http://? 为了解决这个问题,我们可以借助IHS的正向和反向代理功能。

          IHS的正向代理功能可以将WASCE的地址映射到IHSURL空间,帮助客户端访问远程的WASCE(无论WASCEIHS是否在一台物理主机上),也能用于缓冲数据,以降低IHSWASCE之间的负载。 反向代理能调整由IHS发送给客户端的HTTP回应头中的URL WASCE上的页面看起来像是存在于IHS上一样,从而隐藏了WASCEIP地址,主机名和端口号。在停止IHS之后,对httpd.conf作如下的配置:
    # 加载代理模块和HTTP代理模块

    LoadModule proxy_module modules/mod_proxy.so

    LoadModule proxy_http_module  modules/mod_proxy_http.so

     

    <IfModule mod_proxy.c>

    # WASCE的服务器下/console映射到IHS空间中,若WASCE不在本机,localhos

    # 应为WASCEIP地址或可识别的主机名,8080WASCEHTTP端口。

    ProxyPass /console http://localhost:8080/console

     

    # 对所有WASCE 8080端口的访问作出的HTTP回复将只体现 IHSURL

    ProxyPassReverse / http:// localhost:8080

    IfModule>

      保存文件,启动WASCE并且重新启动IHS,在浏览器的地址栏输入http://localhost/console将会看到WASCE的管理控制台界面:





    3.
    IHS帮助WASCE提高安全性
    SSL (Secure Socket Layer)Netscape公司开发的一种安全传输协议,用于保证客户端和服务器之间的通信安全。客户端通常可以要对服务器进行身份验证,而服务器有时也对客户端进行鉴权。在身份得到确认之后,SSL负责加密和解密所有HTTPS请求和应答,包括鉴权信息(如用户名和密码)和客户端与服务器交换的所有数据。

      用户可以通过访问https://形式的URL来得到经SSL加密的内容。这样,用户既可以通过http://访问非安全的内容,也可以通过https访问到需要身份验证才能获取的特定内容。

    WASCE本身具有密钥库(keystore)和密钥(key)的配置功能,并且有Certificate Authority用于生成并发布证书,以支持较强的用户身份验证方法。我们可以自定义HTTPS连接器,还可以发布自签名的证书用于测试。用户可以访问8443端口(https://:8443)但是SSL加密势必影响服务器处理其他事务的速度,为此我们可以将这部分的工作交给IHS

     IHS附带有Key Management Utility工具用于管理密钥和证书。我们就借助这个工具创建自签名证书。

    <!--[if !supportLists]--> <!--[endif]--><!--[if !supportLists]-->1)    <!--[endif]-->首先我们创建一个新的密钥库文件testkey.kdb:




    <!--[if !supportLists]-->2)    <!--[endif]-->输入密码并且将保存至文件。默认情况下它被保存到了下的testkey.sth文件.




    <!--[if !supportLists]-->3)    <!--[endif]-->创建自签名证书。注意,只有在某些测试环境下,才使用自签名证书,否则应该向证书颁发机构 (Certificate Authority) 申请有效证书。


    • 密钥标签: 用于标识这个证书
    • 版本:X509 V3
    • 密钥大小: 1024
    • 签名算法: SHA1withRSA
    • 共用名: 必须和访问的URL中的主机名相匹配
    • 其他选项为可选。

       事实上Key Management Utility还提供了创建证书请求,接收证书请求,抽取证书等功能。
    在完成证书的配置之后,还需要修改httpd.conf 文件,让IHS使用我们刚才创建的自签名证书。


    # 加载SSL模块

    LoadModule ibm_ssl_module modules/mod_ibm_ssl.so

    # 443端口侦听

    Listen 443

    # 仅作用于443端口上的虚拟主机

    # 开启SSL功能

    SSLEnable

    KeyFile "c:/Program Files/IBM/IHS7/testkey.kdb"
    # 这一段是配置IHSWASCE的正向代理和反向代理

    ProxyPass /console http://localhost:8080/console

    ProxyPassReverse / http://localhost:8080/

    SSLDisable



      保存文件并且重新启动IHS,在浏览器的地址栏输入https:///console, 浏览器将弹出安全警报,因为我们使用了不被信任的自签名证书。若要继续访问, Mozilla FireFox中,我们可以选择添加例外;在Internet Explorer中可以选择继续访问该网站。



    4. 集群和负载均衡


    IHS还能帮助WASCE构成集群环境。集群 (cluster) 功能可以大幅度提高系统和应用的可用性和可靠性。 WASCEWeb容器Tomcat具备集群功能,它通过在集群中的多点广播 (multicast) 实现HTTP会话的复制,并且确保一个用户发向某一个节点的后续请求仍然会由同一个节点处理, 这被称为session affinity

    IHS7.0WASCE提供了专用的AJP代理模块和均衡模块,位于/modules/ WebSphereCE路径下,以帮助多个WASCE节点实现负载均衡和失败恢复。Apache Jserv Protocol (AJP) 协议用于WASCEIHS之间的通信。

    我们将借用WASCE示例[4]中用于展示Tomcat集群功能的例子, 说明WASCEIHS分别需要怎样的配置步骤。

    先对本机的WASCE进行配置:

    1)   WASCE的安装目录()下新建文件夹instance2, 然后将/var目录复制到instance2文件夹下。

    2)   分别修改两个实例的配置文件/var/config/config-substitutions.properties,例如分别作如下配置:


    clusterNodeNamenode1

    clusterName=mycluster

    PortOffset=0


    clusterNodeNamenode2

    clusterName=mycluster

    PortOffset=10


    这样,两个WASCE实例分别充当集群mycluster中的节点node1node2 第二个WASCE实例的PoetOffset不为0,以避免端口冲突。

    3)   分别启动两个WASCE实例。在启动第二个实例前,首先用set命令设置环境变量(注意命令写在一行):


    set GERONIMO_OPTS = -Dorg.apache.geronimo.server.name=instance2


    其中,instance2是第二个WASCE实例相对于WASCE安装目录的路径。然后用命令geronimo.bat run来启动。


    4)   tomcat-cluster文件夹下的两个Web应用servlet-examples-cluster-server1.warservlet-examples-cluster-server2.war分别部署在本机的node1node2实例上。






    接下来就要对IHS进行配置。停止IHS并修改httpd.conf:

    # 加载需要的模块

    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_ajp_module modules/WebSphereCE/mod_proxy_ajp.so
    LoadModule proxy_balancer_module modules/WebSphereCE/mod_proxy_balancer.so

     

    <IfModule mod_proxy.c>

    # 配置名为mycluster的均衡器, 两个节点的负载本别是50%。80098019分别是两个节点的AJP端口。

    <Proxy balancer://mycluster>
    BalancerMember ajp://localhost:8009/servlet-examples-cluster  loadfactor=50 route=NODE1

    BalancerMember ajp://localhost:8019/servlet-examples-cluster  loadfactor=50  route=NODE2

    Proxy>

    # mycluster来处理servlet-examples-cluster 这样的URL

    ProxyPass /servlet-examples-cluster balancer://mycluster/  stickysession=JSESSIONID

    IfModule>

     

    # 可以用IHSbalancer-manager来管理这个集群的成员和负载

    <Location /balancer-manager>
    SetHandler balancer-manager

    Location>


    配置完成之后,访问http://localhost/ servlet-examples-cluster, 可以看到目前活动的是node1。从servlet-examples-cluster/balancer-manager可以查看这两个节点的情况。若此时结点node1失效,用户对Server1的访问将被重定向至node2



    5. 总结


    总的来说,IHS可以帮助WASCE提高安全性,并且能帮助WASCE分担SSL加密和解密的任务,使WASCE可以专注于事物逻辑和其他事务的处理。另外,IHS能和WASCE一起完成应用的集群功能,在部署在不同WASCE节点上的Web应用之间进行负载均衡和失败恢复。




    参考资料:

    [1] IBM WebSphere Application Server 文档:

    http://publib.boulder.ibm.com/wasce/V2.1.1/en/index.html


    [2] Apache HTTP Server 2.2 文档:http://httpd.apache.org/docs/2.2/


    [3] 在WASCE中使用数字证书对客户机进行身份验证: 


    http://www.ibm.com/developerworks/cn/websphere/library/techarticles

    /0606_chillakuru/0606_chillakuru.html

    [4] 为WASCE配置集群环境:
       http://www.ibm.com/developerworks/cn/websphere/library/techarticles
         /0606_zhangsong/

    [5] WASCE示例下载:http://download.boulder.ibm.com/ibmdl/pub
         /software/websphere/wasce/





    IHS.JPG

    new_key.JPG

    save_key.JPG

    new_cert.JPG

    warn.JPG

    wasce.JPG

    cluster1.JPG

    cluster2.JPG

    balancer.JPG

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21588830/viewspace-594872/,如需转载,请注明出处,否则将追究法律责任。

    上一篇: WebSphere发展方向
    请登录后发表评论 登录
    全部评论

    注册时间:2009-05-07

    • 博文量
      3
    • 访问量
      6635