使用haproxy+squid构建正向代理服务

两盒软妹~` 提交于 2019-12-06 21:15:39

##使用haproxy+squid构建正向代理服务


#####正向代理的业务场景

  • 假设在局域网内存在6台主机,其中只有一台主机可以上外网,那么其余5台主机就需要通过那一台可以上外网的主机上网,即所谓代理(正向代理)。代理服务器启动后,不能上网的主机只需在IE中配置代理服务器即可。IE中的代理服务器设置为 “Internet选项->连接->局域网设置->代理服务器” 中设置代理服务器的IP和代理服务器的端口。

#####问题来了,如何构建一个代理服务呢?

  • 如上述假设,在那一台可以出外网的主机上安装代理软件squid,并进行适当配置即可。应该说明的是,代理软件很多,如果那一台能出外网的主机是Windows系统的话,可以选择ccproxy。这里主要是指在Linux环境下的代理,其他代理软件还有nginx,不过貌似大家都用它做反向代理,做正向代理这里还是用squid吧。

#####squid的安装,配置,运行

  • 安装
sudo apt-get install squid
  • 配置, 打开/etc/squid3/squid.conf文件,注意修改如下的配置项
http_port 3128                 #代理服务器的端口
##http_access deny !Safe_ports #注释掉此项
##http_access deny manager     #注释掉此项
##http_access deny to_localhost#注释掉此项
##http_access deny all         #注释掉此项

#添加下面两项,设置哪些网段可以访问本代理服务器
acl our_networks src 192.168.29.0/24 192.168.17.0/24
http_access allow our_networks

  • 重启服务,使代理服务生效
sudo service squid3 restart

#####用haproxy的目的

  • haproxy是负载均衡器,它可以将网络请求按一定算法均匀分布到各个代理服务器(这里指正向代理)上,防止压力都集中在某一个节点上,提高整体的服务的负载能力。

#####此处使用haproxy的场景

  • 假设有103台主机需要出外网,其中只有2台能直接访问外网,那么我们接着假设这两台主机的IP分别是192.168.29.210, 192.168.29.211,且已经在上面安装好squid代理服务。 还有一台主机我们将其选做负载均衡所在的机器,假设其IP为192.168.29.212。

  • 按上述做法,在其余100台主机上可以设置代理(IE “Internet选项->连接->局域网设置->代理服务器” )为192.168.29.212,haproxy负载均衡器会将网络请求按一定算法均匀打到192.168.29.210, 192.168.29.211两台代理服务器上。

#####haproxy的安装,配置,运行

  • 安装
sudo apt-get install haproxy
  • 配置,配置文件位于/etc/haproxy/haproxy.cfg
global
	daemon
	maxconn 1024

defaults
	mode	http
	timeout connect 5000ms
	timeout client 50000ms
	timeout server 50000ms

frontend secure
	bind *:8888
	stats enable
	stats uri /admin?admin
	stats auth admin:admin
	stats admin if TRUE
	stats refresh 10s

frontend httpproxy
	bind 0.0.0.0:4567
	default_backend servers

backend servers
	balance leastconn
	server squid1 192.168.29.210:3128 maxconn 512 weight 1
	server squid2 192.168.29.211:3128 maxconn 512 weight 1
  • 配置解释

    • 内部的“frontend secure”区块表示的是haproxy的web控制台,可以使用http://192.168.29.212/admin?admin来访问,用户名密码这里设置的都是admin,并设置10秒刷新一次。
    • 内部的“frontend httpproxy”区块绑定了4567端口,那么那些(100台主机)就可以在IE中设置代理服务器为192.168.29.212,端口4567。
    • 内部的“backend servers”区块使用了“leastconn”算法,指的是最少连接者优先(哪一台代理服务器上请求最少,就把请求往这一台代理服务器上打)。“server squid1 192.168.29.210:3128 maxconn 512 weight 1”和“server squid2 192.168.29.211:3128 maxconn 512 weight 1”指的是两台squid的代理服务器。
  • 运行

sudo haproxy -f /etc/haproxy/haproxy.cfg 
  • 停止运行
sudo killall -9 haproxy
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!