nginx的geo模块可以做全局负载均衡,可以要根据客户端ip访问到不同的server。比如,可以将电信的用户访问定向到电信服务器,网通的用户重定向到网通服务器。
我这里实现只有移动手机用户才能访问服务器。首先要收集全移动网关ip.
配置如下:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
geo $cmccip {
default 1; # 未定义ip的值为1
include cmcc.conf; 加载geo.conf文件,这个文件定义移动网关ip
}
server {
listen 801;
server_name XXXXX;
location / {
if ($cmccip) {
rewrite ^ http://tx.com.cn; 未定义ip即非移动ip重定向到tx.com.cn;
}
root /data/www;
index index.wml index.html;
}
}
}
cmcc.conf文件内容如下:
211.136.222.90/32 0;



测试环境:
CPU:Xeon2.8G X2
RAM:4G
OS:RedHat As5.3 X64
工具:apache ab
参数:ab -i -c 500 -n 100000
最终服务端:2个squid 需实现均衡负载
成绩如下:
####### Nginx + haproxy : (由Nginx通过反向代理发送请求至haproxy, 并由其进行均衡负载)
Concurrency Level: 500
Time taken for tests: 53.758 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Total transferred: 38600386 bytes
HTML transferred: 0 bytes
Requests per second: 1860.19 [#/sec] (mean)
Time per request: 268.790 [ms] (mean)
Time per request: 0.538 [ms] (mean, across all concurrent requests)
Transfer rate: 701.21 [Kbytes/sec] received
####### haproxy : (单独由haproxy进行均衡负载)
Concurrency Level: 500
Time taken for tests: 32.562 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Total transferred: 36606588 bytes
HTML transferred: 0 bytes
Requests per second: 3071.02 [#/sec] (mean)
Time per request: 162.812 [ms] (mean)
Time per request: 0.326 [ms] (mean, across all concurrent requests)
Transfer rate: 1097.85 [Kbytes/sec] received
####### nginx : (单独由nginx进行均衡负载)
Concurrency Level: 500
Time taken for tests: 36.539 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Total transferred: 38600000 bytes
HTML transferred: 0 bytes
Requests per second: 2736.82 [#/sec] (mean)
Time per request: 182.694 [ms] (mean)
Time per request: 0.365 [ms] (mean, across all concurrent requests)
Transfer rate: 1031.65 [Kbytes/sec] received
反复测试,得出其结果:
Haproxy 单独进行均衡负载的性能最强,超过了Nginx。
然而 Nginx + Haproxy 的搭配性能最弱,应该是跟通过了2层反向代理有关。
所以想用 Haproxy 替代 Nginx 所自带的均衡负载功能将会令性能打折。
但 Nginx 的配置法则确远比 Haproxy 灵活。
还是视乎用途而决定吧。
