• 高性能缓存服务器Varnish


    一、Varnish概述

      Varnish是一款高性能的、开源的反向代理服务器和缓存服务器,计算机系统的除了有内存外,还有CPU的L1、L2,甚至L3级别的缓存,Varnish的设计架构就是利用操作系统的缓存机制处理访问;VCL,即Varnish Configuration Language,是Varnish的配置语言。在执行VCL时,Varnish把VCL转换成二进制代码执行。

      Varnish与Squid的对比:

      优点:Varnish具有更好的稳定性、更快的访问速度、更多的并发连接支持数,可以通过管理端口管理缓存等优势

      缺点:在高并发状态下,Varnish消耗更多的CPU、I/O和内存资源。Varnish进程一旦挂起、崩溃或者重启,缓存的数据会从内存中释放,此时所有的请求都会转发到后端服务器上,给后端服务器造成很大压力。

    二、Varnish的使用

    (1)需要安装的依赖包有libtool、ncurses-devel、pcre-devel、libxslt、groff、pkgconfig

      libedit-devel-2.11-4.20080712cvs.1.e16.x86_64.rpm

      python-docutils-0.6-1.e16.noarch.rpm

      python-imaging-1.1.6-19.e16.x86_64.rpm

      varnish-4.0.1.tar.gz

    (2)安装过程 

    1 ~]# bash autogen.sh  #解压后的源码包内有一个脚本,我们需要执行以下它
    2 ~]# ./configure --prefix=/usr/local/varnish --enable-debugging-symbols --enable-developer-warnings && make && make install
    3 ~]# ln -s /usr/local/varnish/sbin/varnishd  /usr/lcoal/sbin
    4 ~]# ln -s /usr/local/varnish/bin/*  /usr/local/bin
    5 ~]# cp /usr/local/varnish/share/doc/varnish/example.vcl   /usr/local/varnish/default.vcl    #配置文件模板拷贝出来用

    (3)配置反向代理

    1 ~]# vim default.vcl                     
    2 backend  default {
    3   .host = "192.168.10.52";    #后端web服务器的地址
    4   .port = "80";                    #web服务器端口
    5 }
    6 ~]# varnishd -f /usr/local/varnish/default.vcl -a 0.0.0.0:80   #指定监听的ip和端口
    7 ~]# varnishlog   #查看日志,实时滚动方式
    8 测试方法:访问varnishIP地址可以看到后端web服务器的默认首页,就说明我们配置的反向代理没有问题。

     三、Varnish负载均衡配置

     1 ~]# vim default.vcl 
     2 import   directors   #在vcl 4.0;行下面定义一个负载调度器变量
     3 backend  web1 {                         #把default修改为web1,就是后面的web服务器,有几个web节点就复制几个backend域
     4   .host = "192.168.10.52";       #后端web服务器的地址
     5   .port = "80";                         #web服务器端口
     6 }
     7 然后再添加下列函数
     8 sub  vcl_init {
     9   new  bar = directors.round_robin();   #让新的 bar 等于之前定义的变量directors,后面接轮询(rr)算法
    10   bar.add_backend(web1);       #注意这里有几个backend就添加几个
    11   bar.add_backend(web2);
    12 }
    13 在sub  vcl_recv {}函数中添加下列语句
    14 set req.backend_hint = bar.backend();
    15 ~]# varnishd -C -f /usr/local/varnishd/default.vcl >/root/varnish   #检查语法是否有误
    16 ~]# pkill varnish
    17 ~]# varnishd -f /usr/local/varnish/default.vcl    #加载配置文件并启动varnish
    18 测试方法:由于varnish缓存的原因,当我们访问varnish的时候,并没有像我们预期的那样根据rr算法各自访问后面两台web服务器的不同页面,这时我们让一台web服务器网络中断,这时varnish就会访问到另一台了。

    四、Varnish高可用配置

      我所知道的Varnish高可用就是可以探测后端web节点的健康状况,检测到宕机后做记录,不再传递访问请求了。至于这种方法和负载均衡有什么不同,还需继续研究

    ~]# vim default.vcl 、
    backend  web1 {                         #把default修改为web1,就是后面的web服务器,有几个web节点就复制几个backend域
      .host = "192.168.10.52";       #后端web服务器的地址
      .port = "80";                         #web服务器端口
        .probe = {                           #添加健康检查段,每个backend都要添加
        .url = "/" ;               
        .interval = 5s ;
        .timeout = 1s ;
        .window = 5 ;
        .threshold = 3 ;                  #检测3次
    }
    }
    ~]# varnishd -f /usr/local/varnish/default.vcl    #加载配置文件并启动varnish
  • 相关阅读:
    04.设备
    03.抖音课程大纲2
    02.抖音课程大纲
    01 抖音直播现状
    1.14常见的5种字符编码特征
    1.13BeautifulSoup 剔除 HTML script 脚本;删除指定 class标签
    Ng Alain使用
    MediatR
    RN错误随笔
    1.RN环境搭建,创建项目,使用夜神模拟调试
  • 原文地址:https://www.cnblogs.com/mangood/p/6071341.html
Copyright © 2020-2023  润新知