`

用apache的mod_proxy模块实现服务器的负载均衡(转)

阅读更多

用apache的mod_proxy模块实现网站的负载均衡,apache果然强大.
下面来解释一下什么是负载均衡:
负载均衡就是将客户端的请求分流给后端的各个真实服务器,达到负载均衡的目的。还有一种方式是用两台服务器,一台作为主服务器(Master),另一台作为热备份(Hot Standby),请求全部分给主服务器,在主服务器当机时,立即切换到备份服务器,以提高系统的整体可靠性。

负载均衡的设置:
Apache可以应对上面这两种需求。先来讨论一下如何做负载均衡。
首先需要启用Apache的几个模块:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so

mod_proxy提供代理服务器功能,mod_proxy_balancer提供负载均衡功能, mod_proxy_http让代理服务器能支持HTTP协议。如果把mod_proxy_http换成其他协议模块(如mod_proxy_ftp),或许能支持其他协议的负载均衡,有兴趣的朋友可以自己尝试一下。

然后要添加以下配置:

ProxyRequests Off
<Proxy balancer://mycluster>
BalancerMember http://node-a.myserver.com:8080
BalancerMember http://node-b.myserver.com:8080
</Proxy>
ProxyPass / balancer://mycluster
# 警告:以下这段配置仅用于调试,绝不要添加到生产环境中!!!
<Location /balancer-manager>
SetHandler balancer-manager
order Deny,Allow
Deny from all
Allow from localhost
</Location>

从上面的 ProxyRequests Off 这条可以看出,实际上负载均衡器就是一个反向代理,只不过它的代理转发地址不是某台具体的服务器,而是一个 balancer:// 协议:

ProxyPass / balancer://mycluster协议地址可以随便定义。然后,在 段中设置该balancer协议的内容即可。 BalancerMember指令可以添加负载均衡组中的真实服务器地址。
下面那段是用来监视负载均衡的工作情况的,调试时可以加上(生产环境中禁止使用!),然后访问 http://localhost/balancer-manager/ 即可看到负载均衡的工作状况。
OK,改完之后重启服务器,访问你的Apache所在服务器的地址,即可看到负载均衡的效果了。打开 balancer-manager 的界面,可以看到请求是平均分配的。
如果不想平均分配怎么办?给 BalancerMember 加上 loadfactor 参数即可,取值范围为1-100。比如你有三台服务器,负载分配比例为 7:2:1,只需这样设置:

ProxyRequests Off
<Proxy balancer://mycluster>
BalancerMember http://node-a.myserver.com:8080 loadfactor=7
BalancerMember http://node-b.myserver.com:8080 loadfactor=2
BalancerMember http://node-c.myserver.com:8080 loadfactor=1
</Proxy>
ProxyPass / balancer://mycluster

默认情况下,负载均衡会尽量让各个服务器接受的请求次数满足预设的比例。如果要改变算法,可以使用 lbmethod 属性。如:

ProxyRequests Off
<Proxy balancer://mycluster>
BalancerMember http://node-a.myserver.com:8080 loadfactor=7
BalancerMember http://node-b.myserver.com:8080 loadfactor=2
BalancerMember http://node-c.myserver.com:8080 loadfactor=1
</Proxy>
ProxyPass / balancer://mycluster
ProxySet lbmethod=bytraffic
lbmethod可能的取值有:
lbmethod=byrequests 按照请求次数均衡(默认)
lbmethod=bytraffic 按照流量均衡
lbmethod=bybusyness 按照繁忙程度均衡(总是分配给活跃请求数最少的服务器)
各种算法的原理请参见
http://httpd.apache.org/docs/2.2/en/mod/mod_proxy_balancer.html    Apache的文档。
热备份(Hot Standby)
热备份的实现很简单,只需添加 status=+H 属性,就可以把某台服务器指定为备份服务器:

ProxyRequests Off
<Proxy balancer://mycluster>
BalancerMember http://node-a.myserver.com:8080
BalancerMember http://node-b.myserver.com:8080 status=+H
</Proxy>
ProxyPass / balancer://mycluster

从 balancer-manager 界面中可以看到,请求总是流向 node-a ,一旦node-a挂掉, Apache会检测到错误并把请求分流给 node-b。Apache会每隔几分钟检测一下 node-a 的状况,如果node-a恢复,就继续使用node-a。

分享到:
评论

相关推荐

    Mod_Proxy+Apache+Tomcat负载均衡与集群配置

    本文档详细介绍了使用mod_proxy模块与Apache和Tomcat结合来实现负载均衡与集群配置的过程。配置前需要准备相应的环境,包括安装JDK、Apache HTTP Server和Tomcat服务器。本文档使用了Tomcat 7.0.2作为应用服务器,并...

    TOCAT_APACHE.rar_负载 方案_负载均衡

    通过mod_proxy,我们可以设置多个后端Tomcat服务器,形成一个集群,然后使用不同的负载均衡策略,如轮询、权重分配、最少连接数等。 1. **轮询策略**:每个请求依次分配给不同的服务器,确保所有服务器平均分担工作...

    apache服务器负载均衡方案

    ### Apache服务器负载均衡方案 #### 一、概述 在现代互联网应用中,随着访问量的增加,单一服务器往往难以承担高并发请求的压力。为了解决这一问题,采用负载均衡技术来分散请求到多个服务器上变得至关重要。...

    Apache与Tomcat整合教程(服务器负载均衡)

    2. **Mod_proxy_module**:另一种方法是使用Apache的Mod_proxy模块,它可以透明地将请求转发到Tomcat。Mod_proxy提供了HTTP、HTTPS、AJAX等多种代理模式,并且支持AJP(Apache JServ Protocol)协议,直接与Tomcat...

    服务器负载均衡技术:使用apache部署集群实现负载均衡

    服务器负载均衡技术是网络服务中的重要概念,它旨在通过分散网络流量到多个服务器,从而提高系统的可用性和响应速度,防止单点故障。Apache作为一款广泛应用的开源Web服务器,可以通过一些扩展实现负载均衡功能,...

    jboss4.2.3GA集群配置 Apache负载均衡

    而Apache作为Web服务器,可以通过mod_jk模块实现对应用服务器的负载均衡。本教程将详细讲解如何在Windows环境下,使用Apache和mod_jk来搭建一个JBoss集群。 **一、环境准备** 1. **JBoss 4.2.3GA**:下载并解压,...

    Apache+tomcat实现负载均衡

    本篇文章将详细介绍如何使用Apache和Tomcat实现负载均衡。 负载均衡的核心思想是将来自用户的请求分发到多个服务器上,以避免单一服务器过载。在Apache与Tomcat的组合中,Apache通常作为前端负载均衡器,通过HTTP...

    Apache负载均衡设置方法 mod_proxy使用介绍

    Apache负载均衡设置方法主要依赖于`mod_proxy`模块,这是一种在Apache HTTP服务器中实现负载均衡和反向代理的功能。负载均衡的目标是分散客户端的请求到多个后端服务器,以优化资源利用,提高响应速度,以及增强系统...

    tomcat_apache_mod

    标题"tomcat_apache_mod"暗示了我们将讨论如何将Apache HTTP Server与Tomcat进行整合,利用Apache的mod_proxy模块来实现负载均衡。mod_proxy是Apache的一个模块,可以作为反向代理服务器,将来自用户的请求转发给...

    Apache+tomcat负载均衡

    Apache通常通过其模块mod_proxy来实现负载均衡,它可以与Tomcat或者其他应用服务器进行集成。 在Apache中配置负载均衡,首先需要安装mod_proxy和mod_proxy_balancer模块。这些模块允许Apache作为反向代理服务器,...

    Apache负载均衡实现

    Apache负载均衡实现是一种高效的方法,用于在多台服务器之间分散网络流量,以提高系统的可用性和响应速度。在本文中,我们将深入探讨如何使用Apache HTTP Server作为反向代理,实现负载均衡的功能。 首先,Apache ...

    apache 反向代理实现 负载均衡

    Apache反向代理是一种网络服务器配置技术,用于将客户端请求转发到后端服务器集群,从而实现负载均衡。在高流量网站或应用中,反向代理能够有效地分发流量,提高服务的稳定性和响应速度,同时也提供了更好的可扩展性...

    Apache负载均衡

    为了监控和管理负载均衡器,可以使用Apache的`mod_status`模块,它提供了一个实时查看服务器状态的页面。此外,还可以结合其他工具如HAProxy、Nginx等,实现更复杂的负载均衡解决方案。 在实际环境中,需要考虑安全...

    实现apache+tomcat集群和负载均衡的比较

    Apache的负载均衡模块主要有两种常用的方式:mod_proxy和mod_jk。mod_proxy是Apache内建的反向代理模块,可以直接处理HTTP、HTTPS等协议,支持轮询、最少连接、IP哈希等多种负载均衡策略。mod_jk是专门为Tomcat设计...

    apache_tomcat负载均衡

    1. **Apache HTTP Server + mod_proxy**:Apache HTTP Server可以通过其mod_proxy模块实现反向代理和负载均衡。首先,需要在Apache的配置文件(httpd.conf)中启用mod_proxy及相关模块,如mod_proxy_balancer。然后...

    apache 服务器负载平衡(很实用)

    Apache的mod_proxy模块可以实现反向代理功能,即将客户端请求转发给内部的后端服务器,这样客户端并不直接与后端服务器交互,增加了系统的安全性。同时,通过mod_proxy_balancer模块,可以实现负载均衡功能,动态地...

    使用apache,tomcat做负载均衡

    Apache的mod_proxy模块是实现负载均衡的基础。这个模块允许Apache作为反向代理,将客户端的请求转发到其他服务器。配置mod_proxy,首先需要在Apache的配置文件httpd.conf中启用它: ```bash LoadModule proxy_...

    apache转发服务器

    通过mod_proxy_balancer模块,Apache可以实现负载均衡,将请求分散到多个后端服务器,提高系统可用性和响应速度。配置如下: ```apacheconf LoadModule proxy_balancer_module modules/mod_proxy_balancer.so ...

    apache2.2.4 负载均衡.txt

    其中,`mod_proxy_balancer`是核心模块,用于实现负载均衡功能。 #### 三、基本负载均衡配置示例 1. **配置文件修改** 在Apache的主配置文件`httpd.conf`中添加以下内容: ```apache ProxyPass / balancer://...

Global site tag (gtag.js) - Google Analytics