`

Apache负载均衡简单测试

阅读更多
最近粗略地看了一下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
分享到:
评论

相关推荐

    apache2.2.4 负载均衡.txt

    此次就是对负载均衡 的一个简单测试。 先介绍一下apache mod_proxy_balancer的几个配置规则(从网上找的): LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp...

    简单测试Apache是如何完成负载均衡策略配置

    公司的系统在最初设计的时候就已经考虑到了负载均衡的规划,此次 就是对负载均衡的一个简单测试

    Nginx+Tomcat负载均衡

    最近学习Nginx+tomcat实现 负载均衡。 首先大家注意: 本文章中没有session共享,关于session共享我会在下一篇中讲解,先实现Nginx+tomcat负载均衡再实现session共享。 从网上查了好多资料,多走了很多弯路,现在把...

    nginx负载均衡 nginx+tomcat tomcat实现负责均衡

    Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru ... Nginx 支持简单的负载均衡和容错; 支持作为基本 HTTP 服务器的功能,例如日志、压缩、Byte ranges、Chunked responses、SSL、虚拟主机等等,应有尽有

    APACHE 2.2.9+TOMCAT6.0.18配置负载均衡

    APACHE 2.2.9+TOMCAT6.0.18配置负载均衡 目标: 使用 apache 和 tomcat 配置一个可以应用的 web 网站,要达到以下要求: 1、 Apache 做为 HttpServer ,后面连接多个 tomcat 应用实例,并进行负载均衡。 2、 为系统...

    CentOS基于nginx反向代理实现负载均衡的方法

    本文实例讲述了CentOS基于nginx反向代理实现负载均衡的方法。分享给大家供大家参考,具体如下: nginx做负载均衡的优点: 1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构,它的...

    aurproxy:负载均衡管理器,了解Apache Aurora的服务发现机制并与Aurora的任务生命周期集成

    发生Aurora服务发现事件时,aurproxy会检测到它们,重写负载均衡器的配置文件,然后触发负载均衡器的正常重启。 使用aurproxy将动态Aurora服务端点公开给不了解Aurora服务发现机制的服务和应用程序。 特征 在...

    ansible_lab:一个简单的实验,演示在AWS中部署和配置负载均衡器和两个Web服务器

    在两个Apache Web主机上创建和部署一个Apache LB 使用Terraform部署三个...要测试负载均衡器,请在IP地址的末尾添加/info.pho,然后刷新以查看负载均衡的实际作用……退出!!! http:///info.php 一些特定的命令:

    最全面的门户网站架构设计方案.doc

    3) 通过web服务器的配置来实现负载均衡 即通过apache或是Nginx 将客户请求均衡的分给tomcat1,tomcat2....去处理。 2.1.2 WEB应用开发架构思路 1) 应用开发实现MVC架构三层架构进行web应用开发 2) 页面尽可能静态化...

    Docker&amp;amp;K8S架构介绍PPT

    Kubernetes具有完备的集群管理能力,包括多层次的安全防护和准入机制/多租户应用支撑能力、透明的服务注册和服务发现机制、内建智能负载均衡器、强大的故障发现和自我修复功能、服务滚动升级和在线扩容能力、可扩展...

    集群好书《高性能Linux服务器构建实战》 试读章节下载

    11.6 测试高可用LVS负载均衡集群系统 11.6.1 高可用性功能测试 11.6.2 负载均衡测试 11.6.3 故障切换测试 11.7 本章小结 第12章 RHCS集群 12.1 RHCS集群概述 12.2 RHCS集群的组成与结构 12.2.1 ...

    LNMP 一键安装包.zip

    作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。 作为邮件代理...

    flume-databaseSink:快速连接到数据库作为接收器

    flume-databaseSink quick to connect to a database as sink 本开源项目想干什么? flune官方的sink组件并没有mysql或者其他数据库的sink组件,只有流向kafka,hadoop等地方的sink。...支持负载均衡 write by mym!

    php网络开发完全手册

    1.4.5 Apache的配置文件httpd.conf与 1.4.5 .htaccess的简介 13 1.4.6 PHP的配置文件php.ini的简介 13 1.4.7 PHP常用参数的配置 14 1.5 几种综合网络服务器系统的安装 14 1.5.1 XAMPP 14 1.5.2 WAMP 16 1.5.3 ...

    IIS服务器SSI(rewrite重写)插件的帮助资料

    为群集式服务器架构模拟负载均衡。 定价资料 ? 45天的试用期 ? 单机版99美元 ? ISAPI_Rewrite精简版是免费的。在这里可以看到受限的细节说明。 ? 大宗采购可议折扣。 2.1系统要求 ISAPI_Rewrite可以被安装在下列...

    TCP/IP教程TCP/IP基础

    12.4.5 缺乏负载均衡 128 12.5 小结 129 第13章 开放式最短路径优先 130 13.1 OSPF起源 130 13.2 理解RFC 2328 OSPF,版本2 130 13.2.1 OSPF区 131 13.2.2 路由更新 134 13.3 研究OSPF数据结构 136 13.3.1 HELLO报文...

    TCP/IP技术大全

    12.4.5 缺乏负载均衡 128 12.5 小结 129 第13章 开放式最短路径优先 130 13.1 OSPF起源 130 13.2 理解RFC 2328 OSPF,版本2 130 13.2.1 OSPF区 131 13.2.2 路由更新 134 13.3 研究OSPF数据结构 136 13.3.1 HELLO报文...

    TCP/IP详解

    12.4.5 缺乏负载均衡 128 12.5 小结 129 第13章 开放式最短路径优先 130 13.1 OSPF起源 130 13.2 理解RFC 2328 OSPF,版本2 130 13.2.1 OSPF区 131 13.2.2 路由更新 134 13.3 研究OSPF数据结构 136 13.3.1 HELLO报文...

Global site tag (gtag.js) - Google Analytics