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

IBM WebSphere 应用服务器社区版 WebSphere Application Server Community Edition )是基于 Apache 基金会的开源项目 Geronimo 构建的轻量级 Java EE 应用服务器,可以方便地用于管理和开发 Java 应用。它采用 Tomcat 作为 Web 容器,集成了多种 Java EE 新技术。

 

IBM HTTP Server 是基于 Apache HTTP Server Web 服务器。它负责处理来自客户端的 HTTP 请求,并向它们发送相应的 HTTP 应答。通常, IBM HTTP Server 被用来处理静态内容,包括 HTML 页面和 Applet 等,因此经常为应用服务器提供辅助功能。在此,将 IBM HTTP Server (以下简称 IHS )和 WebSphere Application Server Community Edition (以下简称 WASCE 配合使用有下几个益处:
IHS WASCE 进行 URL 代理 IHS WASCE 承担 SSL 加密解密任务 IHS 处理静态页面,从而使 WASCE 可以专注于处理动态页面,例如 JSP Servlet 两者协作实现集群和负载均衡.
WebSphere 应用服务器( WebSphere Application Server )内置了 IBM HTTP Server 并且包含 IHS 的管理控制台不同,为了使 WASCE 能与 IHS 协调工作,必须要做一些配置工作。本文将以 WASCE 2.1.1.2 IHS 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, 会看到如下的结果:

bb


2.
  把 WASCE 隐藏在 IHS 之后
在本机安装 WASCE 之后,其管理控制台 (Administrative Console) 的地址为 http://localhost:8080. 可以想象一个远端的客户端并不想以一个类似 http://:8080 的地址来访问 WASCE, 为什么不是 http:// 或者 http://? 为了解决这个问题,我们可以借助 IHS 的正向和反向代理功能。      IHS 的正向代理功能可以将 WASCE 的地址映射到 IHS URL 空间,帮助客户端访问远程的 WASCE (无论 WASCE IHS 是否在一台物理主机上),也能用于缓冲数据,以降低 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 的管理控制台界面:

bb



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


bb


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


bb


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


bb

  • 密钥标签: 用于标识这个证书
  • 版本: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 中可以选择继续访问该网站。


bb


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 中的节点 node1 node2 第二个 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实例上。


bb


bb



接下来就要对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


bb


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/





fj.pngIHS.JPG

fj.pngnew_key.JPG

fj.pngsave_key.JPG

fj.pngnew_cert.JPG

fj.pngwarn.JPG

fj.pngwasce.JPG

fj.pngcluster1.JPG

fj.pngcluster2.JPG

fj.pngbalancer.JPG

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

转载于:http://blog.itpub.net/21588830/viewspace-594872/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值