缓存(反向代理)服务器-varnish

  • varnish简介:

    • varnish是一款高性能且开源的反向代理服务器和HTTP加速器,(其实就是带缓存的反向代理服务器)它可以把整个HTTP响应内容缓存到内存或文件中,从而提高web服务器器的响应速度。
    • 与传统的squid相比,varnis具有性能更高、速度更快管理更方便等诸多优点,很多大型的网站都开始尝试使用varnish来替换squid。
  • varnish特点:

    • 1.是基于内存缓存,重启后数据消失。
    • 2.利用虚拟内存方式,id性能好。
    • 3.支持设置0~60秒内的精确缓存时间。
    • 4.VCL配置管理比较灵活
    • 5.32位机器上缓存文件大小为最大2G
    • 6.具有强大的管理功能,列如top,stat,admin,list等
    • 7.状态机设计巧妙,结构清晰。
    • 8.利用二叉堆管理缓存文件,达到积极删除目的
  • varnish与squid相比:

    • 两者都可以做反向代理服务器
    • 都是开源软件
  • varnish的优点:

    • 稳定性高,两者在完成相同负荷的工作时,squid服务器发生故障的几率要大,因为squid经常要重启
    • varnish访问速度快,所有数据都是从内存中读取,而squid是从硬盘读取,因而varnish在访问速度方面更快
    • varnish可以支持更多的并发连接,因为varnish的TCP连接释放要比squid快。
    • varnish可以通过管理端口,使用正则表达式批量的清除部分缓存
  • 与squid相比,varnish的缺点:

    • varnish在高并发状态下CPU、IO、内存等资源开销都高于squid。
    • varnish进程一旦Hang(无响应)、Crash(崩溃)或重启,缓存数据都会从内存中完全释放,此时所有请求都会发送到后端服务器,在高并发的情况下,会给后端服务器造成很大压力。
  • 配置varnish反向代理缓存:

    • 实验主机:

      • varnish:192.168.8.5
      • Nginx:192.168.8.6
    • varnish配置:

      • 安装varnish:yum -y install varnish 、
      • 修改配置文件,修改端口为80,默认端口为6081

        • 定位14行,修改:
        • VARNISH_LISTEN_PORT=80
        • 保存退出
      • 添加配置文件,指定后端的web服务器:
        • vim /etc/varnish/default.vcl

          • 定位19行,修改:
          • backend default {
          • .host = "192.168.8.6";
          • .port = "80";
          • }
          • 保存退出
      • 启动服务:systemctl start varnish
    • 配置NGINX服务器:

      • yum -y install nginx
      • 修改网页内容
        • echo "web1" > /usr/share/nginx/html/index.html
      • 启动服务:systemctl start nginx
    • 查看nginx访问日志:

      • 是由代理服务器发来的请求
      • 将日志内容删除,再次访问测试varnish是否将网页缓存到了自己的内存中

        • > /var/log/nginx/access.log
        • 如果清除了一次还有日志,就多刷新访问一次,是因为varnish还没有将网页内容完全缓存到自己主机上
  • varnish基本命令:

    • varnishadm
    • ban req.url == /index.html #清除指定缓存
    • ban req.url ~ .* #清除所有缓存
    • param.show default_ttl #查看TTL值
    • param.set default_ttl 43200 #设置TTl值
    • vcl.show boot #查看当前配置文件
相关推荐
sinat_384241093 小时前
使用 npm 安装 Electron 作为开发依赖
服务器
朝九晚五ฺ3 小时前
【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
linux·运维·学习
Oak Zhang4 小时前
sharding-jdbc自定义分片算法,表对应关系存储在mysql中,缓存到redis或者本地
redis·mysql·缓存
Kkooe5 小时前
GitLab|数据迁移
运维·服务器·git
门牙咬脆骨5 小时前
【Redis】redis缓存击穿,缓存雪崩,缓存穿透
数据库·redis·缓存
门牙咬脆骨5 小时前
【Redis】GEO数据结构
数据库·redis·缓存
久醉不在酒5 小时前
MySQL数据库运维及集群搭建
运维·数据库·mysql
虚拟网络工程师6 小时前
【网络系统管理】Centos7——配置主从mariadb服务器案例(下半部分)
运维·服务器·网络·数据库·mariadb
BLEACH-heiqiyihu6 小时前
RedHat7—Linux中kickstart自动安装脚本制作
linux·运维·服务器
勤奋的小王同学~7 小时前
项目虚拟机配置测试环境
服务器