这篇文章概要介绍了基于mod_proxy, mod_proxy_balance和JBoss的一个基本的负载均衡解决方案。 Mod_proxy支持使用http/https和AJP协议来代理JBoss。这篇文章基于Apache httpd-2.2.x来介绍,如果你使用了更老的httpd版本,请参考
Load Balancing using mod_rewrite and mod_proxy
。
配置基于http/https的mod_proxy:
步骤1: 下载Apache 2.2.x WEB服务器
从Apache官网上下载最新的Apache 2.2.x安装包并安装。 不需要特殊设置,使用默认设置就可以。 在下面的步骤中,APACHE_HOME指的是Apache服务器的安装目录。
步骤2:配置Apache运行mod_proxy(HTTP)
确保至少下列模块被正确加载(去掉httpd.conf中相关行前面的注释)
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so
这几个模块对负载均衡功能来说已经足够了。 但是如果你要使用FTP的话,那需要加载mod_proxy_ftp模块,同样,如果要使用SSL的话,需要加载mod_proxy_connect模块。
在APACHE_HOME/conf/httpd.conf中增加下面几行:(译者注:其实在Include指令指定的配置文件中都可以,不必都在httpd.conf中)
<Proxy balancer://mycluster>
Order deny,allow
Allow from all
BalancerMember http://host1:8080 route=node1
BalancerMember http://host2:8180 route=node2
</Proxy>
ProxyPass /jmx-console balancer://mycluster
ProxyPassReverse /jmx-console http://host1:8080/jmx-console
ProxyPassReverse /jmx-console http://host2:8180/jmx-console
默认情况下,负载均衡是按照每个请求的处理方式,也就是基于权重的请求计数,由参数lbmethod控制。 stickysession参数决定了当请求到来时,该使用哪个会话名称或者cookie来进行路由,这个参数没有默认值,因为也需要设置好。
ProxyPass /jmx-console balancer://mycluster lbmethod=byrequests stickysession=JSESSIONID|jsessionid
你能够在Apache HTTP服务器文档中找到更多关于ProxyPass的说明:
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
.
步骤3: 如果需要使用sticky session的话还需要配置JBoss服务器
编辑JBOSS_HOME/server/all/deploy/jbossweb-web.deployer/server.xml 文件, 找到<Engine>标签并增加jvmRoute属性:
<Engine name="jboss.web" defaultHost="localhost" jvmRoute="node1">
</Engine>
步骤4:配置JBoss服务器,添加jvmRoute到会话中
最后,我们需要告诉JBoss服务器添加jvmRoute的值到会话的cookie中,这样mod_proxy_balancer才能够路由收到的请求。
编辑文件JBOSS_HOME/server/all/deploy/jboss-web.deployer/META-INF/jboss-service.xml ,找到名为UseJK的属性,并设置为“true":
<attribute name="UseJK">true</attribute>
配置基于AJP的mod_proxy:
步骤1:同上
步骤2:设置Apache服务器运行mod_proxy(AJP)
确保至少下列模块被正确加载(去掉httpd.conf中相关行前面的注释)
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
在APACHE_HOME/conf/httpd.conf中增加下列几行:
<Proxy balancer://mycluster>
Order deny,allow
Allow from all
BalancerMember ajp://localhost:8009/jmx-console
BalancerMember ajp://localhost:8109/jmx-console
</Proxy>
ProxyPass /jmx-console balancer://mycluster
步骤3:同上
步骤4:同上
何时使用mod_jk,何时使用mod_proxy来实现负载均衡
如果你已经决定使用mod_proxy,有两个选择来实现负载均衡
何时使用mod_proxy + mod_proxy_http和mod_proxy + mod_proxy_ajp来实现负载均衡
- AJP是二进制的,因此能够节省传输的开销
- JBoss服务器处理AJP比处理HTTP更快,更高效
- 然而,mod_proxy_http现在实现了连接池和负载均衡,因此在下决定之前,你需要验证一下mod_proxy_http和mod_proxy_ajp
这里是mod_proxy_ajp vs mod_jk的FAQ
使用sticky sessions:
给ProxyPass添加stickysession参数
ProxyPass /jmx-console balancer://mycluster stickysession=JSESSIONID lbmethod=bytraffic nofailover=Off
mod_proxy_http和mod_proxy_ajp都支持Sticky Session
注:如果你使用mod_proxy_http,那必须在每一条BalancerMember上都创建一个ProxyPassReverse
处理AJP头不能大于8K的限制:
默认的AJP报文头是8K,由于http头只包含在第一个报文中,因此有可能需要克服AJP的这个限制。
通过在<Connector/>标签中增加packetSize参数可以达到这个目的:
<Connector port="8009" protocol="AJP/1.3"
packetSize="20000"
redirectPort="8443" ></Connector>
还需要修改httpd.conf中的ProxyIOBufferSize指令。例如:
ProxyIOBufferSize 19000
LimitRequestFieldsize 18000
packetSize参数从Tomcat 5.5.21和Tomcat 6.0.1开始支持。
老版本的httpd服务器(2.2.5以前)需要打一个补丁来支持此项扩展。补丁位于:http://people.apache.org/~jfclere/patches/ProxyIOBufferSize.patch
文章原文链接:https://community.jboss.org/wiki/UsingModproxyWithJBoss?_sscc=t
这篇文章概要介绍了基于mod_proxy, mod_proxy_balance和JBoss的一个基本的负载均衡解决方案。 Mod_proxy支持使用http/https和AJP协议来代理JBoss。这篇文章基于Apache httpd-2.2.x来介绍,如果你使用了更老的httpd版本,请参考Load Balancing using mod_rewrite and mod_proxy。
Cookie有三种形式:
1.https only: 当服务器从https协议redirect到http协议后,这样的cookie就会失效。
2.http only: 当服务器从http协议redirect到https协议后,这样的cookie就会失效。
3.http and https: 协议切换不会失效
标准J2ee的Session使用的Cookie名称是 JSES...
[b]1、两台服务器[/b](虽然说一台机器部署两个jboss也是可以,但是要改一堆的端口,相当麻烦,反正我是开了个虚拟机)
[b]2、Apache2.2[/b] 用来做负载均衡和地址转发,据说jboss自带有负载均衡,但是不稳定,所以很少人使用
下载地址:[url]http://mirrors.cnnic.cn/apache//ht...
1、生成SSL证书与私钥
Generate Private Key on the Server Running Apache + mod_ssl First, generate a private key on the Linux server that runs Apache webserver using openssl command as shown below.
[root@s4-a...
在命令提示符窗口,进入Tomcat目录,执行以下命令:
keytool -genkey -alias tomcat -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore -validity 3600
通过以上步骤生成server.keystore证书文件
将servlet.xml一下的
在tomcat的server.xml文件中可以找到如下几个connector<!-- 1. HTTP -->
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /><!-- 2. HTTPS -->
<Connector port="8443" protocol="org.
我们上网很简单,只需要通过网络服务商开通端口就可以了,每天都在上网,有留意到访问网站链接有什么共同点吗?为什么需要但是为什么要讲HTTP和HTTPS呢?
二、HTTP和HTTPS发展历史
当我们打开谷歌浏览器输入www.12306.cn,回车很快在浏览器上就看到页面,其中的浏览器就是客户端,负责接受浏览器的是服务器,两者的通信是通过HTTP协议。
什么是HTTP?
Jboss EJB3.0实例教程
第一章 前言........................................................................................................................................................................5
### 回答1:
这个错误提示是在Java程序中出现的,意思是找不到org.jboss.vfs.vfs类。这个类通常是JBoss应用服务器中的一个类,可能是因为你的程序没有正确地配置JBoss类路径或者缺少相关的依赖库导致的。你可以检查一下你的程序配置和依赖库是否正确,或者尝试重新安装JBoss应用服务器。
### 回答2:
### 回答3: