最近粗略地看了一下apache的负载均衡,并用JMeter进行简单测试。
1.简单的http server
要使用负载均衡,至少需要两台server。我使用的python脚本建立了一个简单的服务器程序,启动时使用不同的port;在apache设置将同一个地址同时指各两个port.
#python server script
#File Name: httpdT1.py
#-*- coding: utf-8 -*-
import os, sys, time
import BaseHTTPServer
import SimpleHTTPServer
SERVER_PORT = 80
logfile = None
COUNTER = 0
def get_server_id():
return 'SVR-%d'%(SERVER_PORT)
def log_line():
global logfile
global COUNTER
COUNTER = COUNTER + 1
if logfile == None:
log_name = get_server_id() + '.log'
logfile = open(log_name, 'w')
line = '%d - [%s]%d\n'%(COUNTER, time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()), os.getpid())
logfile.write(line)
class MyHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_GET(self):
log_line()
return SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)
def run(server_class=BaseHTTPServer.HTTPServer,
handler_class=MyHTTPRequestHandler):
global SERVER_PORT
server_address = ('',SERVER_PORT)
httpd = server_class(server_address, handler_class)
print httpd.server_name, httpd.server_port, httpd.allow_reuse_address
httpd.serve_forever()
if len(sys.argv) < 2:
sys.exit(1)
SERVER_PORT = int(sys.argv[1])
run()
可通过如下命令来启动该http server:
python httpdT1.py 8001
python httpdT1.py 8002
在这里需要开启两个http server, 分别监听两个不同的端口,8001和8001。需要在两个不同的命令行窗口下完成,它们的log会分别写入SVR-8001.log和SVR-8002.log。此外还需要在脚本目录下添加一个index.html文件,当接收请求时会返回该文件。
2. Apache load balance设置
首先需要mod_proxy的支持。去年apahce 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
然后在文件尾添加如下段,表示会将对地址/balancer的访问分配到对址http://127.0.0.1:8001和http://127.0.0.1:8002的访问
<Proxy balancer://mycluster>
BalancerMember http://127.0.0.1:8001
BalancerMember http://127.0.0.1:8002
</Proxy>
ProxyPass /balancer balancer://mycluster
3. JMeter
JMeter是Apache中用于性能测试的一个子项目,这里用它来产生请求以便查看balance效果。在下载并解压JMeter后,运行bin文件夹下jmeter.bat文件来启动程序。大概配置过程如下,可参见attahced的截图。
1. 将新建的Test Plan命名为"Load Balance Test Plan"
2. 右击"Load Balance Test Plan",添加"Http请求默认值"。设置服务器为localhost,端口80(apahce服务器的监听端口),协议http,路径/balancer
3. 添加"线程组",线程数为1,执行次数为100
4. 添加"HTTP请求",这里使用默认值,不需要设置
5. 添加"用表格查看结果"
在启动apache httpd sever,并在命令行窗口下运行python脚本监听8001和8002端口后,就可以点击JMeter的“运行->启动”菜单项开始测试了。可以在"用表格查看结果"中查看请求次数及完成状态。
从log文件SVR-8001.log和SVR-8002.log中可以查看两个端口各接收请求的次数。不过需要中断两个httpdT1.py脚本的执行才能看到结果,因为只有这时log才会写入文件中。从如下截图中可以看到各接收了50请求,是计数平均分配的。Apache proxy_balancer_module 模块中还有其它分配算法可供选择。
4. Reference

- 描述: Http请求默认值
- 大小: 38.6 KB

- 描述: 线程组
- 大小: 34 KB

- 大小: 73.9 KB

