Apache实现反向代理负载均衡

news/2024/7/3 21:03:05

说到负载均衡LVS这套技术,有很多种实现方法。

本文所说,主要就是利用apache服务器实现反向代理,实现负载均衡。

首先,传统的正向代理如下图所示,正如我们用的游戏加速代理,大多的个人PC把请求发给正向代理服务器,代理服务器通常配置高端的带宽,替我们请求相应的服务。


而负载均衡中的反向代理,通常意义上,是一个请求转发的代理。类似一个收发室的管理人员,外来的很多邮件,传到收发室,然后由管理员分配给不同的办公室。通过这样的操作,可以使每台服务器避免过多的负载导致宕机。而转发的这个过程,通常也有很多种不同的算法。下图所示,就是一个反向代理的过程:


实现这样一个架构,需要几台服务器,不论是linux 或者 windows都可以实现。

如果如图所示,实现,则需要四台服务器,1台apache反向代理服务器,实现请求的转发分配。3台后台的主服务器。

在apache代理服务器上面,如果安装的centos系统,那么自带的httpd服务,就不用再安装apache服务器了。它的apache服务器的配置文件在/etc/httpd/conf/httpd.conf文件中,可以通过vi命令打开。

1 确保需要的mod_proxy模块均加载,主要的模块如下:

mod_proxy.so
mod_proxy_ajp.so
mod_proxy_balancer.so
mod_proxy_connect.so
mod_proxy_ftp.so
mod_proxy_http.so

2 配置相关的代理设置,在httpd.conf文件末尾添加:

ProxyRequest off
<Proxy balancer://testcluster>
  BalancerMember http://192.168.0.1 route=jvm1
  BalancerMember http://192.168.0.2 route=jvm2
  BalancerMember http://192.168.0.3 route=jvm3
</Proxy>
Proxy /tt balancer://test/tt stickysession=JSESSIONID | jsessionid nofailover=On
ProxyPass Reverse /tt balancer://test/tt

3 在后面的主服务器1(例如JBOSS服务器)的/jboss/server/default/deploy/jboss-web.service/servers.xml

 <Engine name="jboss.web" defaultHost="localhost" jvmRoute="jvm1">

....

这样一个负载均衡就大致 形成了。

其中可能有人考虑到,如果一个请求时登陆请求,而第二个请求时操作,结果第二个请求转发到第二个服务器上面。那么如何操作。这个不用担心,apache反向代理有 session粘连这样一个概念,它会把所有关于cookie的文件保存在apache服务器上面,其他的操作均会读取这样一个文件。

不同的负载分配方案

1 如果按照上面的配置方案:

ProxyRequest off
<Proxy balancer://testcluster>
  BalancerMember http://192.168.0.1:8080 route=jvm1
  BalancerMember http://192.168.0.2:8080 route=jvm2
  BalancerMember http://192.168.0.3:8080 route=jvm3
</Proxy>
Proxy /tt balancer://test/tt stickysession=JSESSIONID | jsessionid nofailover=On
ProxyPass Reverse /tt balancer://test/tt

apache服务器会按照请求,挨个转发,第一个转发给jvm1服务器。第二个请求转发给jvm2服务器。第4个请求转发给jvm1服务器等等

2 如果某台服务器的性能要优于其他几台,那么可以通过loadfactor参数实现负载的分配

ProxyRequest off
<Proxy balancer://testcluster>
  BalancerMember http://192.168.0.1:8080 route=jvm1 loadfactor=1
  BalancerMember http://192.168.0.2:8080 route=jvm2 loadfactor=2
  BalancerMember http://192.168.0.3:8080 route=jvm3 loadfactor=3
</Proxy>
Proxy /tt balancer://test/tt stickysession=JSESSIONID | jsessionid nofailover=On
ProxyPass Reverse /tt balancer://test/tt

这样第一个请求发给jvm1,第二个和第三个发给jvm2,第四个到第六个发给jvm3

本文转自博客园xingoo的博客,原文链接:Apache实现反向代理负载均衡,如需转载请自行联系原博主。

http://www.niftyadmin.cn/n/1123770.html

相关文章

同济大学高等数学上册电子版_同济大学编高等数学上册第十一页例题几何解法...

这道题是描述这样一个规律&#xff1a;定义域对称的函数f(x),总是能被分解为偶函数g(x)与奇函数h(x)之和。书中使用代数解&#xff0c;很清晰简洁。f(x)f(-x) 肯定是 偶函数&#xff0c;f(x)-f(-x)肯定是奇函数。所以 这个偶函数这个奇函数2f(x);也就能拼出f(x)了(奇偶函数各/2…

获取rpm文件,不安装

2019独角兽企业重金招聘Python工程师标准>>> 比如你要将test.rpm用test.rpm里的某个文件&#xff0c;但你又不想安装test.rpm&#xff0c;那你可以试试这个办法。 随便建一个目录 mkdir aaa 把test.rpm放入目录aaa里并进入aaa目录 cp path/to/test.rpm aaa/ cd aaa …

在Oracle中使用rank()over()排名的问题

排序&#xff1a; ---rank()over(order by 列名 排序)的结果是不连续的&#xff0c;如果有4个人&#xff0c;其中有3个是并列第1名&#xff0c;那么最后的排序结果结果如&#xff1a;1 1 1 4 select scoreid, studentid,COURSENAME,totalexamscore , rank()over(order by TOTAL…

hadoop之mapreduce实例

例子很简单&#xff0c;我没有运行自带的wordcount&#xff0c;而是自己做了一个简单的例子。实现的功能是从我们的nginx的access log里面计算url访问的次数。access log文件&#xff1a;10.2.112.22 - - [11/Apr/2012:10:25:31 0800] "GET /bf5bd91c/css/base/base_jiexi…

fib函数用迭代替换递归

fib函数递归实现&#xff1a; long Fib(long n) {if (n < 1) {return n; }else {var t1 Fib(n - 1);var t2 Fib(n - 2);return t1 t2; } } fib函数改为迭代&#xff1a; class Class1 {class Node …

Java四种线程池

线程池的好处 1、线程的创建需要消耗的&#xff0c;用完了马上就扔了比较可惜&#xff0c;所以把它缓存起来&#xff0c;以后还能再用&#xff1b; 2、可以根据实际情况调整线程池的大小&#xff0c;防止线程太多&#xff1b; 3、有些场合可以用线程池来做同步&#xff08;比如…

HDU-2896 病毒侵袭(AC自动姬)

病毒侵袭 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 28243 Accepted Submission(s): 6538 Problem Description当太阳的光辉逐渐被月亮遮蔽&#xff0c;世界失去了光明&#xff0c;大地迎来最黑暗的时刻。…

Aruba无线网络学习(二)

说明&#xff1a;工作过程中接触到了Aruba无线网络设备&#xff0c;并在其网站上下载了技术文档。文档是英文的&#xff0c;看起来有一点费劲。只好一边翻译&#xff0c;一边学习&#xff0c;一边记笔记。水平有限&#xff0c;难免有错误的地方&#xff0c;请大家帮助指正。七、…