Setp0 要实现什么
架设一台master
代理主机,由这台机器统筹管理多台子代理机器,这样客户端只需要统一维护一个master
机器即可。
Step1 Squid的基本安装和配置
Squid是一款出色的缓存代理服务器,也用作正向和反向代理,同时支持横向分布式扩展,所以在这里选择squid作为master搭建代理集群
Squid is a caching proxy for the Web supporting HTTP, HTTPS, FTP, and more. It reduces bandwidth and improves response times by caching and reusing frequently-requested web pages. Squid has extensive access controls and makes a great server accelerator. It runs on most available operating systems, including Windows and is licensed under the GNU GPL.
在ubuntu下,squid的安装十分简单,只需要执行下面这个命令即可:
sudo apt-get install squid3
Squid的配置在/etc/squid/squid.conf
下面,只需要改变下面几个配置即可。
#允许的客户端ip
acl allcomputers src 0.0.0.0/0.0.0.0
#将http_access deny all注释或者删除
#http_access deny all
http_port 12345
如果要为你的代理服务器设置访问权限(用户名和密码验证),那么添加以下配置:
#配置用户名密码,后面会生成passwords文件
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
http_access allow authenticated allcomputers
生成密钥文件:
sudo apt-get install apache2-utils
sudo htpasswd -c -d /etc/squid/passwords your_user_name
sudo chmod o+r /etc/squid3/passwords
启动服务:
service squid start
Step3 配置集群机器代理
到此为止,master
机器已经配置好了,接下来在所有的从属机器执行下面命令:
sudo apt-get update
sudo apt-get install tinyproxy
sed -i "s/Port 8888/Port 30303/g" /etc/tinyproxy.conf
sed -i "s/Allow 127.0.0.1/Allow ${your_master_ip}/g" /etc/tinyproxy.conf
service tinyproxy start
Step4 将子代理加入master
最后,在master
机器配置集群,在squid
的配置文件中添加以下配置,注意name
不能重复:
cache_peer ${your_cluster_ip} parent 30303 0 no-query weighted-round-robin weight=2 connect-fail-limit=2 allow-miss max-conn=5 name=${your_name}
重启squid服务:
service squid restart
使用
我们统一使用唯一的IP作为代理即可,比如:
curl -X http://username:password@your_master_ip:port GET targetUrl
总结
通过结合squid和tinyproxy,轻松的搭建一个代理池集群服务,客户端只需要维护一个master地址即可,而不必每次都获取一套新的代理地址。