1、vainish的作用和特点
1)作用
对访问用户进行缓存
支持反向代理
配置针对web服务器的负载均衡
2)特点
占用内存空间小
比squid处理速度快
稳定性强
如图所示:
[root@vatnish ~]# sysctl -p
net.ipv4.ip_forward = 1
2、安装varnish
1)安装依赖程序
[root@varnish ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@varnish /]# yum -y install libtool ncurses-devel pcre-devel libxslt groff pkgconfig libedit libedit-devel python-imaging python-docutils
2)初始化varnish并安装
[root@varnish varnish-4.0.1]# ./autogen.sh
[root@varnish varnish-4.0.1]# ./configure --prefix=/usr/local/varnish --enable-developer-warnings --enable-debugging-symbols
[root@varnish varnish-4.0.1]# make && make install
3)优化命令并生成配置文件
[root@vatnish /]# ln -s /usr/local/varnish/bin/* /usr/local/bin/
[root@vatnish /]# ln -s /usr/local/varnish/sbin/* /usr/local/sbin/
[root@vatnish /]# cp /usr/local/varnish/share/doc/varnish/example.vcl /usr/local/varnish/default.vcl
3、配置varnish实现负载均衡和缓存
1)修改主配置文件
[root@vatnish /]# vim /usr/local/varnish/default.vcl
13 vcl 4.0;
14 import directors;
17 backend web01 { #web服务器的名字
18 .host = "192.168.200.10"; #web服务器的IP地址
19 .port = "80"; #web服务器的端口号
20 }
21 backend web02 {
22 .host = "192.168.200.20";
23 .port = "80";
24 }
25 sub vcl_init {
26 new bar = directors.round_robin(); #采用轮询算法
27 bar.add_backend(web01);
28 bar.add_backend(web02);
29 }
30 sub vcl_recv {
31 set req.backend_hint = bar.backend();
32 }
2)启动服务,监听的端口为out_ip:192.168.10.30的80端口
[root@vatnish /]# varnishd -f /usr/local/varnish/default.vcl -a 192.168.10.30:80
3)查看日志(可以看到以下类似的日志信息则配置完成)
[root@vatnish ~]# varnishlog
* << Request >> 5
- Begin req 4 rxreq
- Timestamp Start: 1586251416.323273 0.000000 0.000000
- Timestamp Req: 1586251416.323273 0.000000 0.000000
- ReqStart 192.168.10.22 49195
- ReqMethod GET
- ReqURL /
- ReqProtocol HTTP/1.1
- ReqHeader Accept: */*
- ReqHeader Accept-Language: zh-CN
- ReqHeader User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)
- ReqHeader Accept-Encoding: gzip, deflate
- ReqHeader If-Modified-Since: Mon, 06 Apr 2020 16:22:32 GMT
- ReqHeader If-None-Match: "10-5a2a1ac900e33"