IHS + Plugin 配置网页跳转

hs:ibm http server
ihs plugin:ibm http server
关于ihs和plugin的一些知识
ihs就是一个以apache为基础的web服务器,由于其出色的静态页面处理。
ihs的安装就是next,next完成。
plugin的安装也是一步一步完成,需要注意的是其中的一步需要指定ihs的配置文件,这个时候安装程序会对ihs的配置文件httpd.conf修改
添加以下两行:

Xml代码   收藏代码
  1. LoadModule was_ap20_module "D:\Program Files\IBM\WebSpherePlugins\bin\mod_was_ap20_http.dll"  
  2. WebSpherePluginConfig "D:\Program Files\IBM\WebSpherePlugins\config\webserver1\plugin-cfg.xml"  

 第一行:估计是连plugin的一个dll文件
第二行:就是指定了plugin安装目录的的配置文件
如果仅仅是简单的web请求转发到应用服务器,仅仅需要配置plugin-cfg.xml就可以。
一个最重要的配置入口如下    
 

Xml代码  
  1. <Route ServerCluster="angelServer_Cluster"  
  2.         UriGroup="angelServer_Cluster_URIs" VirtualHostGroup="default_host"/>  

 
        
 这个route指的是 一个url来自"default_host"的"angelServer_Cluster_URIs"请求会通过ServerCluster定义的服务器做请求转发。
 
 1.VirtualHostGroup的定义
 以下是一个典型的VirtualHostGroup定义

Xml代码  
  1. <VirtualHostGroup Name="default_host">  
  2.        <VirtualHost Name="*:9080"/>  
  3.        <VirtualHost Name="*:80"/>  
  4.        <VirtualHost Name="*:9443"/>  
  5.    </VirtualHostGroup>  

 
    上述的定义描述了一个虚拟主机的组,所有满足这个组的任何一个虚拟主机的url请求都是符合这个route的转发要求的,
    官方的解释如下:
     The name used for a virtual or real machine used to determine if incoming requests should be handled by WebSphere Application Server or not. Use this element to specify host names that will be in the HTTP Host header which should be seen for requests that
need to be handled by the application server.
    
    比如:http://127.0.0.1/angelServer就是一个符合请求的url。
    为什么这里取名为VirtualHostGroup而不是HostGroup,我的理解是目前互联网的大部分应用都是基于虚拟主机的,很有可能plugin所安装的机器
    上面的webServer就是做了一个多虚拟主机。
      补充:开开始对于拟主机的理解还仅仅限于dns,不错dns是必须支持的。看看以下场景
      A:请求www.aaa.com/index.html
      B.请求www.bbb.com/index.html
           而且这两个域名只对应一个主机。仅仅单靠dns是无法做到的,必须要用到虚拟主机的技术。如果仅靠DNS的那AB两个请求就是一个资源了,无法定制个性的主页。
    
 2.UriGroup的定义
 

