代理软件Squid与varnish

环境准备:

代理软件:nginx

安装软件【依赖】【版本冲突】【测试】

修改配置文件[优化]

启动服务

运行3-5年,错误【排错】【日志】【计算机英语】

运维  一门脚本语言[shell,python,perl之一]

运维,即运行&维护(Operation&Maintance)

IT运维、业务运维、日常管理运维:采用相关的方法、手段、技术、制度、流程和文档等,

                          对IT运行环境、IT业务系统和IT运维人员进行的综合管理。

IT运维技术

传统运维技术特点:单一化:业务及服务比较单一

  简单化:部署的服务与架构相对简单

  被动管理:出现问题后,救火式的管理

Linux运维最佳实践:集中化;自动化;标准化;虚拟化;分布式...

代理软件基本概念

Proxy,代理人、经纪人、中介

代替用户处理事务:能提供正常情况下不便或无法访问的资源

应用场景:Web访问加速(反向代理);IP伪装、“翻墙”(正向代理)

代理服务器工作机制:cache池的利用;线路转移

Sqiud服务端

软件包:squid

系统服务:squid

主程序:/usr/sbin/squid

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

默认监听端口:TCP 3128

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

配置文件解析

visible_hostname  名字(随意) //设置主机名

http_port  80 vhost //设置反向代理

cache_peer   主服务器地址  parent  80  0  originserver //定义后端真实服32务器信息

cache_mem  128 MB //内存缓存 //硬盘缓存↓

cache_dir  ufs(存储格式)   /var/spool/squid   100(目录空间)     16(一级目录数)   256(二级目录数)

http_access  allow  all   //允许本机所有主机使用代理服务器

access_log /var/log/squid/access.log squid

Squid访问控制

acl   名称     类型      内容

http_access   allow   acl名称

http_access   deny    acl名称

类型:src     源地址dst 目标地址

  port 目标端口dstdomain 目标域

      time 访问时间maxconn 最大并发连接

      url_regex 目标URL地址

  urlpath_regex 整个目标URL路径

#vim /etc/squid/squid.conf

acl  mytime   time  MTWHF  09:00-18:00

http_access   deny    mytime

用户www.sina.com--->DNS[判断你是哪里的用户]

u1 DNS[服务器]分离解析

u2 www.sina.com

u3 match-client

zone "sina.com" {

type master;

file "sina.zone";

}

squid(反向代理,正向,透明代理)

[代理软件,历史悠久,资料,排错容易,功能多,性能差]

查看日志:

代理日志:/var/log/squid/access.log

HTTP日志:/var/log/httpd/access_log

使用硬盘作缓存/var/spool/squid

查看缓存:ls /var/spool/squid/  ---->  ls /var/spool/squid/00/00

Squid反向代理

反向代理工作机制

与传统代理的方向相反:代替公网用户访问组织内部的Web服务器;

                      部署基于地区的CDN服务器。

反向代理服务器

准备源Web服务器

配置反向代理服务器。关闭自带的httpd服务,避免冲突,将代理监听端口修改为80。

客户端访问测试。通过HTTP访问代理服务器的80端口,如elink --dump http://....

示例:配置代理服务器,实现以下目标:

代理服务器可以将远程的Web服务器页面缓存在本地;代理服务器端口设置为80端口

用户通过访问代理服务器即可获得远程Web服务器上的页面内容

远程Web服务器对客户端用户是透明的;利用缓存机制提高网站的响应速度

步骤一:构建web服务器

1)使用yum安装web软件包

[root@web ~]# yum  -y  install  httpd

[root@web ~]# rpm  -q  httpd         ##确认安装成功

2)启用httpd服务,并设为开机自动运行

[root@web ~]# systemctl start httpd  &&  systemctl enable httpd

[root@web ~]# firewall-cmd --set-default-zone=trusted  

httpd服务默认通过TCP 80端口监听客户端请求:# netstat  -anptu |grep httpd

3)为Web访问建立测试文件

在网站根目录/var/www/html下创建一个名为index.html的首页文件:

[root@web ~]# vim /var/www/html/index.html 

<html><title>Welcome</title>

<body><h1>192.168.2.100</h1>

</body></html>

        或echo "192.168.2.100" > /var/www/html/index.html

步骤二:部署Squid代理服务器

1)使用yum安装squid软件包:

[root@Proxy ~]# yum  -y  install  squid

2)修改/etc/squid/squid.conf配置文件:

[root@Proxy ~]# vim /etc/squid/squid.conf

.. ..

http_port 80 vhost                            //设置反向代理【修改】

visible_hostname Proxy.tarena.com           //设置主机名,默认没有该语句【新增】

cache_peer 192.168.2.100 parent 80 0 originserver //定义后端真实服务器信息【新增】

cache_dir ufs /var/spool/squid 200 16 256         //硬盘缓存,缓存容量为200M,自动创建16个一级子目录和256个二级子目录【将注释行打开】

http_access allow all              //允许本机所有主机使用代理服务器【修改】

或# sed -i '/http_port/c http_port 80 vhost' /etc/squid/squid.conf ……

3)启动squid服务,并设置为开机启动:

[root@Proxy ~]# firewall-cmd --set-default-zone=trusted   关闭防火墙

[root@Proxy ~]# systemctl start squid; systemctl enable squid

4)squid服务通过TCP 80端口监听客户端请求:

[root@Proxy ~]# netstat  -anptu  |  grep 80

步骤三:客户端测试:开启浏览器访问

[root@client ~]# curl  http://192.168.4.5            //返回的是2.100服务的页面

curl -I  http://192.168.4.5/    可以查看头部文件

Server: Apache/2.4.6 (Red Hat Enterprise Linux)

X-Cache: HIT from svr5.tarena.com

第一次访问是MiSS状态【从缓存中没有找到了需要的页面】

第2次访问是HIT状态【从缓存中找到了需要的页面】

手动设置代理:

Client设置:#firefox (编辑--首选项--高级--网络--设置)

http代理:192.168.4.5,端口:80

地址栏输入服务器的IP:192.168.2.100

++++++++++++++++++++++++++++

Varnish服务器

Varnish是一款高性能且开源的反向代理服务器http加速器。可使用硬盘或内存作缓存

与传统的squid相比,varnish具有性能更高、速度更快、管理更方便等诸多优点。

扬威最大的在线报纸Verdens Gang使用3台varnish代替了原来的12台squid,性能愕然比以前更好。

环境准备:将varnish软件拷贝到测试环境中

# scp lnmp_soft-2017-03-28.tar.gz  [email protected]:/root

# tar -xzf lnmp_soft-2017-03-28.tar.gz              ##源码包解压

# cd lnmp_soft/

# ./install_lnmp.sh             ##选7,此处为脚本处理

Varnish服务器

/etc/varnish                  #配置文件目录

/etc/init.d/varnish            #varnish的启动程序

/etc/sysconfig/varnish         #配置文件,varnish定义自身属性

/etc/varnish/default.vcl       #默认配置文件,定义后端节点的

/usr/bin/varnishadm            #客户端程序

/usr/bin/varnishstat           #状态监控

加速服务器

配置文件解析

# vim /etc/sysconfig/varnish     ##定义前端配置文件「端口,缓存(硬盘,内存),用户」,未指明父                 

VARNISH_VCL_CONF=/ETC/varnish/default.vcl            #vcl文件路径

VARNISH_LISTEN_PORT=80                               #默认端口

VARNISH_SECRET_FILE=/etc/varnish/secret              #密钥文件

VARNISH_STORAGE_SIZE=64M                             #缓存大小

VARNISH_STORAGE=”malloc,${VARNISH_STORAGE_SIZE}”   #基于内存方式作缓存

快速部署varnish

# mkdir /etc/varnish

# cp /usr/local/varnish/etc/default.vcl /etc/varnish/

# uuidgen > /etc/varnish/secret

# vim /etc/varnish/default.vcl                        ##定义后端配置文件

backend default {

.host=”192.168.2.100”;

.port=”80”;

}

# service varnish start 

缓存管理

清除缓存内容:交互式:varnishadm -T IP:Port -S securefile                 

                       ban.url <regexp>

              非交互式:varnishadm -S /etc/varnish/secret ban.url/  

                                   //密码文件为/etc/varnish/secret

查看缓存清理列表:varnishadm ban.list

 #varnishadm 

 >help     //查看所有命令

Varnish日志:varnishlog [-w file]       //共享内存的日志

 varnishncsa [-w file]      //类Apache日志

Varnish状态:Varnishstat

Client connections accepted:表示客户端成功发送连接总数量

Client requests received:客户端发送HTTP请求的总数

Cache hits:!重要:命中缓存的次数

Cache misses:!重要:缓存非命中的个数

N  struct  objects:表示当前被缓存过的数量

N  expired  objects:表示过期的缓存内容数量

N  LRU  moved  objects:表示被淘汰的缓存内容个数

缓存过期:后台数据已更新,但缓存还是原先的数据,

是否要及时更新:是:

            否:一般都不用,可以用周期性计划进行更新设置

