##varnish服务##

####varnish####
三台虚拟机:iptables,selinux关闭

#1.varnish配置

##server1上:
1.安装varnish
yum install -y varnish-3.0.5-1.el6.x86_64.rpm varnish-libs-3.0.5-1.el6.x86_64.rpm

2.配置文件
rpm -qc varnish-3.0.5-1.el6.x86_64
/etc/logrotate.d/varnish
/etc/sysconfig/varnish
/etc/varnish/default.vcl
1) vim /etc/sysconfig/varnish
NFILES=131072 ##最大打开文件个数,sysctl -a | grep file ,看到最大文件数没达到131072,所以内存增加到2048,或者这个值改为65535(file-max是设置 系统所有进程一共可以打开的文件数量)

MEMLOCK=82000 ##内存锁定(就是运行varnish需要82M内存空间,但是系统只允许64M,所以也要修改)

NPROCS=“unlimited” ##进程数,varnish要求不限制,所以要修改系统的限制

VARNISH_LISTEN_PORT=80 ##让varnish的默认端口为80,在http请求时进行缓存或调度

2)vim /etc/security/limits.conf #修改系统参数

varnish         -       nofile          131072
varnish         -       memlock         82000
varnish         -       nproc           unlimited

在这里插入图片描述

##配置一个后端服务器
3) vim /etc/varnish/default.vcl

backend default {
  .host = "172.25.0.2";	##配置后端realserver
  .port = "80";
}

在这里插入图片描述

#在server2上:
yum install -y httpd
vim /var/www/html/index.html
server3
在这里插入图片描述
/etc/init.d/httpd start

测试:
在物理机上 测试:
在物理机上 curl 172.25.1.2 , 看到访问的是server3

在这里插入图片描述

####查看缓存命中情况####
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

VARNISH_THREAD_TIMEOUT=120	        ##120s刷新

测试:
再次 curl 172.25.0.1 , 第一次未命中缓存,后面都会命中

#手动清除缓存
varnishadm ban.url .*$ ##清除所有
varnishadm ban.url /index.html ##清除index.html页面缓存

####定义不同域名站点的后端服务器####
再启一台虚拟机,安装httpd , 写index.html --> bbs.westos.org
在物理机上写好本地解析

vim /etc/varnish/default.vcl

backend web1 {
  .host = "172.25.0.2";
  .port = "80";
}

backend web2 {
  .host = "172.25.0.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

测试:
在这里插入图片描述

再访问时,不同域名对应不同主机

####定义负载均衡####

在web2中定义虚拟主机

mkdir /www
cd /www
vim index.html
mkdir /bbs
cd /bbs
vim index.html

vim /etc/http/conf/httpd.conf

NameVirtualHost *:80

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

<VirtualHost *:80>
    DocumentRoot /bbs
    Servername bbs.westos.org
</VirtualHost>

在这里插入图片描述

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;			##当访问www.westos.org时,请求转到lb
        #return (pass);					##测试时可打开此选项,不进行缓存
    } elsif (req.http.host ~ "^bbs.westos.org") {
        set req.backend = web2;
    } else {
        error 404 "westos cache";
    }
}

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

测试(手动清缓存,或者加上不缓存的配置):

在这里插入图片描述

###排错思想###

如果所有操作都做完了但仍然没有出现正确的现象该怎么办?

此时需要检查:

火墙是否关闭 /etc/init.d/iptables stop

apache是否打开 /etc/init.d/httpd restart

varnish服务是否重启 /etc/init.d/varnish restart

varnish的重新加载 /etc/init.d/varnish reload

配置文件是否编写正确
每提交一次就会更改一次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值