Apache+Resin做负载均衡 [windows 2003]
Apache+Resin做负载均衡Apache2的配置
Apache2.2和resin 3.1,windows平台单机做负载平衡
Apache2.2和resin 3.1,windows平台单机做负载平衡
apache版本:2.2.6(Win32)
resin版本:3.1.3
1.安装apache.我下载的是apache的windows安装包,所以直接运行后,apache会自动被安装成windows服务,这里服务名我定为apache2.2
2.下载resin3.1.3 windows版,解压到硬盘上某个目录中
3.在resin目录下的win32\apache-2.2中有个文件:mod_caucho.dll,记住这个文件的全路径和文件名(e.g.:记在notepad中).比如,在我机器上,要记下的内容为:c:\resin-
3.1.3\win32\apache-2.2\mod_caucho.dll,然后,把路径中的反斜杠改为斜杠,所以,最后,要记录下的内容为:c:/resin-3.1.3/win32/apache-2.2/mod_caucho.dll
4.修改resin的配置文件resin.conf
在resin2中,查看网上的一些资料,发现配置负载平衡是用<srun/>这个配置项,但在resin3中,配置文件已经全面变动,负载平衡改用<server/>
这里以在一台机器上运行4个resin实例为例
a.在resin.conf中找寻内容<!– define the servers in the cluster –>,在这行的下面一行内容是<server id="" address="127.0.0.1" port="6800"/>,这行其实
就说明运行一个resin实例,所以这里我们要改成四个<server/>,如下:
<server id='resin-a' address='127.0.0.1' port='6801' watchdog-port="6601">
<http port="8081"/>
</server>
<server id='resin-b' address='127.0.0.1' port='6802' watchdog-port="6602">
<http port="8082"/>
</server>
<server id='resin-c' address='127.0.0.1' port='6803' watchdog-port="6603">
<http port="8083"/>
</server>
<server id='resin-d' address='127.0.0.1' port='6804' watchdog-port="6604">
<http port="8084"/>
</server>
id标识了不同的server,这里的四个id可以随便改,只要不一样就行
port标识了不同的监听端口,apache会把需要resin处理的http请求转发到此端口(不知道理解得对不对,如果有高人有别的看法,欢迎批评指正),这里的端口也可
以改为别的端口号
watchdog-port是resin watchdog的监听端口,每启动一个resin实例,就会伴随启动一个resin的watchdog,watchdog也需要分配一个端口,watchdog好像是监视
resin服务的,它有自动启动和停止resin服务的功能,他的默认端口为6600,如果不指定这些端口,在日志文件中会看到JVM端口绑定错误,而且指明了是6600端口绑定错误
<http port="端口号"/>,这个指定了每个resin的http侦听端口,也需要指定来进行区分,否则也会出现端口绑定错误
b.查找行<http address="*" port="8080"/>,这里指定了默认的resin监听端口,这里需要把这行注释掉
c.接下来,你可以用<web-app/>按一般方式来配置resin的web应用
例如:
在resin.conf
<host id="" root-directory=".">
<web-app id="/struts2" root-directory="D:/workspace/struts2/WebRoot"/>
红色部分是我加入的内容
<!--
- configures an explicit root web-app matching the
- webapp's ROOT
-->
<web-app id="/" root-directory="webapps/ROOT"/>
<web-app id="/resin-admin" root-directory="${resin.home}/php/admin">
<!--
- Administration application /resin-admin
-->
<prologue>
<resin:set var="resin_admin_external" value="false"/>
<resin:set var="resin_admin_insecure" value="true"/>
</prologue>
</web-app>
</host>
5.修改apache的配置文件httpd.conf
在httpd.conf的最后,加上如下的内容:
LoadModule caucho_module C:/resin-3.1.3/win32/apache-2.2/mod_caucho.dll
找到IfModule 标签,在里面配置跟resin里面一样的服务器转发地址和端口。
<IfModule mod_caucho.c>
ResinConfigServer 127.0.0.1 6801
ResinConfigServer 127.0.0.1 6802
ResinConfigServer 127.0.0.1 6803
ResinConfigServer 127.0.0.1 6804
CauchoStatus yes
</IfModule>
可以看到,第3步中记录的内容就是放在这个地方的。
这里假设你在resin.conf中也配置了web-app目录的web应用
这样,当你访问http://localhost/web-app时,一些不需要由resin处理的内容,如静态页面,jpg等,则由apache处理,而像jsp文件,则apache会交给resin处理.
6.把resin安装成windows服务
这里把resin安装成四个服务
进入windows的命令行,进行resin目录,执行如下命令:
httpd -install resin-a (移除服务httpd -remove resin-a)
httpd -install resin-b
httpd -install resin-c
httpd -install resin-d
7.启动apache和四个resin
1)启动resin
因为配置了server id 所以,不能直接执行httpd.exe.用命令行(在这里一定要注意,不是直接启动resin中的httpd.exe,如果启动就错了。这个问题我也是找了很久)
cd 到resin的安装目录
httpd -server resin-a start //这里的-server后面的resin-a就和resin.conf中的<server id="resin-a"中的resin-a对应(停止服务为httpd -server resin-a stop )
httpd -server resin-b start
httpd -server resin-c start
httpd -server resin-d start
5.启动apahe
进入apache安装目录
net start apache2.2
(或者直接到window>控制面板>服务中找到apache2.2[因为安装了apache后,apache会自动安装成window服务])
8.在浏览器中输入http://localhost/caucho-status,如果看到host列的四个都为绿色,则表求配置成功,你可以输入你web应用的目录来进行测试了
因为我配置的项目路径为:
<web-app id="/struts2" root-directory="D:/workspace/struts2/WebRoot"/>
所以可以通过http://localhost/来访问你的项目
该URL直接指向了你的WebRoot,在你的D:/workspace/struts2/WebRoot加入一个test.jsp
那么就可以通过http://localhost/test.jsp来访问了。
注意:
1.如果你在apache的httpd.conf中找到
DocumentRoot:节点。
该节点表示的意思就是在apache中配置你项目的根路径。
DocumentRoot "E:/BOSS/SVN_work/boss/web"
在这里指定你的项目根路径。如果没有指定,那么所有的页面都没有样式。
2.找到:
<IfModule dir_module>
DirectoryIndex index.html index.jsp default.jsp
</IfModule>
该节点中表示的是你项目访问的首页地址。
apache/httpd.conf
该文件的最后可以另外配置以下的参数:
<IfModule mod_caucho.c>
#表示对于服务目录下的web-inf目录禁止访问
<LocationMatch "/WEB-INF">
deny from all
</LocationMatch>
#表示所有以JSP结尾的文件都进行转发到RESIN服务器。
<LocationMatch (.*?).jsp>
SetHandler caucho-request
</LocationMatch>
#表示对于所有以.action结尾的URL都转发到RESIN服务器。
<LocationMatch (.*?).action>
SetHandler caucho-request
</LocationMatch>
#表示所有以/servlet开头的URL都转发到resin服务器
<LocationMatch "/servlet/*">
SetHandler caucho-request
</LocationMatch>
<Location /caucho-status>
SetHandler caucho-status
</Location>
#表示是否配置http://localhost/caucho-status页面的监控
CauchoStatus yes
</IfModule>
日志文件的产生。
resin配置成window服务启动以后,会在resin安装路径下的log文件夹下产生相应的LOG文件
比如:
jvm-resin-a.log这个就是resin-a启动后的日志文件。
页:
[1]