Xml代码  
  1. <UriGroup Name="angelServer_Cluster_URIs">  
  2.         <Uri Name="/angelServer/remoting/*"/>  
  3.         <Uri Name="/angelServer/*"/>  
  4.   </UriGroup>  

 
  试想一下VirtualHostGroup定义了虚拟主机的条件,后面的url请求串也需要做限制。
  上述的定义就是把所有满足/angelServer/remoting/*和/angelServer/* 的请求做转发。
  
 3.ServerCluster的定义

Xml代码  
  1. <ServerCluster Name="angelServer_Cluster" CloneSeparatorChange="false" LoadBalance="Round Robin"   
  2.         PostSizeLimit="-1" RemoveSpecialHeaders="true" RetryInterval="60">  
  3.         <Server Name="server1" ConnectTimeout="0" ExtendedHandshake="false"   
  4.             LoadBalanceWeight="1" MaxConnections="-1" WaitForContinue="false">  
  5.             <Transport Hostname="172.22.6.99" Port="9080" Protocol="http"/>  
  6.             <Transport Hostname="172.22.6.99" Port="9443" Protocol="https">  
  7.                 <Property name="keyring" value="D:\Program Files\IBM\WebSpherePlugins/etc/plugin-key.kdb"/>  
  8.                 <Property name="stashfile" value="D:\Program Files\IBM\WebSpherePlugins/etc/plugin-key.sth"/>  
  9.             </Transport>  
  10.         </Server>  
  11.         <Server Name="server2" ConnectTimeout="0" ExtendedHandshake="false"   
  12.             LoadBalanceWeight="1" MaxConnections="-1" WaitForContinue="false">  
  13.             <Transport Hostname="10.6.36.101" Port="9084" Protocol="http"/>  
  14.             <Transport Hostname="10.6.36.101" Port="9443" Protocol="https">  
  15.                 <Property name="keyring" value="D:\Program Files\IBM\WebSpherePlugins/etc/plugin-key.kdb"/>  
  16.                 <Property name="stashfile" value="D:\Program Files\IBM\WebSpherePlugins/etc/plugin-key.sth"/>  
  17.             </Transport>  
  18.         </Server>  
  19.     </ServerCluster>  

   ServerCluster就是定义了一组用于处理(handle)http请求的was服务器清单。下面是它的几个重要属性:
  Name:名字
  LoadBalance:负载均衡算法。默认就是Round Robin (轮叫调度),Round Robin 算法刚开始 随机选择一个server开始,然后循环选择。
  CloneSeparatorChange:使用此属性维护会话亲合关系。服务器的克隆标识被附加到用冒号分隔的会话标识中。在一些无线应用协议(WAP)设备中                                     ,不允许有冒号。将此属性设置成“true”,以将克隆分隔符更改为加号(+).  PostSizeLimit:插件尝试将请求发送到应用程序服务器时所允许的请求内容最大字节数。如果接收到大于此大小的请求,则插件不会发送该请求。缺省值为 -1 个字节,表明发布大小没有限制。
 RemoveSpecialHeaders:在将请求转发到应用程序服务器之前,插件将一些特殊的头添加到请求。这些头存储关于应用程序将需要使用的请求的信息。缺省情况下,插件在添加它假定要添加的头前,将从入局请求中除去这些头。 
 RetryInterval:一个指定时间长度的整数,这段时间应该是从将服务器标记为当机的时间到插件重试连接的时间。缺省值为 60 秒。

 

 

其他的补充:

 

   关于plugin的映射目前有以下结论:

 

场景:WAS A 和WAS B构成cluster


1.如果WAS A 的server级别停止,则was plugin会识别故障机器

2.如果WAS A 的应用程序停止,则ws plugin不会识别,因为was会有响应,只不过这个响应是虚拟主机无法映射,plugin不知道这是个错误。

plugin中的属性ExtendedHandshake默认是false,这个属性是这么解释的:
plugin和was之间如果有防火墙的话,会出现即使was挂了,plugin也会去请求挂了的服务器,导致错误的响应。
为什么会出现这种情况:原因是plugin会使用connect()去尝试连接来确定一个服务器是好的,如果有防火墙的话,connect()会返回好的。造成假象。ExtendedHandshake设置为true的话,会多增加几次握手,确保was是好的,避免不能从故障机器转移。
                                         
关于IHS plugin的一个问题
    需求由来:客户端通过plugin请求was clustet,plugin会按照算法选择一个was server响应请求,比如登陆在a机器了,但是随后的其他的操作很有可能在b上面操作,这样导致一个问题。比如在b机器上面发生错误,发送给angelMonitor的日志信息无法获取正确的用户信息。能不能在那台was机器上登陆的,以后的操作plugin都会把请求转发到这个was上呢,答案是能!!
    在plugin 6.1 以后有一个serverCluster的 IgnoreAffinityRequests="true" 的属性 默认是true ,意思是忽略有联系的session的请求,如果该属性设置为false 则需要server的ColneID属性也设置。
如何设置server的ColneID,对于已经做好was cluster的server,目前还没有去看怎么做。
对于两台独立的server 可以在web container里面设置HttpSessionCloneId键值对,然后在plugin的server的ColneID属性也设置相同的值。

实际上用的是cookie的技术,was server会在http 的session的cookie中设置一个colneID,以后客户端就有这个cookie了,也有coloneID了,
plugin也就知道他以前是请求的哪个server了,再次请求的时候会转发到具有这个colneID的server

原文地址:http://zhaonjtu.iteye.com/blog/518183

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值