在开发语言中,我们也可以使用Python来实现负载均衡的设置,现在我们就来介绍一下这个尝试。首先我们考虑负载均衡,常用的就是反向代理的均衡设置,那么对于Python的语言实现,又有什么特别的要求呢?让我们一起来看看文章的内容吧。
最近测试一个Python项目,在性能优化过程中,决定使用Tornado作Web服务器。但Tornado是单进程线程的实现,虽然一个进程可以很好的处理并发,但毕竟还是个单线程,无法有效的使用多核CPU。
对外的端口只有一个,于是考虑使用负载均衡。首先Nginx,但发现在使用Nginx转发过程中产生大量的Time_wait。据说Nginx转发时会使用Http1.0,不确定是否由此导致。但至少使用Apache作负载均衡的时候没有这个问题。关于Time_wait,不是此文章欲述的,以下贴出 Nginx和Apache作负载均衡的配置:
- Nginx.conf:
- http {
- upstream frontends {
- server 127.0.0.1:9080;
- server 127.0.0.1:9081;
- server 127.0.0.1:9082;
- server 127.0.0.1:9083;
- }
Apache:
编译:
./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --with-mpm=prefork --enable-proxy
配置httpd.conf:
- ProxyRequests Off
- <Proxy balancer://higkoo>
- BalancerMember http://127.0.0.1:9080
- BalancerMember http://127.0.0.1:9081
- BalancerMember http://127.0.0.1:9082
- BalancerMember http://127.0.0.1:9083
- </Proxy>
- ProxyPass / balancer://higkoo/
当然,本文是由于在测试一Python应用时留下的。负载均衡本身并不局限与语言和应用。只要是标准的HTTP请求均可。