Varnish是一款高性能、开源的反向代理服务器和缓存服务器。Varnish使用内存缓存文件来减少响应时间和网络带宽消耗。这个项目是由挪威的一家报纸Verdens Gang的网络分支起始的,其架构设计和开发总监Poul-Henning Kamp是FreeBSD核心的开发人员之一,最初项目的管理与基础设施及额外开发由挪威一家Linux咨询公司Linpro提供。
说到varnish,squid就不得不提及。squid算得上是古老的缓存服务器。由于varnish先进的设计理念,性能要比squid高上多,varnish还可以通过端口进行管理,使用正则语句做到清除指定缓存的功能,这些 squid都做不到。但是varnish在高并发的情况下,资源消耗较高,而且varnish服务进程一旦崩溃,重启,内存中的缓存数据将全部丢失。
配置实验环境
在子镜像vm1中安装varnish软件,并在/etc/sysconfig/varnish中修改端口为80,如图
然后修改其主配置文件/etc/varnish如图(子镜像vm2的ip为172.25.254.2)
启动varnish
然后在子镜像vm2中,安装httpd软件,并在默认发布目录下编辑发布文件index,html,并启动httpd服务
然后我们在网页上搜172.25.254.1,varnish会帮我们去172.25.254.2上找
测试缓存命中
然后我们再修改主配置文件(如果varnish有缓存,则会直接访问缓存,显示“HIT from westos cache”,如果没有缓存,则会去访问172.25.254.2,显示“MISS from westos cache”)
然后会看到,第一次访问,由于没有缓存,显示MISS from westos cache (未命中缓存),且Age为0 第二次访问,直接访问缓存,显示HIT from westos cache(命中缓存), Age为3,如果一直访问,就会一直访问缓存,直到120秒(Age为120)之后又重新访问172.25.254.2,并且重新建立缓存。
内核 >操作系统 >软件
修改限制文件,保证流量过大时,服务器正常运作
我们在子镜像vm3上安装httpd软件,并编辑默认发布目录下的发布文件,如图
定义varnish负载均衡
编辑server1上的varnish的配置文件(定义多个不同域名站点的后端服务器)如图
并在我们的真实主机上编辑解析文件/etc/hosts
此时我们在客户端搜索不同的域名,varnish会根据配置文件中的路径去访问相应的后端服务器,并缓存,减少后端服务器的压力
我们编辑server3的httpd的主配置文件
我们分别编辑/www/index.html文件和/var/www/html/index.html,并编辑解析文件如下图
在物理机中进行测试
然后我们可以看到轮询访问server2和server3
varnish cdn推送平台
在做这个实验之前,我们需要删除varnish主配置文件中的return (pass)再编辑,在server2上安装httpd,php,编辑config.php文件如图
我们还需要修改httpd的端口为8080,防止与varnish的端口冲突
然后在172.25.254.1:8080端口推送缓存,我们可以发现推送一次,缓存更新一次(有轮询)