apache2.2 tomcat6.0 负载均衡集群整理配置

worker.list=controller,tomcat1,tomcat2 #server 列表
#========tomcat1========
worker.tomcat1.port=8009 #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1 #server的加权比重,值越高,分得的请求越多
#========tomcat2========
worker.tomcat2.port=8010 #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat2.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1 #server的加权比重,值越高,分得的请求越多
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2 #指定分担请求的tomcat
worker.controller.sticky_session=1


workers.tomcat_home=D:\tomcat6.0.18_clusterone #让mod_jk模块知道Tomcat的位置
workers.java_home=D:\Java\jdk1.6.0\jre #让mod_jk模块知道jre的位置
ps=\

worker.list=tomcat1 #server 列表,tomcat2,controller
#========tomcat1========
worker.tomcat1.port=8009 #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1 #server的加权比重,值越高,分得的请求越多
#========tomcat2========
#worker.tomcat2.port=8010 #ajp13 端口号,在tomcat下server.xml配置,默认8009
#worker.tomcat2.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址
#worker.tomcat2.type=ajp13
#worker.tomcat2.lbfactor=1 #server的加权比重,值越高,分得的请求越多
#========controller,负载均衡控制器========
#worker.controller.type=lb
#worker.controller.balanced_workers=tomcat1,tomcat2 #指定分担请求的tomcat 这里 balanced写错了,应是 balance
#worker.controller.sticky_session=1


workers.tomcat_home=D:\tomcat6.0.18_clusterone #让mod_jk模块知道Tomcat的位置
workers.java_home=D:\Java\jdk1.6.0\jre #让mod_jk模块知道jre的位置
ps=\
worker.list=ajp13 #模块版本
worker.ajp13.port=8009 #工作端口,若没占用则不用修改
worker.ajp13.host=localhost #本机,若上面的Apache主机不为localhost,作相应修改
worker.ajp13.type=ajp13 #类型
worker.ajp13.lbfactor=1 #代理数,不用修改


===========================正确配置=======================
前期准备

下载mod_jk-1.2.28-httpd-2.2.3.so
http://apache.justdn.org/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.28/mod_jk-1.2.28-httpd-2.2.3.somod_jk-1.2.28-httpd-2.2.3.so
下载 Apache2.2
下载 tomcat6

环境
现在的环境,是在同一台机器中配置 一个apache ,两个tomcat

1\
apache http.conf
在文件尾增加
LoadModule jk_module modules\mod_jk-1.2.28-httpd-2.2.3.so
JkWorkersFile "D:\Apache2.2\conf\workers.properties"
JkMount /*.jsp controller
JkLogFile "D:\Tomcat 6.0\logs\mod_jk2.log"
JkLogLevel info

2\
新建workers.properties,并把workers.properties也放在D:\Apache2.2\conf\workers.properties目录下
并在文件中增加如下内容
worker.list=controller,tomcatone,tomcattwo #server 列表,tomcat2,controller
#========tomcat1========
worker.tomcatone.port=8009 #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcatone.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcatone.type=ajp13
worker.tomcatone.lbfactor=1 #server的加权比重,值越高,分得的请求越多
#========tomcat2========
worker.tomcattwo.port=8010 #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcattwo.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcattwo.type=ajp13
worker.tomcattwo.lbfactor=1 #server的加权比重,值越高,分得的请求越多
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balance_workers=tomcatone,tomcattwo #指定分担请求的tomcat 这里 balanced写错了,应是 balance
worker.controller.sticky_session=1

3\如果在同一台机,增加两个Tomcat服务
a:D:\tomcat6.0.18_clusterone
b:D:\tomcat6.0.18_clustertwo
c修改,a与b中的内容

a:中的相应内容为


第二处:<Connector port="8086" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"/>
原来为
<Connector port="8086" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

第三处:<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcatone">
原来为
<Engine name="Catalina" defaultHost="localhost"> (注:其实这行原来存在,只是把其注释掉)


b:中的相应内容为
第一处:<Server port="8007" shutdown="SHUTDOWN">=====原来为====><Server port="8006" shutdown="SHUTDOWN">

第二处:<Connector port="8087" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"/>
原来为
<Connector port="8086" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

第三处:<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcattwo">
原来为
<Engine name="Catalina" defaultHost="localhost"> (注:其实这行原来存在,只是把其注释掉)

4\ 增加虚似目录(注,把"1\"中的 "JkMount /*.jsp controller" 注释掉 )

<VirtualHost *:8089>
ServerAdmin seal_bird21th@sohu.com
DocumentRoot d:/www/wabappone/ROOT
ServerName www.wabappone.com
ServerAlias wabappone
ErrorLog "logs/wabappone.localhost-error.log"
CustomLog "logs/wabappone.localhost-access.log" common
JkMount /*.jsp controller
# 把JSPX程序映射到Jk连接器上
JkMount /*.jspx controller
# 把servlet程序映射到Jk连接器上
JkMount /servlet/* controller
JkMount /*.servlet controller
</VirtualHost>


==================================
注:apache与tomcat本来就能正常使用的前提下
==================================

能过以上四步负载作用了


============测试jsp文件====把下面内容保存成test.jsp文件并copy到相应目录下========================
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
<%
out.println("<br> ID " + session.getId()+"<br>");

// 如果有新的 Session 属性设置
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}

out.print("<b>Session 列表</b>");

Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = session.getAttribute(name).toString();
out.println( name + " = " + value+"<br>");
System.out.println( name + " = " + value);
}
%>
<form action="test.jsp" method="POST">
名称:<input type=text size=20 name="dataName">
<br>
值:<input type=text size=20 name="dataValue">
<br>
<input type=submit>
</form>
</body>
</html>

==============================================================================================

5\
在tomcat中的conf目录下的server.xml文件增加以下内容
把 server.xml中注释部分 <!-- <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>--> 替换成如下内容
==========================================================================
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="8">
<!--

<Manager className="org.apache.catalina.ha.session.BackupManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"
mapSendOptions="8"/> -->
<!-- -->
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>

<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4000"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
<!-- timeout="60000"-->
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" />
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
</Channel>

<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>

==========================================================================

6\
站点web.xml中加入 <distributable/>,distributable元素来告诉servlet/JSP容器,编写将在分布式Web容器中部署的应用


=====================
以上配置经测试,情况如下
1\在ie中运行 test.jsp
出现
Server Info: null : 8089
ID B4D24ADB547DEAAE02B35CC72A2BC147.tomcatone
Session 列表asfdasdf = asdf
不断的刷,仍显示的是 "ID B4D24ADB547DEAAE02B35CC72A2BC147.tomcatone",说明没有变,
但我把 tomcattwo这个tomcat站点关掉时
出现
Server Info: null : 8089
ID B4D24ADB547DEAAE02B35CC72A2BC147.tomcattwo
Session 列表asfdasdf = asdf
这时就变了,为什么一定要关掉一个服务才能执行test.jsp时,结果才能变呢(即自动在两个站点间切换以达以分流负载均衡作用)
现在的环境,是在一台机器中配置 一个apache ,两个tomcat

2\如果新开ie,则session ID会变了,说明配置成功

===============================================================================================================================
注意: 对于webservice 的集群,特别要注意 CommonBusiness.wsdl 中的
<wsdl:port binding="impl:CommonBusinessSoapBinding" name="CommonBusiness">
<wsdlsoap:address location="http://www.jobservice.com:8089/JobService/services/CommonBusiness"/>
</wsdl:port>
此处要与apache http 中的httpd-vhosts.conf 的端口一致,并且需增加如下行
JkMount /JobService/services/CommonBusiness controller ()
===============================================================================================================================


=====================
===================================================
===================================================
============= 更深入的配置方式(集群)===============
===================================================
===================================================

先配置成可扩散的服务,以可以灵活的增加数据处理服务端(数据处理服务端往往压大)


windows环境下安装myphpadmin

1\php5

得到 php.ini文件(在D:\php5目录下有一个这样的文件,只需改一下名字就ok)
增加环境变量(在path环境变量中增加) d:\php5;d:\php5\ext
php.ini在实际应用中要做相应修改
2\apache 中的http.conf的修改
a:
在 #LoadModule vhost_alias_module modules/mod_vhost_alias.so 后面加上以下两行
LoadModule php5_module d:/php5/php5apache2_2.dll
PHPIniDir "d:/php5"

b:修改http.conf相应位置
<Directory "D:/www">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
c:
在 AddType application/x-gzip .gz .tgz后面加上以下两行
AddType application/x-httpd-php .php
AddType application/x-httpd-php .html

d:增加 index.php
<IfModule dir_module>
DirectoryIndex index.html index.jsp index.php
</IfModule>


e:
#Include conf/extra/httpd-vhosts.conf 中的"#"去除
修改httpd-vhosts.conf文件为如下内容
#
# Use name-based virtual hosting.
#
NameVirtualHost *:8089

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#

<VirtualHost *:8089>
ServerAdmin seal_bird21th@sohu.com
DocumentRoot d:/www/wabappone/ROOT
ServerName www.wabappone.com
ServerAlias wabappone
ErrorLog "logs/wabappone.localhost-error.log"
CustomLog "logs/wabappone.localhost-access.log" common
JkMount /*.jsp controller
# 把JSPX程序映射到Jk连接器上
JkMount /*.jspx controller
# 把servlet程序映射到Jk连接器上
JkMount /servlet/* controller
JkMount /*.servlet controller
</VirtualHost>

3\
phpmyadmin的安装配置

打开phpmyadmin 目录中的 config.inc.php 找到以下这些:

$cfg[’PmaAbsoluteUri’] = ’http://localhost/phpmyadmin’; //假设是有域名的服务器,可改成http://域名/phpmyadmin

$cfg[’Servers’][$i][’user’] = ’admin’;

$cfg[’Servers’][$i][’password’] = ’00000000’; //分别填上你mysql的用户和密码

$cfg[’Servers’][$i][’auth_type’] = ’http’; // 这里也可以改为cookie

改好了保存,在浏览器打开http://localhost/phpmyadmin (/index.php)输入你的用户名和密码,便可以管理mysql了.


4\修改
d:\php5\php.ini
把如下四行中的";"去掉
;extension=php_mcrypt.dll
;extension=php_msql.dll
;extension=php_mssql.dll
;extension=php_mysql.dll
;extension=php_mysqli.dll
;extension=php_mbstring.dll


====================================
url rewrite
====================================


1、在 httpd.conf 中搜索 LoadModule rewrite_module,将该行前面的 # 号删除。
2、将下面的内容加入在</VirtualHost>之前
  <IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteRule ^(.*)/testrewrite.html$ $1/index.php
  </IfModule>

技巧:
果在httpd中打开调用rewrite_module的设置,查看一下是不是能调用了,要通过 httpd -M的参数来查看;
#/usr/sbin/httpd -M


==================================
======支持php的基本配置步骤==========
==================================
==================================
配置支持php的步骤
首先要下载
apache2.2
php5

1\
在php5目录下找到php.ini文件,查看解压缩后的文件夹内容,找到“php.ini-dist”文件,将其重命名为“php.ini”,打开编辑,找到下面图中的地方, Ln385,有一个“register_globals = Off”值,这个值是用来打开全局变量的,比如表单送过来的值,如果这个值设为“Off”,就只能用“$_POST['变量名']、$_GET['变量名 ']”等来取得送过来的值,如果设为“On”,就可以直接使用“$变量名”来获取送过来的值,当然,设为“Off”就比较安全,不会让人轻易将网页间传送的数据截取。这个值是否改成“On”就看自己感觉了,是安全重要还是方便重要?

2\——在“我的电脑”上右键,“属性”,选择“高级”标签,点选“环境变量”,在“系统变量”下找到“Path”变量,选择,双击或点击“编辑”,将“;D:\php;D:\php\ext”加到原有值的后面,当然,其中的“D:\php” 是我的安装目录,你要将它改为自己的php安装目录
E:\DEDECMS\php5;E:\DEDECMS\php5\ext
3\
加入到#LoadModule vhost_alias_module modules/mod_vhost_alias.so 后面
LoadModule php5_module E:/DEDECMS/php5/php5apache2_2.dll
PHPIniDir "E:/DEDECMS/php5"
4\
AddType application/x-httpd-php .php
AddType application/x-httpd-php .html

/index.html出现
出现 Parse error: syntax error, unexpected T_STRING
取消 AddType application/x-httpd-php .html 这句就ok了,真tmd怪了

发现与php.ini 中的 ;extension=php_mbstring.dll 这行取消";"有关
要么取消http.conf中
AddType application/x-httpd-php .html
或php.ini中的改为
;extension=php_mbstring.dll
则正常运行

====================================
[url=http://www.idouye.com/]参看 http://www.idouye.com 爱豆叶资料分享[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值