- 大小: 53.8 KB
分享到:
相关推荐
### Nginx+Apache负载均衡知识点详解 #### 一、Nginx简介及特性 **Nginx** 是一种高性能的 HTTP 和反向代理 Web 服务器,同时也支持 IMAP/POP3/SMTP 服务。其核心特点包括: - **高性能**:能够处理大量并发连接...
#### 三、Apache负载均衡配置步骤 ##### 1. 启用代理模块 首先,需要确保Apache已经安装了必要的代理模块。通过编辑`httpd.conf`文件,取消以下行的注释启用相关模块: ```apache LoadModule proxy_module ...
1. **轮询策略**:最简单的负载均衡策略是轮询,每个请求依次分配到不同的服务器,确保负载均匀分布。 2. **最少连接数策略**:此策略将新的请求分配给当前连接数最少的服务器,这样可以避免繁忙的服务器接收更多...
- 在同一台设备上配置多实例Tomcat和Apache,可以实现本地测试或开发环境的负载均衡,但实际生产环境中,通常会将不同的Tomcat实例部署在不同的物理或虚拟服务器上,以实现真正的分布式负载均衡。 通过以上步骤,...
创建一个简单的JSP页面(test.jsp),部署在每个Tomcat实例的webapps目录下的一个名为test的应用中,然后访问该页面以验证负载均衡是否正常工作。 负载均衡配置完成后,Apache将根据设定的策略将JSP请求分发到...
可以通过部署相同的Web应用程序到各个Tomcat节点上来测试负载均衡的效果。 #### 四、注意事项 - 确保所有Tomcat节点版本一致,以避免session复制等问题。 - 在workers.properties中配置的各个Tomcat节点的端口应各...
通过以上步骤,一个简单的基于Apache和Tomcat的集群/负载均衡环境就在Windows系统中搭建完成了。需要注意的是,实际部署中可能还需要考虑更多的因素,如故障转移、安全策略以及监控等,以确保整个系统的高可用性和...
常见的负载均衡方式包括硬件负载均衡(如F5)和软件负载均衡(如Nginx、Apache)。 #### 四、Nginx与F5的区别 - **操作层面不同**:F5设备工作在网络模型的传输层(第4层),而Nginx和Apache等软件则工作在网络模型...
Apache的负载均衡策略是分布式系统中的关键组成部分,用于在多台服务器之间分散网络流量,确保高可用性和性能。Apache HTTP Server 提供了 mod_proxy_balancer 模块来实现这一功能。以下将详细介绍如何配置Apache以...
Apache+Tomcat+JK 实现集群负载均衡是一种常见的Web服务器和应用服务器的部署方式,它能够提高系统的可用性和响应速度,实现服务的高并发处理。本文将详细介绍如何配置这一环境。 首先,我们需要准备以下软件: 1. ...
Apache和Tomcat的组合经常被用来搭建这样的架构,特别是在实现负载均衡和集群时。在这个场景中,session同步是一个核心问题,因为用户session数据的正确管理和共享是保持应用程序一致性和用户体验的关键。本文将深入...
本文将详细介绍如何使用Apache和Tomcat搭建一个简单的负载均衡集群。 #### 二、集群与负载均衡基础知识 **集群(Cluster)** 是指一组协同工作的计算机节点,它们共同提供一个统一的服务,以提高系统的可用性、性能...
完成配置后,可通过构建简单的测试页面来验证负载均衡的效果。将相同的测试jsp文件放置于各Tomcat实例的webapps目录下,通过访问该jsp文件,观察日志,确认请求是否被均匀分配至各个Tomcat实例,达到负载均衡的目的...
- 创建一个简单的Web应用(如lbtest)放在每个Tomcat服务器的webapps目录下,通过访问应用来验证负载均衡是否正常工作。 这种配置完成后,Apache将根据预设的负载均衡策略,将用户请求智能地分发到不同的Tomcat...
知识点:Apache、Tomcat集群与负载均衡实现 一、环境准备与软件下载 要实现Apache与Tomcat集群的负载均衡,首先需要准备相应的环境并下载必要的软件。根据文档中的环境说明,所需软件包括Apache 2.0.55、Tomcat ...
### Apache Tomcat 负载均衡配置详解 #### 一、环境搭建与配置说明 根据提供的文件信息,本文档将详细介绍如何实现Apache与Tomcat集群的负载均衡,并提供具体的操作步骤和技术要点。以下是对该环境的基本说明: -...
### Apache Tomcat 集群与负载均衡 #### 1. 集群相关简介 ##### 1.1 集群 集群是一组通过高速网络互相连接的计算机,它们作为一个整体协同工作,对外呈现出单一系统的特性。客户端与集群交互时,会感觉像在与一个...