`
jysemel
  • 浏览: 6626 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

apache负载均衡和热备份

 
阅读更多
一般来说,负载均衡就是将客户端的请求分流给后端的各个真实服务器,达到负载均衡的目的。还有一种方式是用两台服务器,一台作为主服务器(Master),另一台作为热备份(Hot Standby),请求全部分给主服务器,在主服务器当机时,立即切换到备份服务器,以提高系统的整体可靠性。

1. 负载均衡的设置

1).基本配置
Apache可以应对上面这两种需求。先来讨论一下如何做负载均衡。假设一台apache服务器域名为www.a.com, 首先需要启用Apache的几个模块:
Httpd.conf代码
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),或许能支持其他协议的负载均衡,有兴趣的朋友可以自己尝试一下。

然后要添加以下配置:
Httpd.conf代码
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>


注:node-a.myserver.com,node-b.myserver.com是另外两台服务器的域名,不是当前服务器的域名

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

ProxyPass / balancer://mycluster协议地址可以随便定义。然后,在<Proxy>段中设置该balancer协议的内容即可。 BalancerMember指令可以添加负载均衡组中的真实服务器地址。

下面那段<Location /balancer-manager>是用来监视负载均衡的工作情况的,调试时可以加上(生产环境中禁止使用!),然后访问 http://localhost/balancer-manager/ 即可看到负载均衡的工作状况。

OK,改完之后重启服务器,访问你的Apache所在服务器的地址(www.a.com),即可看到负载均衡的效果了。

出错提示:
访问网页提示Internal Serveral Error,察看error.log文件
Error.log代码
[warn] proxy: No protocol handler was valid for the URL /admin/login_form. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

原因是配置:# ProxyPass / balancer://mycluster 可能少了一个/

2). 负载比例分配
打开 balancer-manager 的界面,可以看到请求是平均分配的。

如果不想平均分配怎么办?给 BalancerMember 加上 loadfactor 参数即可,取值范围为1-100。比如你有三台服务器,负载分配比例为 7:2:1,只需这样设置:

Httpd.conf代码
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


3).负载分配算法

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

Httpd.conf代码
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 按照繁忙程度均衡(总是分配给活跃请求数最少的服务器)

各种算法的原理请参见Apache的文档。

2. 热备份(Hot Standby)
热备份的实现很简单,只需添加 status=+H 属性,就可以把某台服务器指定为备份服务器:
Httpd.conf代码
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。
分享到:
评论

相关推荐

    CentOS下apache负载均衡与JBoss集群配置

    根据描述,JBoss集群与Apache负载均衡器配置完成后,JBoss服务器之间可以实现应用程序的热备份,同时也可以通过负载均衡来分散用户请求,避免单点故障,提高整个系统的稳定性和可用性。值得注意的是,尽管JBoss可以...

    两台服务器上做Apache2.2+Tomcat6.0+mod_jk的负载均衡

    "两台服务器上做Apache2.2+Tomcat6.0+mod_jk的负载均衡"是一个典型的分布式系统架构,旨在通过在多台服务器之间分配工作负载来提高系统的稳定性和性能。下面将详细介绍这个配置涉及的知识点: 1. **Apache ...

    Apache2.2+tomcat6.0搭建负载均衡服务器

    4. **热备份和集群配置**: - 负载均衡器的目的是在某个后端服务器出现问题时,将请求自动路由到其他正常运行的服务器,实现高可用性。 - 可以通过增加更多的`BalancerMember`来扩展集群,以支持更多服务器的负载...

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

    一台作为主服务器(Master),另一台作为热备份(Hot Standby),请求全部分给主服务器,在主服务器当机时,立即切换到备份服务器,以提高系统的整体可 第一次看到这个标题时我也很惊讶,Apache居然还能做负载均衡?...

    apache+tomcat配置文件

    这种配置通常涉及到负载均衡、故障转移和资源优化。以下是一些关键的配置知识点: 1. **Apache mod_proxy模块**:Apache的mod_proxy模块是实现Apache与Tomcat通信的关键,它允许Apache作为反向代理,将HTTP请求转发...

    Apache Ignite内存数据组织 v2.16.0.zip

    7. **服务网格**:Ignite的服务网格(Service Grid)允许用户部署自定义的服务实例到集群中,这些服务可以在多个节点上运行,提供水平扩展和负载均衡。 8. **事件和监听器**:Ignite提供了丰富的事件机制,允许...

    高并发web集群框架搭建

    - **Keepalived**:用于实现Nginx的高可用性,通过虚拟IP(VIP)实现热备份。 - 配置Keepalived以监控Nginx的状态,并在故障发生时自动切换至备用节点。 - 使用`check_http`或`check_tcp`进行健康检查。 - 配置...

    VisualSVN-Server.rar

    3. 负载均衡:通过设置多个VisualSVN Server实例,可以实现负载均衡,提高服务的可用性和性能。 总结,VisualSVN Server是Windows环境下部署和管理SVN的强大工具,结合其易用的管理界面和丰富的功能,使得SVN服务器...

    运维工程师面试常考的题 希望对大家有帮助

    负载均衡是指将来自外部网络的请求分配到多个服务器上,以提高系统的可用性和性能。常见的负载均衡协议有 HTTP 负载均衡、TCP 负载均衡、UDP 负载均衡等。 四、RAID 原理 RAID(Redundant Array of Independent ...

    网络管理员面试题汇总

    负载均衡和集群技术可以提高系统的可用性和性能。实现这一目标的基本架构包括两台服务器和一个共享存储设备。每台服务器配备双网卡,一个用于心跳检测,另一个用于公共网络通信。一旦某台服务器发生故障,另一台...

    第五组_服务器系统的设计方案.pdf

    门户Web网站服务器需要能够承受高流量,并且可能需要负载均衡设备来分发请求。Web服务器硬件配置通常包括高速硬盘、大量的RAM和强大的处理器,以支持动态内容生成和高并发访问。FTP服务器用于存储和分发教学资源,...

    大型网站技术路线架构演化

    - 通过冷备份、热备份和灾备数据中心等方式实现数据的冗余存储,保证了系统的可靠性和业务连续性。 8. **自动化**: - 自动化测试、预发布验证、代码控制和自动化发布等手段能够提高开发效率,减少人为错误。 9....

    服务器集群.ppt.ppt

    这种架构允许负载均衡、故障转移和资源池化,是大型网站、企业级应用和云计算平台的核心组成部分。下面我们将深入探讨服务器集群的相关知识点。 1. **负载均衡**:在服务器集群中,负载均衡器是关键组件,它负责将...

    银行后台仿真主机.zip

    因此,系统设计需要考虑冗余和故障切换机制,如负载均衡、热备份和灾难恢复策略。 6. **批量处理与调度**:银行后台会进行大量的批处理任务,如夜间结算、批量计息等,这需要高效的批处理框架和作业调度系统。 7. ...

    Solr部署及开发

    此外,Solr还支持热备份和滚动重启,可以在不中断服务的情况下进行升级和维护。 总之,Apache Solr 是一个强大的全文检索平台,它的易用性、灵活性和高性能使其在各种规模的企业中得到广泛应用。通过熟练掌握Solr的...

    2009-2017年系统架构师真题和答案详解

    2. 负载均衡:通过负载均衡器分发请求,提高系统并发处理能力。 3. 数据库优化:索引优化、查询优化、读写分离、分片等。 4. 异步处理:使用消息队列(如RabbitMQ或Kafka)实现任务异步化,提升响应速度。 四、安全...

    Tomcat中文帮助

    15. **故障转移和备份策略**:对于企业级应用,了解如何设计灾难恢复计划,以及如何进行Tomcat服务器的热备份和冷备份。 “Tomcat中文帮助”资料将这些知识点详细阐述,无论你是Java Web新手还是有经验的开发者,都...

    tomcat使用手册

    8. **集群与负载均衡**:如果需要高可用性和扩展性,可以学习如何配置Tomcat集群,使用负载均衡器分配请求。 9. **故障排查**:手册会提供诊断工具和方法,如使用JMX监控、分析日志文件,以及如何使用`jstack`、`...

    Cloudera大数据平台参考架构设计.pdf

    该平台通过多种技术手段,包括负载均衡、数据冗余、热备份等,确保平台的高可用性和可靠性。 六、预部署考虑 Cloudera Enterprise 5的预部署考虑是指平台的预部署准备工作,包括硬件选择、软件配置、网络设置等。...

Global site tag (gtag.js) - Google Analytics