前2篇分别写了建立Liberty server和安装IBM HTTP Server,下面谈谈如何把IHS和Liberty集成起来。

我们希望搭建一个如下的系统架构

客户发起的请求首先会到达web server即IHS(或apache http server), IHS用来负责处理静态资源的请求,比如html,js,css,jpg等,对于动态请求比如jsp,action,do等需要转发至application server进行处理。现在流行的application server有IBM Websphere, Oracle Weblogic, JBOSS, Tomcat, Jetty等。我们这里使用的是IBM轻量级的application server ——Liberty.

1. 针对每台liberty application server生成plugin文件。
可以使用jconsole或者eclipse的方法,这里使用的是eclipse方法
i. 确保 Liberty 服务器已启动。
ii. 在 Eclipse 的“服务器”面板中,右键单击 Liberty 服务器,然后单击实用程序 > 生成插件配置

那么plugin-cfg.xml就生成在该usr\servers\ [SERVER NAME]\目录下

这是文件的一部分,检查一下端口是否为80,443,如果生成不是的话,后面有会有问题

   <VirtualHostGroup Name="default_host"><VirtualHost Name="*:80"/><VirtualHost Name="*:443"/></VirtualHostGroup>

如果只有1台liberty app server,我们就可以修改D:\IBM\HTTPServer\conf\httpd.conf
在conf文件的最后加入以下2行代码

LoadModule was_ap22_module "path\to\mod_was_ap22_http.dll"
WebSpherePluginConfig "path\to\plugin-cfg.xml"

第一行是IHS连接Webshpere/liberty的驱动程序(websphere和liberty的驱动相同),类似于apache的mod_jk.so。这个驱动在安装plug in时生成在
D:\IBM\WebSphere\Plugins_1\bin\32bits 目录中
第二行就是刚才在liberty Utility生成的plugin文件。
把驱动和文件都copy到了HTTPServer的path\to目录里
重启IHS和liberty server,输入应用的URL,通过80端口访问成功!

2. 我们这里有2台app server的实例为testserver1和2,那么分别针对这2台生成了plugin-cfg.xml。
将plugin文件合并,可以手工把2个文件合并,也可以用liberty自带的工具merge。
在liberty的bin目录输入命令

pluginUtility merge --sourcePath=..\usr\servers\testserver1\plugincfg.xml,..\usr\servers\testserver2\plugin-cfg.xml


2个plugin文件合并完毕,手工把CloseID修改一下为testserver1和2,在默认情况下,IHS的负载均衡的算法是LoadBalance=”Round Robin”在没有其他限定的情况下,为了实现会话保持,IHS会根据用户cookie中传来的CloseID值来判断将用户的请求转发给已经建立了联系的application server。

3.修改httpd.conf使其指向合并后的plugin文件

LoadModule was_ap22_module "D:\IBM\WebSphere\Plugins_1\bin\32bits\mod_was_ap22_http.dll"
WebSpherePluginConfig "path/to/merged-plugin-cfg.xml"

重启IHS后,在浏览器输入应用的URL,可以看到

在一个jsp页面打印出来了处理请求应用服务器的端口号request.getLocalPort(),可以从testserver1的http.xml文件里看到这个app server的端口是10080,所以知道这个请求被testserver1处理。

<server><featureManager><feature>servlet-3.1</feature></featureManager><!-- To access this server from a remote client add a host attribute to the following element, e.g. host="*" --><httpEndpoint host="*" httpPort="10080" httpsPort="10443" id="defaultHttpEndpoint"/><!-- Define the host name for use by the collective.If the host name needs to be changed, the server should beremoved from the collective and re-joined. --><variable name="defaultHostName" value="localhost"/><!--  Used for plugin generation --><pluginConfiguration webserverPort="80" webserverSecurePort="443" /></server>

不停的刷新页面,可以看到端口在不停的切换

IHS把请求轮流转给不同的application server。 但是我们不希望请求是每次轮询转发的,通常我们的开发的web应用都是有状态的,需要实现会话保持,上面提到用CloneID通过cookie来实现,再去看一下app server里的server.xml的配置,这里有

    <!-- <httpSession cloneId="${hostname}_${wlp.server.name}"/>  -->
<httpSession cloneId="${wlp.server.name}"/>

我们把它改为和plugin-cfg.xml里CloneID保持一致(这里我们改为app server的名字,通常是一个9位数以内的字符串)。修改后liberty server会自动加载重启。
我们再看看访问一个jsp页面,即使你不停的刷新,总是11080端口的app server在处理你的请求了,进入Chrome的开发者模式,可以看到Cookie后面有一个:冒号后面的值就是处理你这个请求app server的CloneID。 在首次建立会话时,app server会生成一个带CloneID的cookie传回客户端,再次请求时,客户端会带着此Cookie给IHS,IHS根据此Cookie里CloneID来判断把这个请求转给之前你们已经建立过联系的app server,这样就实现了会话保持。

