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

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Effective C++:规定27:尽量少做动作的过渡

    Effective C++:规定27:尽量少做动作的过渡

    2022年1月5日
    40
  • 遗传算法的应用实例python实现_python遗传算法库

    遗传算法的应用实例python实现_python遗传算法库遗传算法遗传算法是用于解决最优化问题的一种搜索算法。从名字来看,遗传算法借用了生物学里达尔文的进化理论:”适者生存,不适者淘汰“,将该理论以算法的形式表现出来就是遗传算法的过程。问题引入上面提到遗传算法是用来解决最优化问题的,下面我将以求二元函数:defF(x,y): return3*(1-x)**2*np.exp(-(x**2)-(y+1)**2)-10*(x/5-x**3……

    2022年9月23日
    0
  • h5页面 请在微信客户端打开链接_使用Fiddler抓包解决“请在微信客户端打开链接”的问题…

    h5页面 请在微信客户端打开链接_使用Fiddler抓包解决“请在微信客户端打开链接”的问题…如何看一个微信小项目的H5源代码,我想大家通用的方式就是在微信里面打开H5,然后点击右上角的复制链接,然后把链接放到PC端浏览器里面查看源代码,但是有很多做了微信授权的H5会提示,如下图做过微信授权开发的朋友都知道,遇到这个页面就算再怎么复制链接都不行了,以前还能在PC端的微信里面直接点链接可以查看代码,貌似现在也被微信封了,但是别人好的代码我们是需要学习交流的,怎么办呢?在网上查了一些资料,发现…

    2022年5月8日
    67
  • 通用计算机指令,计算机移位指令[通俗易懂]

    通用计算机指令,计算机移位指令[通俗易懂]移位指令移位指令对操作数按某种方式左移或右移,移位位数可以由立即数直接给出,或由CL间接给出。移位指令分一般移位指令和循环移位指令。1一般移位指令(1)算术/逻辑左移指令。格式:SALDEST,OPRDSHLDEST,OPRD功能:按照操作数OPRD规定的移位位数,对目的操作数进行左移操作,最高位移入CF中。每移动一位,右边补一位0。如图312(a)所示。目的操作数可以为通用寄存器或存储…

    2022年4月29日
    65
  • UML图:类图 –详细介绍

    UML图:类图 –详细介绍类图的概念描述类、接口及它们之间关系的图,显示系统中各个类的静态结构类图的元素类面向对象系统组织结构的核心对一组具有相同属性、操作、关系和语义的对象的抽象包括名称部分(Name)、属性部分(Attribute)和操作部分(Operation)类的组成名称属性操作名称:应该是一个名词,分为简单名称和路径名称,每个单词首字母大写属性:描述了类在软件系统中代表的事物(即对象)所具备的特性,类可以有任意数目的属性,也可以没有属性在UML中,类属性的语法为属性的可见性

    2022年7月12日
    19
  • 线程池参数详解

    线程池参数详解转载来自:http://blog.csdn.net/zhouhl_cn/article/details/7392607JDK1.5中引入了强大的concurrent包,其中最常用的莫过了线程池的实现ThreadPoolExecutor,它给我们带来了极大的方便,但同时,对于该线程池不恰当的设置也可能使其效率并不能达到预期的效果,甚至仅相当于或低于单线程的效率。ThreadPoo

    2022年6月6日
    38

发表回复

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

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