linux的varnish部署

varnish

varnish是一款高性能的开源http加速器,varnish与squid服务类似,都用来做缓存

配置varnish服务器

server1 :
安装varnish软件包(需自行下载)

yum install varnish-3.0.5-1.el6.x86_64.rpm varnish-libs-3.0.5-1.el6.x86_64.rpm -y
在这里插入图片描述
vim /etc/sysconfig/varnish
在这里插入图片描述
vim /etc/varnish/default.vcl ## 配置服务
#配置一个后端服务器
backend default {
.host = “172.25.254.2”;
.port = “80”;
}
在这里插入图片描述
查看varnish服务最多打开文件数
需使kernel限制 > system限制 > app限制
在这里插入图片描述
sysctl -a | grep file 查看内核最多打开文件数
在这里插入图片描述
由于varnish服务最多打开文件数大于内核限制,所以需要修改varnish最多打开文件数

ulimit -n  ## 最多打开文件数
ulimit -l  ## 最大锁定内存

在这里插入图片描述
编辑文件 /etc/security/limits.conf
在这里插入图片描述
重新加载服务配置及开启服务
/etc/init.d/varnish reload
/etc/init.d/varnish start
在这里插入图片描述

server2:
安装httpd服务,并在默认发布页面写入内容

yum install httpd -y
vim /var/www/html/index.html
	<h1>www.westos.org-server2</h1>
/etc/init.d/httpd start

在这里插入图片描述

真机测试:
打开浏览器访问 varnish服务器ip
在这里插入图片描述

查看缓存命中情况

vim /etc/varnish/default.vcl
添加

sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT from westos cache";
}
else {
set resp.http.X-Cache = "MISS from westos cache";
}
return (deliver);
}

在这里插入图片描述

/etc/init.d/varnish reload      #加载策略
/etc/init.d/varnish start       #开启服务

物理机测试:
curl -I 172.25.24.1
在这里插入图片描述

varnishadm ban.url /index.html        ## 清除index.html页面缓存
varnishadm ban.url .*$                ## 清除所有缓存,慎用
配置多个后端服务器

server1:
vim /etc/varnish/default.vcl
添加

backend web1 {
  .host = "172.25.24.2";
  .port = "80";
}
backend web2 {
  .host = "172.25.24.3";
  .port = "80";
}

sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = web1;
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
} else {error 404 "westos cache";
}
}

在这里插入图片描述

/etc/init.d/varnish reload        # 加载策略

server2 与 server3 配置httpd
在这里插入图片描述
真机测试:
添加本地域名解析
在这里插入图片描述
curl -I 域名
在这里插入图片描述

定义负载均衡

server1:
vim /etc/varnish/default.vcl
添加

director lb round-robin {
#把多个后端聚合为一个组,并检测后端健康状况
        { .backend = web1; }
        { .backend = web2; }
}
sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = lb;
return(pass);
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
} else
{error 404 "westos cache";
}
}

在这里插入图片描述

/etc/init.d/varnish reload

server3 配置一个apache虚拟主机

mkdir /www
vim /www/index.html
<h1>server3</h1>

在这里插入图片描述
vim /etc/httpd/conf/httpd.conf

NameVirtualHost *:80     ##990行取消注释

<VirtualHost *:80>
    DocumentRoot /var/www/html
    ServerName bbs.westos.org
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /www
    ServerName www.westos.org
</VirtualHost>

在这里插入图片描述
在这里插入图片描述

/etc/init.d/httpd restart

真机测试:
curl www.westos.org
实现web1与web2轮询
在这里插入图片描述

varnish cdn 推送平台

server1:
#需要安装 php 及 httpd 支持
在这里插入图片描述
unzip bansys.zip
cd bansys
mv * /var/www/html
在这里插入图片描述
vim /etc/httpd/conf/httpd.conf
Listen 8080 # 因为varnish端口为80为了避免冲突修改apache端口为8080
在这里插入图片描述
vim /var/www/html/config.php
#修改为以下内容

<?php
 $var_group1 = array(
                        'host' => array('172.25.254.1'),
                                                'port' => '80',                         
                    );
 //varnish群组定义
 //对主机列表进行绑定
 $VAR_CLUSTER = array(
                         'www.westos.org' => $var_group1,
                     );
 //varnish版本
 //2.x和3.x推送命令不一样
 $VAR_VERSION = "3";
?>

在这里插入图片描述
vim /etc/varnish/default.vcl
#添加以下语句

#设置访问控制
acl westos {
"127.0.0.1";
"172.25.254.0"/24;
}

#修改sub vcl_recv
sub vcl_recv {
    if (req.request == "BAN") {
    if (!client.ip ~ westos) {
    error 405 "Not allowed.";
    }
    ban("req.url ~ " + req.url);
    error 200 "ban added";
    }

    if (req.http.host ~ "^(www.)?westos.org") {
    set req.http.host = "www.westos.org";
    set req.backend = lb;
    } elsif (req.http.host ~ "^bbs.westos.org") {
    set req.backend = web2;
    } else {error 404 "westos cache";
    }
}

在这里插入图片描述
在这里插入图片描述

/etc/init.d/varnish reload
/etc/init.d/httpd start
在这里插入图片描述

真机测试:
访问 server1 ip:8080 发送推送
推送模式:HTTP
CDN群组:www.westos.org
推送内容:/index.html #页面
在这里插入图片描述
访问www.westos.org /index.html ,然后推送一次/index.html页面,再去访问www.westos.org /index.html,再此推送/index.html页面,再去访问www.westos.org /index.html,会发现实现页面访问轮询
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq657886445/article/details/82819533