IBM HTTP Server集成Liberty相关推荐

  1. 通向架构师的道路(第十六天)IBM Websphere与IBM HttpServer的集成

    一.IBMWebsphere与IBMHttpServer IBM WebSphere非常强大,几乎可以和任何主流Web服务器集成.其原理和Weblogic与Apache以及tomcat与Apache的 ...

  2. 通过IHS(IBM HTTP SERVER)转发WAS(WEBSPHERE)应用的小问题

    通过IHS(IBM HTTP SERVER)转发WAS(WEBSPHERE)应用的小问题 通过IHS转发应用本来不是什么大问题,可最近就是一小问题让我百思不得其解,直至将请求完全截下来才明白其中的问题 ...

  3. IBM HTTP Server Websphere Plugin

    为什么80%的码农都做不了架构师?>>>    Understanding the WebSphere Application Server Web server plug-in h ...

  4. aws rds监控慢sql_将AWS S3存储桶与AWS RDS SQL Server集成

    aws rds监控慢sql This article gives you an overview of integrating AWS S3 buckets with AWS RDS SQL Serv ...

  5. java 集成ibm mq 教程_Spring Boot JMS与IBM WebSphere MQ集成配置

    Spring Boot JMS与IBM WebSphere MQ集成配置 [TOC] 前言 Spring Boot作为简化Spring开发的框架,已经为我们集成了ActiveMQ和RabbitMQ.只 ...

  6. IBM Http Server 配置问题

    楼主happynight(泪) 2003-07-24 16:24:43 在 WebSphere / 非技术区 提问 最近安装了IBM   Http Server   1.3.19,可是打不开IBM   ...

  7. 转发:Hekaton:SQL Server集成的内存事务处理

    原文地址:http://www.infoq.com/cn/news/2012/11/Hekaton,觉得很好的新闻,专此大家分享,红字是我觉得很激动的设计.我还找到微软介绍此技术的文章. 作者 Abe ...

  8. ibm liberty_使用Open Liberty的开发模式最大程度地缩短周转时间

    ibm liberty 我上传了一个视频,其中显示了如何在编写部署在Open Liberty上的Enterprise Java应用程序时减少周转时间. Maven插件的liberty:dev目标监视文 ...

  9. 将InfoSphere Guardium数据编辑与IBM分类模块集成

    存档日期:2019年5月13日 | 首次发布:2011年11月3日 IBM®InfoSphere®Guardium®Data Redaction能够查找和隐藏文档中的敏感文本. 在组织内部,并非所有文 ...

  10. PowerBI Report Server 集成,自定义身份验证,数据权限控制

    AD认证的集成模式 AD(或者Windows)认证是PBI的默认认证方式.在这种方式下,需要第三方应用也采用了AD的认证方式才可以正常的和PBI RS做集成.注意,这种方式要求第三方系统采用了AD的认 ...

最新文章

  1. 域控服务器发生w32time错误
  2. mega_[MEGA DEAL] 2020年完整的Java Master Class Bundle(96%)
  3. python类装饰器详解-python 中的装饰器详解
  4. 机器学习笔记:GRU
  5. CodeForces - 1293C NEKO's Maze Game(思维,水题)
  6. XHTML、HTML4,HTML5 之间的区别
  7. day01『NLP打卡营』实践课1:词向量应用演示
  8. html制作圆盘时钟,jquery+html5制作超酷的圆盘时钟表
  9. php订阅号借权,php订阅号借权
  10. Elipse 、Idea配置 Java-Code-Formatter
  11. 英语四级考试计算机游戏,2017年6月英语四级作文练习:大学生玩游戏
  12. 在看一个经典教材写的crontab时遇到的点小问题
  13. c语言通讯录程序设计个人感言,人生经验 C语言程序设计的感悟
  14. php嗅探源码,网络嗅探器(含源代码)
  15. 单片机开发系列(一)之Keil 5 安装使用教程
  16. IPV6的福音---六维空间
  17. Uva--10098 (next_permutation)
  18. 【转载】P2P镜像分发Dragonfly使用
  19. JavaWeb正则表达式2-不情愿模式
  20. leetcode-460:LFU 缓存

热门文章

  1. 现象级AR营销助力“口碑双十二”,蚂蚁特工在全国数万大牌商户掀起“AR捉四宝”
  2. HAL库中断与DMA的串口通信大师
  3. Codeforces Round #427 (Div. 2)C. Star sky
  4. 云服务器虚拟内存的使用
  5. 2020鼠年集五福行动又开始了,今年的5亿元你能分到多少呢?
  6. @所有人 阿里云原生团队向你发出offer邀请,在线等!
  7. 用python哆啦a梦的代码_使用Python的Turtle绘制哆啦A梦实例
  8. 十二届蓝桥杯青少年Python组省赛试题
  9. NHK Easy News 翻译 12月19日-3
  10. mybatis 动态sql之if接参是字符串 +swagger(丝袜哥)怎么往后端传null