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的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | c9d7ab1e6c1513995f33b12c5efa74b608025525a5d6dcfaaa8e6d0a35638122 |
|
MD5 | dc1e60fad0e094ba7fa424c5369ef148 |
|
BLAKE2b-256 | 2003e51de40611999232c13be7131635edfdf3a664cd4a9bf8556ceedc583ec9 |
txLoadBalancer-1.1.0-py2.5.egg的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 4fb16e713bbe572d90271e71cea28420bde5c8b58bdca1328cd7ba9d8f8511ae |
|
MD5 | 8d5da7389a69e5f2e15cb3eaaeee7e18 |
|
BLAKE2b-256 | 79b5b1b193200088e36079ca811a1aa9d5ba5992c8aa55c2805b35ef9585b619 |