2012年12月28日星期五

负载均衡翻墙详细篇

本文承接前篇文章《翻墙需求分析与工具组合》,将会教你如何使用多个翻墙软件来翻墙,并自动选择一个最快的软件来翻。先上架构图。



矩形左下角的数字是该软件用的端口号。可以看到,通过HAProxy和Privoxy,火狐可以使用goagent、自由门、ssh、tor来翻墙,并且会自动选择最快的一个来翻。

注意,这并不同于单纯使用autoproxy,添加多个代理服务器。autoproxy可以让你设置规则,对符合某一规则模式的网址使用一个代理服务器。而我的负载均衡方案可以对符合某一规则模式的网址使用一组代理服务器中最快的一个

当然了,本方案还是要使用autoproxy或同类软件,设置规则让需要翻墙的网址使用127.0.0.1:1111(http),之后选择哪一个翻墙代理的事情,HAProxy会帮我完成。

由于基本socks5的SSH被Privoxy转为HTTP,速度损失了,具体有多少我还不清楚,所以goagent的速度竟然是ssh的一倍多不到两倍,我的ssh还是付费服务呢,真是有点震惊。


HAProxy配置文件:haproxy.cfg

本配置文件是基于HAProxy 1.4.24版,需要其较新的配置选项,所以老版本的HAProxy可能无法运行。1.4.24 Windows版可以从《在Windows里安装运行HAProxy【cygwin法】》的文末获得。


global
log 127.0.0.1 local0
#log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn 1500
chroot B:\haproxy #!!!需要修改为您自己的路径!!!
uid haproxy
gid haproxy

daemon
#nbproc 2
pidfile B:\haproxy\haproxy.pid #!!!需要修改为您自己的路径!!!
#debug
#quiet

defaults
#mode http
#option dontlognull
#option forwardfor
option redispatch
retries 2
balance static-rr
stats enable
stats uri /ha?stats #haproxy运行状态查看 自定义uri
timeout connect 3000
timeout client 50000
timeout server 50000

listen ha-tcp 127.0.0.1:9999
mode tcp #浏览器设置为socks5,ssh也是socks
#balance static-rr
option tcplog
server ssh 127.0.0.1:7070 weight 3 check inter 30000
#server tor 127.0.0.1:9050 weight 3 #check inter 10000
#server privxy-tor 127.0.0.1:10000 weight 3 #check inter 10000

listen ha-http 127.0.0.1:11111 #127.0.0.1:11111
mode http #浏览器设置为socks5,ssh也是socks
option httplog
#balance static-rr
server freegate 127.0.0.1:8580 weight 2 check inter 30000
server goagdent 127.0.0.1:8087 weight 3 check inter 30000
server privoxy-ha-tcp 127.0.0.1:8090 weight 3 #check inter 60000
#server wujie 127.0.0.1:9666 weight 2 check inter 30000


listen admin_stat
# 监听端口
bind *:8011
# http的7层模式
mode http
#log global
# 统计页面自动刷新时间
stats refresh 30s
# 统计页面URL
stats uri /admin?stats
# 统计页面密码框上提示文本
stats realm Haproxy\ Statistics
# 统计页面用户名和密码设置
stats auth admin:admin
# 隐藏统计页面上HAProxy的版本信息
#stats hide-version


Privoxy配置文件: Privoxy-ha.txt


user-manual ./doc/user-manual/
confdir .
logdir .
actionsfile match-all.action # Actions that are applied to all sites and maybe overruled later on.
actionsfile default.action # Main actions file
actionsfile user.action # User customizations
filterfile default.filter
filterfile user.filter # User customizations
logfile privoxy.log
listen-address 127.0.0.1:8090 #这句是重点
toggle 1
enable-remote-toggle 0
enable-remote-http-toggle 0
enable-edit-actions 0
enforce-blocks 0
buffer-limit 4096
forward-socks5 / 127.0.0.1:9999 . #这句是重点
forwarded-connect-retries 0
accept-intercepted-requests 0
allow-cgi-request-crunching 0
split-large-forms 0
keep-alive-timeout 5
socket-timeout 300

没有评论: