- 浏览: 17107 次
- 性别:
- 来自: 杭州
最新评论
一.基础知识 需要注意负载均衡问题, 使得请求可以较好分配。 它有2种表现形式 (a) 访问地址不同 例如, 网站www.hello.com. 当访问www.hello.com/us, 由Node1做出响应. 当访问www.hello.com/cn, 由Node2做出相应 (b) 任务分发 例如, 网站www.hello.com. 当有50000个request到达时候, 将这些request按照2:1的比例分发给Node1和Node2 (2) High Availability 需要注意Session状态转移问题, 即在某个Server Node发生故障时保持Session连接。例如,当Apache将某个request分发给Node1后, 并且进行了某些操作,这时候Node1突然crash或者Node1出现了网络故障, 这时要保证Session不会丢失, Session ID唯一和保留在Session中的内容不会丢失。 1.2基本原理介绍 <!--[if !vml]-->如图1 所示,Node 1和Node 2所是Apache的两个worker。当有request到达时, 由Apache通过Ajp13 协议动态的将请求分发给Node 1和Node 2。 例如, 当发送的request送给Node 1时,由Node 1处理发送来的request, 进行处理后将response按照原路径返回,交给Apache。此后Apache再将收到的response返回给client端。 两个worker,Node 1和Node 2是真正负责处理client端发送来的请求。为了保持Session的一致性和稳定性,两个Node需要进行同步,即Session的复制,才能保证数据的统一。 操作系统: Window Home Edition IP地址: 192.168.0.42 JBoss 服务器: Apache, 2.2.4 JBoss 4.2 (Node 1) JDK版本: 1.5.0 【机器B】 操作系统: FreeBSD IP: 192.168.0.180 Server: JBoss 4.2 (Node 2) JDK: 1.5.0 2.2配置流程 <!--[if !supportLists]-->(a) <!--[endif]-->到www.apache.com下载mod_jk.so到modules目录 <!--[if !supportLists]-->(b) <!--[endif]-->在conf目录下的httpd.conf文件最后写入 # Include mod_jk's specific configuration file Include conf/mod-jk.conf <!--[if !supportLists]-->(c) <!--[endif]-->在conf目录下创建mod-jk.conf文件、uriworkermap.properties文件、workers.properties文件,文件的内容见附录一。其目的是为Apache设置2个worker为其服务。 <!--[if !supportLists]-->(2) <!--[endif]-->Node1%JBOSS_HOME%\server\all目录下 <!--[if !supportLists]-->(a) <!--[endif]-->修改访问地址, 使得外部可以以主机IP地址进行访问 在deploy\jboss-web.deployer目录下的server.xml <Connector port="8080" address= {jboss.bind.address}…>改为<Connector port="8080" address="0.0.0.0"…>; <Connector port="8009" address= {jboss.bind.address}…>改为<Connector port="8009" address="0.0.0.0"…>。 <!--[if !supportLists]-->(b) <!--[endif]-->使得JBoss知道自己为Node1结点 在deploy\jboss-web.deployer目录下的server.xml <Engine name="jboss.web" defaultHost = "localhost"> 改为 <Engine name="jboss.web" defaultHost= "localhost" jvmRoute="node1">。 <!--[if !supportLists]-->(c) <!--[endif]-->通知Node 1添加一个jvmRoute值到会话cookies中,以便mod_jk可以路由随后的请求 在deploy\jboss-web.deployer\META-INF目录下的jboss-service.xml <attribute name="UseJK">false</attribute>改为 <attribute name="UseJK">true</attribute>。 <!--[if !supportLists]-->(d) <!--[endif]-->定义重定向地址 在deploy\jboss-web-cluster.sar\META-INF目录下的jboss-service.xml <TCP bind_addr = "thishost" start_port = "7810" loopback= "true"…> 改为 <TCP bind_addr = "192.168.0.42" start_port= "7810" loopback="true"…>; <TCPPING initial_hosts= "thishost[7810], otherhost[7810]" port_range="3"…> 改为 <TCPPING initial_hosts= "192.168.0.42[7810], 192.168.0.180[7810]" port_range="3"…>。 <!--[if !supportLists]-->(3) <!--[endif]-->Node2%JBOSS_HOME%\server\all目录下 <!--[if !supportLists]-->(a) <!--[endif]-->修改访问地址, 使得外部可以以主机IP地址进行访问 在deploy\jboss-web.deployer目录下的server.xml <Connector port="8080" address= {jboss.bind.address}…>改为<Connector port="8080" address="0.0.0.0"…>; <Connector port="8009" address= {jboss.bind.address}…>改为<Connector port="8009" address="0.0.0.0"…>。 <!--[if !supportLists]-->(b) <!--[endif]-->使得JBoss知道自己为Node2结点 在deploy\jboss-web.deployer目录下的server.xml <Engine name="jboss.web" defaultHost = "localhost"> 改为 <Engine name="jboss.web" defaultHost= "localhost" jvmRoute="node2">。 <!--[if !supportLists]-->(c) <!--[endif]-->通知Node 2添加一个jvmRoute值到会话cookies中,以便mod_jk可以路由随后的请求 在deploy\jboss-web.deployer\META-INF目录下的jboss-service.xml <attribute name="UseJK">false</attribute>改为 <attribute name="UseJK">true</attribute>。 <!--[if !supportLists]-->(d) <!--[endif]-->定义重定向地址 在deploy\jboss-web-cluster.sar\META-INF目录下的jboss-service.xml <TCP bind_addr = "thishost" start_port = "7810" loopback= "true"…> 改为 <TCP bind_addr = "192.168.0.180" start_port= "7810" loopback="true"…>; <TCPPING initial_hosts= "thishost[7810], otherhost[7810]" port_range="3"…> 改为 <TCPPING initial_hosts= "192.168.0.180[7810], 192.168.0.42[7810]" port_range="3"…>。 <!--[if !supportLists]-->(4) <!--[endif]-->在自己的应用程序中 <!--[if !supportLists]-->(a) <!--[endif]-->设置使得自己的应用程序使用集群 在WEB-INF目录下的web.xml文件中<web-app>下添加 <distributable/> <!--[if !supportLists]-->(b) <!--[endif]-->在设置Jboss配置信息 在WEB-INF目录下创建jboss-web.xml文件,文件内容见附录二 <!--[if !supportLists]-->(1) <!--[endif]-->在浏览器中输入http://l92.168.0.42/jmx-console/ <!--[if !supportLists]-->(2) <!--[endif]-->另开一个浏览器窗口, 输入http://l92.168.0.42/jmx-console/,可能会出现另外一个node的jmx-console 【实验二】验证负载分配和Session ID保持 <!--[if !supportLists]-->(1) <!--[endif]-->创建文件test.jsp, 在test.jsp中打印node的IP地址, session id和singleton实例的某一自增变量 <!--[if !supportLists]-->(2) <!--[endif]-->在一个浏览器窗口中访问test.jsp, 显示单一node的IP地址, session id和singleton实例的某一自增变量, 点击刷新按钮, 看见同一IP地址和Session id <!--[if !supportLists]-->(3) <!--[endif]-->另开一个浏览器窗口访问test.jsp, 可能会显示另一node的IP地址, session id和singleton实例的某一自增变量, 点击刷新按钮, 看见一IP地址和Session id. 在这里每个singleton变量的自增值是分别增加的. <!--[if !supportLists]-->(4) <!--[endif]-->仅保留一个浏览器窗口, 若ip显示42机器, 则把42机器上的jboss停止掉. 否则把180上的jboss停止掉. 刷新浏览器窗口. 可以看见ip值发生变化, 但session id保持不变 【实验三】验证Session内容 <!--[if !supportLists]-->(2) <!--[endif]-->刷新second.jsp, 显示session中存在的值 <!--[if !supportLists]-->(3) <!--[endif]-->停止掉刚刚在控制台打印信息的node结点server <!--[if !supportLists]-->(4) <!--[endif]-->刷新second.jsp, 显示session中存在的值 【实验四】数据统计, 查看性能 分别向服务器发送500个请求,每次发送20个,查看最终的数据统计结果 ab -n 500 -c 20 http://192.168.0.42:8080/web-console/ ab -n 500 -c 20 http://192.168.0.180:8080/web-console/ ab -n 500 -c 20 http:// 192.168.0.42/web-console/ 四、注意事项 ALL 模式运行问题 端口冲突问题 FreeBSD安装问题 <!--[if !supportLists]-->(1) <!--[endif]-->cluster-service.xml文件 <UDP …enable_bundling="false" max_bundle_size="64000 max_bundle_timeout="30"…> 改为 <UDP …enable_bundling="false" max_bundle_size="8000 max_bundle_timeout="30"…>; <TCP enable_bundling="false" max_bundle_size="64000" max_bundle_timeout="30"> 改为 <TCP enable_bundling="false" max_bundle_size="8000" max_bundle_timeout="30"> <!--[if !supportLists]-->(2) <!--[endif]-->ejb3-clustered-sfsbcache-service.xml文件 <UDP …enable_bundling="false" max_bundle_size="64000 max_bundle_timeout="30"…> 改为 <UDP …enable_bundling="false" max_bundle_size="8000 max_bundle_timeout="30"…> <!--[if !supportLists]-->(3) <!--[endif]-->ejb3-entity-cache-service.xml文件 <UDP …enable_bundling="false" max_bundle_size="64000 max_bundle_timeout="30"…> 改为 <UDP …enable_bundling="false" max_bundle_size="8000 max_bundle_timeout="30"…> <!--[if !supportLists]-->(4) <!--[endif]-->jboss-web-cluster.sar/META-INF/jboss-service.xml文件 <UDP …enable_bundling="false" max_bundle_size="64000 max_bundle_timeout="30"…> 改为 <UDP …enable_bundling="false" max_bundle_size="8000 max_bundle_timeout="30"…>; <TCP enable_bundling="false" max_bundle_size="64000" max_bundle_timeout="30"> 改为 <TCP enable_bundling="false" max_bundle_size="8000" max_bundle_timeout="30"> 附录 //加载mod_jk模块 LoadModule jk_module modules/mod_jk.so //设置worker配置文件 JkWorkersFile conf/workers.properties //设置日志记录位置 JkLogFile logs/mod_jk.log //设置日志记录级别 JkLogLevel info //设置日志记录格式 JkLogStampFormat "[%a %b %d %H:%M:%S %Y]" //设置提交SSL KEY SIZE JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories //设置请求格式 JkRequestLogFormat "%w %V %T" //设置负载转发请求 JkMount /ClusterTest/* loadbalancer //设置负载转发文件 JkMountFile conf/uriworkermap.properties uriworkermap.properties文件 /jmx-console=loadbalancer /jmx-console/*=loadbalancer /web-console=loadbalancer /web-console/*=loadbalancer workers.properties文件 # 定义workers 列表 worker.list=loadbalancer, node1, node2 # 定义 Node1 # 修改主机IP地址等参数 worker.node1.port=8009 worker.node1.host=localhost worker.node1.type=ajp13 worker.node1.lbfactor=1 # 定义 Node2 # 修改主机IP地址等参数 worker.node2.port=8009 worker.node2.host=192.168.0.180 worker.node2.type=ajp13 worker.node2.lbfactor=1 # 设置Load-balancing 行为 worker.loadbalancer.type=lb worker.loadbalancer.balance_workers=node1, node2 worker.loadbalancer.sticky_session=1 附录二 <jboss-web> <replication-config> <replication-trigger> SET_AND_NON_PRIMITIVE_GET </replication-trigger> <replication-granularity>SESSION</replication-granularity> <replication-field-batch-mode> true </replication-field-batch-mode> </replication-config> </jboss-web>
1.1高可用方案的2个基本问题
(1) Load Balance
<!--[if !vml]--><!--[endif]-->
二、举例说明配置
2.1环境说明
【机器A】
<!--[if !supportLists]-->(1) <!--[endif]-->%Apache_HOME%目录下
三、实验方案
【实验一】验证负载分配
实验步骤:
实验步骤:
<!--[if !supportLists]-->(1) <!--[endif]-->创建文件first.jsp, 在first.jsp中输入一个值, 将其存入session中, 以post方法在second.jsp中显示session中存在的值和打印值到控制台.
在%APACHE_HOME%\bin目录有应用程序ab, 利用ab做数据统计
8080端口问题
有时可能出现JBOSS端口冲突问题, 可以将%JBOSS_HOME%\all\deploy\jboss-web.deployer\Server.xml中定义的默认端口8080改为其他不用端口
JBOSS以ALL模式在windows运行的命令为%JBOSS_HOME%\bin\run.bat –c all, 在FreeBSD运行的命令为%JBOSS_HOME%\bin\run.sh –c all
JBoss以ALL模式启动时候, 有时可能与某些应用程序冲突. 例如Firefox和MSN(曾遇到以上2这个应用程序端口冲突). 利用netstat –ano 来查看现在访问网络端口的应用程序的PID. 然后利用任务管理器去查找相应的程序,结束即可.
在FreeBSD下安装JBoss后, ALL模式并不能正常运行. 需要调整几个参数, 才能运行.进入%JBOSS_HOME%server/all/deploy目录.
附录一
mod-jk.conf文件
jboss-web.xml文件
文章出处:http://www.diybl.com/course/3_program/java/javajs/2007923/73054.html
发表评论
-
相对地址无法外部重定向问题分析
2011-03-12 05:35 0问题:在Java程序中,设定外部重定向,如果设定了相对地址,结 ... -
apache rewrite重定向规则 (转载)
2011-03-12 05:14 0Apache Rewrite 规则详解: http://slj ... -
转发:JProfiler eclipse 整合配置
2011-02-22 19:06 1826JProfiler的介绍和使用请参照: http://www ... -
Jmagick的Windows安装
2010-09-07 10:06 2069因为需要使用到ImageMagick对图片进行处理所以,每次重 ... -
最近使用的Eclipse插件汇总一下
2010-07-08 14:20 902编辑VM文件的velocity editor : ...
相关推荐
赠送jar包:jboss-logging-3.4.1.Final.jar; 赠送原API文档:jboss-logging-3.4.1.Final-javadoc.jar; 赠送源代码:jboss-logging-3.4.1.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.4.1.Final....
赠送jar包:jboss-logging-3.4.3.Final.jar; 赠送原API文档:jboss-logging-3.4.3.Final-javadoc.jar; 赠送源代码:jboss-logging-3.4.3.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.4.3.Final....
Servlet引擎:JBoss与Tomcat、Jetty协同工作
赠送jar包:jboss-logging-3.4.2.Final.jar; 赠送原API文档:jboss-logging-3.4.2.Final-javadoc.jar; 赠送源代码:jboss-logging-3.4.2.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.4.2.Final....
赠送jar包:jboss-logging-3.3.2.Final.jar; 赠送原API文档:jboss-logging-3.3.2.Final-javadoc.jar; 赠送源代码:jboss-logging-3.3.2.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.3.2.Final....
JBossTools实践系列:JBossESB服务开发入门
赠送jar包:jboss-threads-3.1.0.Final.jar; 赠送原API文档:jboss-threads-3.1.0.Final-javadoc.jar; 赠送源代码:jboss-threads-3.1.0.Final-sources.jar; 赠送Maven依赖信息文件:jboss-threads-3.1.0.Final....
赠送jar包:jboss-annotations-api_1.3_spec-2.0.1.Final.jar; 赠送原API文档:jboss-annotations-api_1.3_spec-2.0.1.Final-javadoc.jar; 赠送源代码:jboss-annotations-api_1.3_spec-2.0.1.Final-sources.jar;...
赠送jar包:jboss-logging-3.3.2.Final.jar; 赠送原API文档:jboss-logging-3.3.2.Final-javadoc.jar; 赠送源代码:jboss-logging-3.3.2.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.3.2.Final....
JBoss篇:安装与配置
赠送jar包:jboss-logging-3.4.3.Final.jar; 赠送原API文档:jboss-logging-3.4.3.Final-javadoc.jar; 赠送源代码:jboss-logging-3.4.3.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.4.3.Final....
赠送jar包:jboss-threads-3.1.0.Final.jar; 赠送原API文档:jboss-threads-3.1.0.Final-javadoc.jar; 赠送源代码:jboss-threads-3.1.0.Final-sources.jar; 赠送Maven依赖信息文件:jboss-threads-3.1.0.Final....
赠送jar包:jboss-websocket-api_1.1_spec-2.0.0.Final.jar; 赠送原API文档:jboss-websocket-api_1.1_spec-2.0.0.Final-javadoc.jar; 赠送源代码:jboss-websocket-api_1.1_spec-2.0.0.Final-sources.jar; 赠送...
赠送jar包:jboss-annotations-api_1.3_spec-2.0.1.Final.jar; 赠送原API文档:jboss-annotations-api_1.3_spec-2.0.1.Final-javadoc.jar; 赠送源代码:jboss-annotations-api_1.3_spec-2.0.1.Final-sources.jar;...
1、httpd在linux下部署配置文件 2、ActiveMQ在linux下部署配置文件 3、Tomcat在Linux下部署配置文件 4、Jboss在Linux下部署配置文件
赠送jar包:jboss-websocket-api_1.1_spec-2.0.0.Final.jar; 赠送原API文档:jboss-websocket-api_1.1_spec-2.0.0.Final-javadoc.jar; 赠送源代码:jboss-websocket-api_1.1_spec-2.0.0.Final-sources.jar; 赠送...
1. Jboss7+apache集群 1 1.1 Jboss主从服务器设置: 1 1.2 apache相关的配置 3 2. Solr集群配置 3 2.1 solr分发设置 3 2.2 solr部署 4
赠送jar包:jboss-logging-3.4.1.Final.jar; 赠送原API文档:jboss-logging-3.4.1.Final-javadoc.jar; 赠送源代码:jboss-logging-3.4.1.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.4.1.Final....
jboss服务器配置https环境的详细方法
这个是转载Bromon原创的重量级:jboss 4.0.2 集群 配置