如何更新:实时:varnishadm命令

      延迟

实验:1.在web服务器:# echo “XX” > /var/www/html/nb.html

  2.在客户端:# curl http://192.168.4.5   代理缓存

  3.在web服务器更新页面:# echo “YYY” > /var/www/html/nb.html

  4.在客户端:# curl http://192.168.4.5   缓存过期

  5.代理服务器(清理缓存)

# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082 ban.url nb.html

示例:使用Varnish加速Web,管理缓存页面

通过源码编译安装Varnish缓存服务器;编译安装Varnish软件

复制启动脚本与配置文件;修改配置文件,缓存代理源Web服务器,实现Web加速功能

对于Web服务器的部署,此实验中仅需要安装httpd软件、启动服务,并生成测试首页文件即可,默认httpd网站根路径为/var/www/html,首页文档名称为index.html。

步骤一:构建Web服务器

1)使用yum安装web软件包 [root@web1 ~]# yum  -y  install  httpd

2)启用httpd服务,并设为开机自动运行

[root@web1 ~]# systemctl start httpd  ;  systemctl enable httpd

httpd服务默认通过TCP 80端口监听客户端请求:

[root@pc205 ~]# netstat  -anptu  |  grep httpd

3)为Web访问建立测试文件

在网站根目录/var/www/html下创建一个名为index.html的首页文件:

[root@pc205 ~]# vim /var/www/html/index.html 

<html>

<title>Welcome</title>

<body>

<h1>192.168.2.100</h1>

</body>

</html>

步骤二:部署Varnish缓存服务器

1)编译安装软件

[root@Proxy ~]# yum -y install gcc readline-devel pcre-devel    //安装软件依赖包

[root@Proxy ~]# useradd -s /sbin/nologin varnish                //创建账户

[root@Proxy ~]# tar -xzf varnish-3.0.6.tar.gz

[root@Proxy ~]# cd varnish-3.0.6

[root@Proxy varnish-3.0.6]# ./configure --prefix=/usr/local/varnish

[root@Proxy varnish-3.0.6]# make && make install        ##解决依赖关系

2)复制启动脚本及配置文件

[root@Proxy varnish-3.0.6]# cp redhat/varnish.initrc /etc/init.d/varnish 

 ##提供一个启动服务

[root@Proxy varnish-3.0.6]# cp redhat/varnish.sysconfig /etc/sysconfig/varnish

##配置文件

[root@Proxy varnish-3.0.6]# ln -s /usr/local/varnish/sbin/varnishd /usr/sbin/   ##作软链接或者修改PATH路径

[root@Proxy varnish-3.0.6]# ln -s /usr/local/varnish/bin/* /usr/bin/

3)修改Varnish文件

[root@Proxy ~]# vim /etc/sysconfig/varnish

66行:VARNISH_LISTEN_PORT=80                                #默认端口

89行:VARNISH_STORAGE_SIZE=64M                                #定义缓存大小

92行:VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}"        #基于内存方式缓存

4)修改代理配置文件

[root@Proxy ~]# mkdir /etc/varnish

[root@Proxy ~]# cp /usr/local/varnish/etc/default.vcl /etc/varnish/

[root@Proxy ~]# uuidgen > /etc/varnish/secret

[root@Proxy ~]# vim  /etc/varnish/default.vcl

backend default {

     .host = "192.168.2.100";

     .port = "80";                   //定义,后台服务器是192.168.2.100,端口是80

 }

[root@Proxy ~]# systemctl stop squid

[root@Proxy ~]# service  varnish  start  或者/etc/init.d/varnish start

Starting varnish (via systemctl):   //按Ctrl+c,是脚本的bug,不影响服务的启动

[root@Proxy ~]# netstat -ntulp |grep 80    //确认服务已开启

步骤三:客户端测试,开启浏览器访问  [root@client ~]# curl http://192.168.4.5

步骤四:其他操作

1)查看varnish日志

[root@Proxy ~]# varnishlog           //varnish日志,确认与父还能ping通

[root@Proxy ~]# varnishncsa                    //访问日志

2)更新缓存数据,在后台web服务器更新页面内容后,用户访问代理服务器看到的还是之前的数据,说明缓存中的数据过期了需要更新(默认也会自动更新,但非实时更新)。

[root@Proxy ~]# varnishadm –S /etc/varnish/secret –T 127.0.0.1:6082 ban.url 页面文件名                     //清空缓存数据,支持正则表达式

猜你喜欢

转载自blog.csdn.net/jsut_rick/article/details/78287771