1.1什么是varnish
Varnish 是一个 web 加速器,被安装在 web 应用程序前面,缓存 web 应用程序,并响应用求,varnish 让您的 web 应用程序运行的更快,并且 varnish 灵活好用。
Varnish是一款高性能的开源HTTP加速器,Varnish的功能与Squid服务器相似,都可以用来做HTTP缓存。 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能优越于Squid
1.2CDN的简介
CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。
二、搭建varnish服务
1.实验环境
三台虚拟机+一台真实主机
主机名称 ip 功能 服务
server1 192.168.1.11 varnish
server2 192.168.1.22 apache
server3 192.168.1.33 apache
主机localhost 192.168.1.55 客户端(client)
2.下载安装varnish软件包
http://varnish-cache.org/releases/
https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/j/jemalloc-3.6.0-1.el7.x86_64.rpm
[root@server1 Desktop]# yum install -y varnish-6.3.2-1.el7.x86_64.rpm jemalloc-3.6.0-1.el7.x86_64.rpm
[root@server1 Desktop]# rpm -qa | grep varnish 查看版本信息
varnish-6.3.2-1.el7.x86_64
[root@server1 Desktop]# rpm -qc varnish-6.3.2-1.el7.x86_64 查看服务的配置文件
/etc/ld.so.conf.d/varnish-x86_64.conf 版本信息
/etc/logrotate.d/varnish 环境变量配置文件
/etc/varnish/default.vcl 主配置语法文件
3.修改配置文件
打开文件的最大数,有如下关系:
内核操作> 操作系统> 软件
修改安全限制文件,保证流量大时,服务正常运行
内核允许的打开文件最大数
[root@server1 Desktop]# vim /usr/lib/systemd/system/varnish.service 服务启动脚本
LimitNOFILE=131072 打开
LimitMEMLOCH=85953232 n内存锁定大小
[root@server1 Desktop]# ulimit -n 查看内存大小
1024
[root@server1 Desktop]# vim /etc/security/limits.conf 系统参数限制文件
[root@server1 Desktop]# systemctl start varnish 启动服务
查看80端口是否开启(varnish)
[root@server1 Desktop]# netstat -tnpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:80 【开启】 0.0.0.0:* LISTEN 114244/varnishd
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 8317/X
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 8334/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7896/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 7890/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 8341/master
tcp 0 0 127.0.0.1:6082 0.0.0.0:* LISTEN 114244/varnishd
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::80 :::* LISTEN 114244/varnishd
tcp6 0 0 :::6000 :::* LISTEN 8317/X
tcp6 0 0 :::22 :::* LISTEN 7896/sshd
tcp6 0 0 ::1:631 :::* LISTEN 7890/cupsd
tcp6 0 0 ::1:25 :::* LISTEN 8341/master
tcp6 0 0 ::1:6082 :::* LISTEN 114244/varnishd
主机测试
在服务端配置数据源
[root@server1 Desktop]# vim /etc/varnish/default.vcl
在server2上配置80端口的服务
[root@server2 ~]# yum install httpd -y
[root@server2 ~]# systemctl restart httpd.service
[root@server2 ~]# netstat -netlupe | grep httpd 端口已经开启
tcp6 0 0 :::80 :::* LISTEN 0 160526 74553/httpd
[root@server2 ~]# echo www.westos.org > /var/www/html/index.html更改默认发布页面的内容
[root@server1 Desktop]# systemctl restart varnish
再次测试
使用命令行管理varnish
三、Varnish缓存功能
首先配置server1主机上的varnish服务的配置文件
[root@server1 ~]# vim /etc/varnish/default.vcl
[root@server1 ~]# systemctl restart varnish.service
测试主机访问server1
3.2实时更新缓存信息
手动清理缓存信息
[root@server1 Desktop]# varnishadm ban req.url "~" / 清除所有缓存
[root@server1 Desktop]# varnishadm ban req.url "~" /index.html 只清除index.html的缓存
四、varnish配置多个后端服务器(不同的域名分配到不同的后端)
[root@server1 ~]# vim /etc/varnish/default.vcl
[root@server1 ~]# systemctl restart varnish
[root@server2 ~]# curl 192.168.1.22
www.westos.org
[root@server3 ~]# curl 192.168.1.33
bbs.westos.org
主机中添加解析地址
五、CDN缓存系统varnish负载均衡
两台服务器轮询接受访问请求
[root@server1 ~]# man vmod_directors
[root@server1 Desktop]# vim /etc/varnish/default.vcl
[root@server1 ~]# varnishadm ban req.url "~" / 手动执行清除缓存信息,每访问一次执行一次
负载均衡出现,
五、CDN缓存系统varnish图形化清理varnish代理服务器的缓存
[root@server1 Desktop]# yum install httpd php -y 安装所需的软件
[root@server1 Desktop]# ls
bansys(2).zip
[root@server1 Desktop]# unzip bansys\(2\).zip -d /var/www/html/ 解压到指定目录(-d)
[root@server1 html]# mv bansys/* . 移出目录中的所有文件到当前
[root@server1 html]# ls
class_socket.php config.php index.php purge_action.php static
群组的目的是同时对多个varnish服务器进行缓存清理
[root@server1 html]# vim config.php
更改Apache服务的端口为8080和上面设置的一致
[root@server1 html]# vim /etc/httpd/conf/httpd.conf
[root@server1 html]# systemctl restart httpd
图形化工具已经设置完成打开效果(选择http方式)
创建访问列表(清除缓存操作只有管理员)
[root@server1 html]# vim /etc/varnish/default.vcl
[root@server1 html]# systemctl restart varnish
主机测试
主机测试