squid服务的正向代理和集群

squid 服务的正向代理

1)标准的代理缓冲服务器

  一个标准的代理缓冲服务被用于缓存静态的网页(例如:html文件和图片文件等)到本地网络上的一台主机上(即代理服务器)。当被缓存的页面被第二次访问的时候,浏览器将直接从本地代理服务器那里获取请求数据而不再向原web站点请求数据。这样就节省了宝贵的网络带宽,而且提高了访问速度。但是,要想实现这种方式,必须在每一个内部主机的浏览器上明确指明代理服务器的IP地址和端口号。客户端上网时,每次都把请求送给代理服务器处理,代理服务器根据请求确定是否连接到远程web服务器获取数据。如果在本地缓冲区有目标文件,则直接将文件传给用户即可。如果没有的话则先取回文件,先在本地保存一份缓冲,然后将文件发给客户端浏览器。

2)透明代理缓冲服务器

  透明代理缓冲服务和标准代理服务器的功能完全相同。但是,代理操作对客户端的浏览器是透明的(即不需指明代理服务器的IP和端口)。透明代理服务器阻断网络通信,并且过滤出访问外部的HTTP(80端口)流量。如果客户端的请求在本地有缓冲则将缓冲的数据直接发给用户,如果在本地没有缓冲则向远程web服务器发出请求,其余操作和标准的代理服务器完全相同。对于Linux操作系统来说,透明代理使用Iptables或者Ipchains实现。因为不需要对浏览器作任何设置,所以,透明代理对于ISP(Internet服务器提供商)特别有用。

squid的主要配置

   服务名:squid

   主程序:/usr/sbin/squid

   配置目录:/etc/squid

   主配文件:/etc/squid/squid.conf

   监听tcp端口号:3128

默认访问日志文件:/var/log/squid/access.log

正向代理服务器的搭建实验     代理服务器ip 172.25.254.173  客户端 ip172.25.254.93

1)为了避免防火墙和selinux安全上下文的影响,关闭这些服务。

systemctl stop firewalld

systemctl disable firewalld

setenforce 0

2)安装软件

yum install  squid -y

systemctl start squid

netstat  -antlpe | grep squid  查看3128端口是否打开

3 )修改主配置文件

vim /etc/squid/squid.conf

http_port 3128

http_access allow all   允许所有人访问

cache_dir ufs /var/spool/squid 100 16 256

  usf:缓存数据的存储格式

                /var/spool/squid 缓存目录

                100 : 缓存目录占磁盘空间大小(M)

                16 :缓存空间一级子目录个数

                256 :缓存空间二级子目录个数

4) 重启服务在客户端浏览器进行测试

systemctl restart squid

然后在客户端输入http://172.25.254.173 就可以看到服务器中的内容了

squid服务集群

                                                                                   172.25.254.X(client)

                                                                                       www.abc.com

                                                                             dns轮询技术或者负载均衡软件ngix

             172.25.254.93(squid1)(正向代理)                                                            172.25.254.94(squid2)(正向代理)

172.25.254.173                     172.25.254.103                                 172.25.254.173                                      172.25.254.103

web1                                          web2                                                       web1                                                        web2

1)两个主机ip 172.25.254.173 web1和ip 172.25.254.102 web2上安装httpd 注意所有的时间一定要同步,特别web1和web2。如果web1和web2时间太久的话,可能会造成客户端访问时不先访问缓存而是先去访问后台web,也就是缓存失效了。

  分别在/var/www/html默认发布目录下   (搭建环境时关闭火墙和selinux为disable避免麻烦)

vim index.html   #ip为173的主机

 <h1>test1</h1>

systemctl restart httpd

vim index.html  #ip为102的主机

<h1>test2</h1>

systemctl restart httpd

2)在ip为172.25.254.93上安装squid,修改主配置文件

yum install squid -y

systemctl start squid

vim /etc/squid/squid.conf

http_access allow all  

http_port 80 vhost vport

80  因为外网用户只能通过访问你的80端口

vhost 支持域名和主机名来代理节点

vport 支持ip和端口来代理节点

cache_dir ufs /var/spool/squid 100 16 256

cache_peer 172.25.254.173 parent 80 0 proxy-only round-robin originserver name=web1   weight=3

--172.25.254.173 web服务器的ip

--parent 上下级关系,非平级关系

--80 代理web服务器的80端口

--0 没有使用lcp,表示就一台squid服务器

--proxy-only  向parent proxy要数据不会存储到本地proxy服务器,降低主机负担

--round-robin 轮询调度

--originserver  表示源实际服务器

--name=web1  定义一个名字让后面的参数使用

weight=n 权重 可以指定多个上册proxy服务器,所以可以指定哪个比较重要 n越大说明这步proxy服务器越重要

cache_peer 172.25.254.102 parent 80 0 proxy-only round-robin originserver name=web2

cache_peer_domain web1 web2 www.adc.com

对www.abc.com的请求会给这台web服务器,如果有多台web服务器可以绑定到同一个域名上实现RR轮询调度

3)也可以增加多台squid服务器来做2配置

4)在客户端ip为172.25.254.73的主机做手动解析

vim  /etc/hosts

172.25.254.93  www.adc.com

浏览器来测试 www.abc.com  会发现web1和web2内容轮询的方式出现(测试的时候没有加权重!)

猜你喜欢

转载自blog.csdn.net/yangkaiorange/article/details/81703213