apache 负载均衡_windows apache 实现负载均衡

apache 负载均衡_windows apache 实现负载均衡最近做的一个项目可能需要用Aapche实现访问请求分流提高访问性能。因此自己研究了一下。现在把我自己配置成功的过程分享一下。首先要下载Apache.建议从官网下载http://httpd.apache.org/download.cgi我安装的是最新的版本2.4.25。安装方法参照http://jingyan.baidu.com/article/296


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

最近做的一个项目可能需要用Aapche实现访问请求分流提高访问性能。因此自己研究了一下。现在把我自己配置成功的过程分享一下。
首先要下载Apache.
建议从官网下载http://httpd.apache.org/download.cgi
我安装的是最新的版本2.4.25。
安装方法参照http://jingyan.baidu.com/article/29697b912f6539ab20de3cf8.html

之前在网上找到的配置方法一般是需要安装mod_jk,配置worker.properties的,这种方法是早期的apache的配置方式。现在的2.4.25已经集成了mod_jk,不需要安装mod_jk配置worker.properties了,简单了很多。

  1. 项目准备
    负载均衡就是把所有用户的访问压力分散到多台服务器上,也可以分散到多个tomcat里。
    现在只是做的一个测试例子,所以apache,tomcat都是装在我的电脑上,我的IP是172.16.X.X
    首先要创建一个web项目,在项目的web.xml中需要加上以下配置,表明该应用可多应用分流处理,能进行Session的复制。
<display-name>TomcatClusterDemo</display-name>      

       <distributable/>    

把项目放到到tomcat1、tomcat2的webapps目录下。

我的目标是要用两个tomcat(tomcat1,tomcat2)来进行分流,这两个Tomcat的端口、AJP等配置要不一样。
tomcat1的server.xml:


<Server port="10005" shutdown="SHUTDOWN">
<Connector port="10001" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
 <Connector port="20001" protocol="AJP/1.3" redirectPort="8443" /> 
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">  

tomcat2的server.xml


<Server port="10006" shutdown="SHUTDOWN">
 <Connector port="10002" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector port="20002" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">
  1. 修改httpd.conf
    在Apache安装目录下找到Apache24/conf/下的 httpd.conf,去掉以下文本前的注释符(#)以便让Apache在启动时自动加载代理(proxy)模块。
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
    LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
    LoadModule proxy_connect_module modules/mod_proxy_connect.so
    LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
    LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so

去掉 Include conf/extra/httpd-vhosts.conf前面的注释#,

在httpd.conf文档最下面加上以下代码:

ProxyRequests Off 
<Proxy balancer://mycluster> 
BalancerMember ajp://172.16.X.X:20001/ loadfactor=1 route=jvm1
BalancerMember ajp://172.16.X.X:20002/ loadfactor=1 route=jvm2
</Proxy> 

这里的配置是跟tomcat的server.xml配置对应的。172.16.X.X是tomcat服务器的IP,端口号对应tomcat中server.xml里的ajp的端口号,route对应jvmRoute的配置。

3.用文本编辑器打开conf/extra/httpd-vhosts.conf,配置虚拟站点,在最下面加上以下代码:

<VirtualHost *:80> 
ServerName 172.16.X.X
ServerAlias localhost
ProxyPass / balancer://mycluster/ stickysession=jsessionid nofailover=On
ProxyPassReverse / balancer://mycluster/
ErrorLog "logs/lbtest-error.log"
CustomLog "logs/lbtest-access.log" common
</VirtualHost> 

到这里配置就基本上完成了。
然后写个测试页面test.jsp放到两个tomcat的项目里测试:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<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 属性设置 System.out.println( "=========test=========="); %>

</table>
</form>
</body>
</html>

重启apache,tomcat1,tomcat2,
在浏览器输入http://172.16.X.X/test.jsp ,然后多刷新几次。
这里写图片描述
这里写图片描述
参考文章:
http://www.cnblogs.com/qqzy168/archive/2013/08/03/3199237.html
http://bbs.it-home.org/thread-40372-1-1.html
http://googolflex.com/?p=492

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/197850.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 模拟实现银行家算法c语言

    模拟实现银行家算法c语言因为课设要做银行家算法,就写着记录一下。在网上看了很多,有java也有c。借鉴别人的,自己试着改了一下。银行家算法:第一模块:银行家算法中的数据结构为了实现银行家算法,在系统中必须设置这样四个数据结构,分别用来描述系统中可用的资源,所有进程对资源的最大需求,系统中的资源分配,以及所有的进程话需要多少资源的情况。1.可利用资源向量Available。这是一个含有m个元素的数组,其中的而每一个…

    2022年7月22日
  • 电路实习报告:简易收音机的焊接

    电路实习报告:简易收音机的焊接本文是本科生电路实习(焊接部分)的实习报告

    2022年10月24日
  • 客户端是移动端吗_谈单的技巧

    客户端是移动端吗_谈单的技巧1、百度开放平台选择开发者服务申请应用2、zai

    2022年10月8日
  • 浮雕建模软件_自建房设计软件

    浮雕建模软件_自建房设计软件vectricaspire10是一款非常专业的3d浮雕模型设计软件,为CNC铣床上创建和切割零件提供了强大直观的解决方案,凭借其独特的3D组件建模、完善的2D设计、编辑工具集让你可以轻松使用现有2D数据或导入的3D模型,甚至能够从头开始创建自己的2D和3D零件。而且可以将几何体捕捉到不作为几何体存在的直线,延伸和交叉点,从而减少对大多数构造矢量的需求,还具有一整套完善的绘图工具,允许你通过在创建几何体时允许键入值来更轻松地为形状创建和编辑过程添加更多精度,让你能够更准确地切割这些形状。与此同时,全新的v

    2022年9月5日
  • css绝对定位与相对定位结合使用_css定位方法

    css绝对定位与相对定位结合使用_css定位方法css绝对定位与相对定位结合使用1、绝对定位与相对定位绝对定位使元素的位置与文档流无关,因此不占据空间。这一点与相对定位不同,相对定位实际上被看作普通流定位模型的一部分,因为元素的位置相对于它在普通流中的位置。相对定位是一个非常容易掌握的概念。如果对一个元素进行相对定位,它将出现在它所在的位置上。然后,可以通过设置垂直或水平位置,让这个元素“相对于”它的起点进行移动。—(w3cSchool)…

    2022年10月30日
  • MyBatis快速入门第八讲——MyBatis逆向工程自动生成代码

    MyBatis快速入门第八讲——MyBatis逆向工程自动生成代码MyBatis框架的学习(七)——MyBatis逆向工程自动生成代码什么是逆向工程MyBatis的一个主要的特点就是需要程序员自己编写sql,那么如果表太多的话,难免会很麻烦,所以mybatis官方提供了一个逆向工程,可以针对单表自动生成mybatis执行所需要的代码(包括mapper.xml、mapper.java、po..)。一般在开发中,常用的逆向工程方式是通过数据库的表生成代码。使用逆向工程

    2022年6月19日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号