跳转到主要内容

txLoadBalancer - 基于Twisted的TCP负载均衡器。

项目描述

简介

这是一个纯Python TCP负载均衡器。它接受传入的TCP连接并将它们连接到多个后端服务器之一。

txLoadBalancer是Anthony Baxter的PythonDirector的分支。它删除了所有线程和asyncore代码以及基于Twisted的类似功能的管理界面。它还显著重新组织了API并提供了许多新功能(见下文)。

用法

$ twistd -noy ./bin/txlb.tac

这将使用默认的配置文件./etc/config.xml;您可以编辑.tac文件以指向您首选的配置。请确保编辑config.xml文件以正确反映需要负载均衡的服务。

要启用管理界面,您的配置文件必须定义admin部分,并包含所需字段。例如,请务必查看./etc/config.xml。有关更多详细信息,请参阅./doc目录中的配置信息。

如果您正在创建自己的脚本且不想使用txlb.tac,您可以在txlb.application中导入应用程序设置函数。

如果您想在Twisted应用程序中“嵌入”负载均衡器,请参阅示例./bin/txlbWeb.tac。

特性

  • 这是一个纯Twisted TCP负载均衡器。

  • 得益于Twisted,它是基于异步I/O的,所以比基于fork/线程的均衡器开销小得多。

  • 它具有多种调度算法(随机、轮询、最少连接、加权)。如果服务器无法回答,则将其从池中移除 - 连接失败的客户端会透明地切换到新主机。

  • 提供可选的内置Web服务器,用于内置管理UI。

  • 单独的管理定时器服务,执行诸如定期重新添加失败的宿主到轮询、更新运行服务器所做的更改到磁盘配置文件等任务。

  • 内置SSH服务器,用于管理(和修改)运行的负载均衡器实例。

  • Twisted API,可以在不运行单独负载均衡器的情况下将负载均衡服务添加到您的Twisted应用程序中。

  • 应用程序使用基于XML的配置文件。

性能

(本节目前不完整)

Duncan的2008年笔记,在2个CPU的Sun Netra 240上测试过

  • Solaris 10上的单个Apache实例 * 启动线程: * 最大线程

  • Solaris 10上的2个负载均衡的Apache实例

  • Solaris 10上的twisted.web实例(相同的docroot)

  • 2个负载均衡的twisted.web实例

  • PythonDirector 1.0.0代理2个负载均衡的twisted.web实例

Anthony关于性能的原始笔记

  • 在我的笔记本电脑上,在相同的本地以太网(服务静态18K文本文件)上对Apache进行负载均衡,每秒可达到155个连接,吞吐量为2850 kbytes/s(apachebench -n 2000 -c 10)。直接连接到Apache可达到每秒180个连接和3400kbytes/s。所以除非你真的很高,否则不太可能是pythondirector导致你遇到困难。(注意,每秒155个连接是每天1300万次点击…)

  • 仅通过环回接口连接到本地Apache似乎最大为每秒350个连接。

变更

从txLoadBalancer 1.0.1到1.1.0

  • 大量API更改:完全重新组织了代码库。

  • 集成了来自Apple日历服务器项目的补丁。

  • 为Twisted应用程序内创建负载均衡服务提供了新的API(无需运行单独的负载均衡器守护进程)。

  • 添加了通过SSH连接到运行Python解释器(Twisted manhole)与负载均衡器进行实时交互的支持。

  • 可以在不重新启动应用程序的情况下启动监听新端口。

  • 添加了加权负载均衡调度程序。

从txLoadBalancer 0.9.1到1.0.1

  • 100% Twisted:完全移除了所有线程和asyncore代码。

  • 显著的API更改。

  • 删除了Web API。

从PyDirector 1.0.0到1.1.1(又称txLoadBalancer 0.9.1)

  • 添加了对Twisted的支持,提供了一种选择,即所有管理和负载均衡操作都可以利用Twisted反应器,完全跳过线程和asycore。

从PyDirector 0.0.7到1.0.0

  • 很少,主要是为了将项目更新到“稳定”状态。

  • 现在,如果可用,网络代码使用Twisted,并回退到asyncore。

从PyDirector 0.0.6到0.0.7

  • 您可以为调度器和行政界面的监听指令指定主机名为“*”,表示“监听所有接口”。比“0.0.0.0”明显得多。感谢Andrew Sydelko的想法。

  • 新的“leastconnsrr”调度程序 - 这是最少连接,同时也有轮询。以前,leastconns会保持宿主机列表排序,这通常意味着一个系统会受到严重影响。

  • Twisted后端组选择再次工作。

  • 现在将客户端地址传递给调度器的getHost()方法。这允许创建“粘性”调度程序,其中客户端(优先)被发送到同一后端服务器。调度器的工厂函数将更改为允许类似“roundrobin,sticky”的东西。

从PyDirector 0.0.5到0.0.6

  • 修复了在所有后端服务器都不可用的情况下的一个错误(希望很少发生)。

  • 主脚本使用resource.setrlimit()来增加打开文件描述符的数量(solaris默认值很低,很愚蠢)

  • 当所有后端服务器都宕机时,管理线程进入一种更积极的模式重新添加它们。

  • 处理配置文件中的注释

从PyDirector 0.0.4到0.0.5

  • 对日志记录进行了一大批错误修复

  • 使用‘twisted’框架重新实现了网络代码;使用基于asyncore的pydir进行简单的环回测试

    每秒请求数:107.72 传输速率:2462.69 kb/s 收到

    使用基于twisted的pydir进行的相同测试

    每秒请求数:197.90 传输速率:4519.69 kb/s 收到

从PyDirector 0.0.3到0.0.4

  • 现在可以为服务指定多个监听器

  • 配置XML中的‘client’现在为‘host’

  • 修复了leastconns和roundrobin调度程序中所有后端都不可用时的错误。

  • 添加了大量文档。

  • 在Web API中运行显示现在显示总连接数

  • 运行显示现在具有刷新和自动刷新功能

  • compareconf模块 - 接受运行配置和新的配置,并发出使运行配置与新的配置匹配所需的Web API命令

  • 首次尝试为Web界面启用https(需要m2crypto)

从PyDirector 0.0.2到0.0.3

  • 连接delHost

  • 添加了running.xml - 当前配置的XML转储

  • 集中式日志记录 - 需要使写入日志条目的各种事物保持一致,并需要添加大量附加日志。

  • Python2.1兼容性修复:2.1没有socket.gaierror异常

从PyDirector 0.0.1到0.0.2

  • 重构了Web发布(babybobo)

  • 将代码打包并使用distutil进行分发

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

txLoadBalancer-1.1.0.tar.gz (40.2 kB 查看散列)

上传时间

构建分布

txLoadBalancer-1.1.0-py2.5.egg (83.3 kB 查看散列)

上传时间

txLoadBalancer-1.1.0-py2.4.egg (84.5 kB 查看散列)

上传时间

由以下支持