apache+jetty集群 负载均衡.docx
- 文档编号:23158012
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:15
- 大小:255.49KB
apache+jetty集群 负载均衡.docx
《apache+jetty集群 负载均衡.docx》由会员分享,可在线阅读,更多相关《apache+jetty集群 负载均衡.docx(15页珍藏版)》请在冰豆网上搜索。
apache+jetty集群负载均衡
一.搭配环境
(一).jetty的安装和配置
Jetty_a:
192.168.55.229
Jetty_b:
192.168.55.231
(1)安装jdk
下载将jdk加压后放到/usr/local目录下:
[root@~]#chmod755jdk-6u5-linux-x64.bin
[root@~]#./jdk-6u5-linux-x64.bin
[root@~]#mvjdk1.6.0_05 /usr/local
建立/usr/local/下的jdk软链接方便以后版本升级:
[root@~]#ln-s/usr/local/jdk1.6.0_05//usr/local/jdk
(2)安装apache-maven,并设置环境变量
[root@zy]#tar-zxvfapache-maven-2.2.1-bin.tar.gz
[root@zy]#mvapache-maven-2.2.1 /usr/local/maven
[root@zy]#vim/etc/profile
添加以下内容:
JAVA_HOME=/usr/local/jdk1.6.0_05
JAVA_BIN=/usr/local/jdk1.6.0_05/bin
PATH=$PATH:
$JAVA_BIN:
/usr/local/maven/bin
CLASSPATH=$JAVA_HOME/lib/dt.jar:
$JAVA_HOME/lib/tools.jar
JETTY_HOME=/usr/local/jetty
exportJAVA_HOMEJAVA_BINPATHCLASSPATHJETTY_HOME
[root@zy]#source/etc/profile
[root@zy]#mvn--version
ApacheMaven2.2.1(r801777;2009-08-0703:
16:
01+0800)
Javaversion:
1.6.0_05
Javahome:
/usr/local/jdk1.6.0_05/jre
Defaultlocale:
en_US,platformencoding:
UTF-8
OSname:
"linux"version:
"2.6.18-238.el5"arch:
"amd64"Family:
"unix"
(3)安装启动jetty
[root@zy]#unzipjetty-6.1.14-fgw-aps.zip
[root@zy]#mvjetty-6.1.14-fgw-aps/usr/local/jetty
[root@jetty]#java-jarstart.jar【或者进去到bin目录,然后执行./jetty.shstart 】
[root@bin]#./jetty.sh start
StartingJetty:
STARTEDJettyMonJul1111:
54:
03CST2011
[root@bin]#2011-07-1111:
54:
04.014:
INFO:
:
Redirectingstderr/stdoutto/usr/local/jetty/logs/2011_07_11.stderrout.log
在浏览器中输入http:
//192.168.55.229:
8080/remote.html(这里加上remote.html的原因是避免和tomcat冲突,实际上http:
//192.168.55.229:
8080也能够访问到,但是前提是必须把tomcat给禁掉。
或者在jetty.xml中将端口改成9009,此时我们就可以直接访问http:
//192.168.55.229:
9009)
(4)简单部署一个应用
[root@jetty]#cdwebapps/
[root@webapps]#ls
Fgw
[root@node2webapps]#cdfgw/
[root@fgw]#vimindex.jsp
<%@pagecontentType="text/html;charset=GBK"%>
<%@pageimport="java.util.*"%>
<%
//HttpSessionsession=request.getSession(true);
System.out.println(session.getCreationTime());
out.println("
SESSIONID:
"+session.getId()+"
");
out.println("Sessionservicedbyjetty_a"+"
");
out.println("Sessioncreatedtimeis:
"+session.getCreationTime()+"
");
%>
测试:
http:
//192.168.55.229:
9009/fgw/
同样方法的配置jetty_b,测试结果为:
(二)Apache的安装和配置(采用源码编译安装的方式)
Apache的地址为:
192.168.50.50
#tarxzvfhttpd-2.2.17.tar.gz
#cd httpd-2.2.17
#./configure--with-ldap--enable-mods-shared="allsslldapcacheproxyauthn_aliasmem_cachefile_cacheauthnz_ldapcharset_litedav_lockdisk_cache"【此选项为编译所有的模块】
1. 测试
/usr/local/apache2/conf/httpd.conf中设置ServerName localhost
#cd /usr/local/apache2/bin
#./apachectl start
将出现类似httpd(pid17040)alreadyrunning的输出
访问地址:
http:
//192.168.50.50
Itworks!
hehe...
说明已经成功~\(≧▽≦)/~啦啦啦,(~o~)~zZ
二.
(1)mod_proxy负载均衡配置
1.加载proxy模块
所有需要加载的代理模块为mod_proxy.so,mod_proxy.ajp.so,mod_proxy.http.so,mod_proxy.ftp.so,mod_proxy.connect.so,mod_proxy.balancer.so
由于已经将所有模块加载,所以不用在配置中做修改,即为/usr/local/apache2/conf/httpd.conf文件中的如下指令:
LoadModuleproxy_modulemodules/mod_proxy.so
LoadModuleproxy_ftp_modulemodules/mod_proxy_ftp.so
LoadModuleproxy_http_modulemodules/mod_proxy_http.so
LoadModuleproxy_ajp_modulemodules/mod_proxy_ajp.so
LoadModuleproxy_balancer_modulemodules/mod_proxy_balancer.so
2.配置虚拟主机proxyblancer
在/usr/local/apache2/conf/httpd.conf尾部添加Includeconf/app1.conf
在conf/app1.conf中添加以下内容:
Listen8051
8051> ServerAdminangel.zhu@#指定服务器管理员的E-MAIL地址,服务器自动将错误报告给该地址 ServerName localhost#web客户端搜索的主机名 ErrorLog "/opt/apache_log/app1_error.log" CustomLog "/opt/apache_log/app1_access.log"common ProxyPass/ balancer: //cluster/ stickysession=JESSIONID|jessionidnofailover=Onlbmethod=byrequeststimeout=5maxattempts=3 #balancer: 复制会话的方式,包括JSESSIONID或PHPSESSIONID;nofailover: on表示会话在worker出错或停掉是句会中断,当后端服务器不支持会话复制时设为on;lbmethod: 选择负载的调度算法,默认byrequests表示轮询调度(就是1: 1),bytraffic表示加权重的调度,需加loadfactor指定权重值。 ProxyPassReverse/balancer: //cluster/#此指令使Apache调整HTTP重定向应答中Location,Content-Location,URI头里的URL。 这样可以避免在Apache作为反向代理使用时,后端服务器的HTTP重定向造成的绕过反向代理的问题。 #TheProxyRequestsdirectiveshouldusuallybesetoffwhenusingProxyPass. ProxyRequestsOff#不允许作为正向代理 ProxyPreserveHostOn#当启用时,此选项将把传入请求的"Host: "行传递给被代理的主机,而不是传递在ProxyPass中指定的主机名。 //cluster> BalancerMemberajp: //192.168.55.229: 8009route=jetty_a BalancerMemberajp: //192.168.55.231: 8009route=jetty_b #rout值附加在sessionID后面
3.修改jetty.xml中的配置文件
--===========================================================-->
--SetupglobalsessionIDmanager -->
--===========================================================-->
使得workername和apache中的route值一致:
分别将其值改成jetty_a和jetty_b即可。
4.开启jetty的AJP端口
可以查看/usr/local/jetty/etc中的文件jetty-ajp.xml【注意:
要和上面apache中提到的AJP端口一致】
我们可以在/usr/local/jetty目录中编写个脚本:
vimstartjetty.sh
然后执行shstartjetty.sh
[root@jetty]#shstartjetty.sh
SelectChannelConnector@0.0.0.0:
9009
2011-07-1214:
22:
47.134:
:
INFO:
StartedAjp13SocketConnector@0.0.0.0:
8009
2011-07-1214:
22:
47.134:
:
INFO:
AJP13isnotasecureprotocol.Pleaseprotectport8009
(5)分别测试jetty
在/usr/local/jetty/webapps/fgw中编辑index.jsp
内容分别如下:
分别访问http:
//192.168.55.229:
9009/fgw/index.jsp和http:
//192.168.55.231:
9009/fgw/index.jsp
刷新会出现新的页面:
(6)此时访问http:
//192.168.50.50:
8051/fgw,就出现了以下页面:
说明apache已经来自8051端口的访问定向到jetty服务器上。
可是现在并看不出来是哪一台jetty服务器,下面在两台jetty中加入测试页面使效果更明显
那么我们就加上那个测试页面来看一下效果(我们在浏览器中输入以下地址:
http:
//192.168.50.50:
8051/fgw/index.jsp)
好了,出现这样的结果就说明我们的集群已经搭建成功,大家可以参考我的配置来做一下试验,祝大家成功,(~o~)~zZ
二
(2):
mod_jk负载均衡配置
1. 由于mod_jk为第三方模块,需要到jetty官网下载,url为。
2. 在Apache Server上将jk模块编译进apache中:
#tar xvfz tomcat-connectors-1.2.31-src.tar.gz
# cd tomcat-connectors-1.2.31-src/native/
./configure--with-apxs=/usr/local/apache2/bin/apxs--with-java-home=/usr/local/jdk
make&&makeinstall
此时在/usr/local/apache2/modules下会出现一个mod_jk.so,则已编译成功。
3. 配置apache的配置文件
1 vi/usr/local/apache2/conf/httpd.conf 添加以下内容:
LoadModulejk_modulemodules/mod_jk.so
JkWorkersFileconf/workers.properties
JkLogFilelogs/mod_jk.log
JkLogLevelwarn
Includeconf/app2.conf
2创建并配置app2.conf文件
Listen8052
8052> DocumentRoot"/usr/local/apache2/htdocs" ServerNamelocalhost ServerAdminapp2.Admin@ ErrorLog"/usr/local/apache2/logs/app2error_log” TransferLog"/usr/local/apache2/logs/app2access_log" JkMount/*jettybalancer
3创建并配置workers.properties文件
vi/usr/local/apache2/conf/workers.properties,添加以下内容:
worker.list=jetty_a
worker.jetty_a.port=8009
worker.jetty_a.host=192.168.55.229
worker.jetty_a.type=ajp13
worker.jetty_a.lbfactor=2
worker.list=jetty_b
worker.jetty_b.port=8009
worker.jetty_b.host=192.168.55.231
worker.jetty_b.type=ajp13
worker.jetty_b.lbfactor=1
worker.list=jettybalancer
worker.jettybalancer.type=lb
worker.jettybalancer.balance_workers=jetty_a,jetty_b
修改jetty的配置文件jetty.xml
Jetty_a的配置文件:
--===========================================================-->
--SetupglobalsessionIDmanager -->
--===========================================================-->
Jetty_b的配置文件:
--===========================================================-->
--SetupglobalsessionIDmanager -->
--===========================================================-->
此时访问http:
//192.168.50.50:
8052/fgw/index.jsp,会以下出现页面
刷新但不会变化,除非重新打开个新页面
并且jetta_a出现的概率是jetty_b的两倍
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- apache+jetty集群 负载均衡 apache jetty 集群 负载 均衡