**Varnish
一、概念整理
1、反向HTTP代理:有时成为http/web加速器。(cache 拿到存储方便下次在用)
2、超时机制:一个超时就是客户端等待请求消息的返回信息的最长时间
3、无状态协议:每一次请求和响应都是相对独立的,web服务器不能记住同样的请求,所以可能会进行重复的操作
因为http无状态协议,提出catch
4、基于HTTP协议的C(客户)/S(服务)请求响应机制的信息交换过程:
(1)、建立连接:CS建立TCP连接
(2)、发送请求:打开一个连接后,客户端把请求消息送到服务器的响应端口上,完成请求动作提交。
(3)、发送响应:服务器在处理完客户端请求后,要向客户端发送响应消息。
(4)、关闭连接:CS双方都可以通过关闭套接字来结束TCP/IP对话。
二、反向代理ip
1、设置三个虚拟机快照,并配好基础配置
2、官方网站下载Varnish
[root@foundation1 mnt]# ls
jemalloc-3.6.0-1.el7.x86_64.rpm varnish-6.3.2-1.el7.x86_64.rpm
3、安装
yum install jemalloc-3.6.0-1.el7.x86_64.rpm varnish-6.3.2-1.el7.x86_64.rpm -y
4、调整参数
vim /usr/lib/systemd/system/varnish.service #查看参数
sysctl -a |grep file #调整查看文件大小(所有)
vim /etc/security/limits.conf #修改系统参数(让Varnish不影响别人的前提下自己扩大)
5、1是2的代理
服务器1:
vim /etc/varnish/default.vcl #配置文件
backend default {
.host = "172.25.1.3"; #做后端的ip
.port = "80";
}
vim /usr/lib/systemd/system/varnish.service #更改端口为80(http)
systemctl start varnish
服务器2:
cd /var/www/html
vim index.html--server2
三、Varnish进程的工作模式
1、第二个varnish的副进程为第一个varnish
varnish会产成两个进程,一个管理(读入更新进程,vcl文件编译),一个worker子进程。
vcl_deliver:在缓存数据发送客户端时调用
2、测试缓存
vim /etc/varnish/default.vcl
systemctl restart varnish
varnishadm ban req.url "~" / #命令清除记录
varnishadm ban req.url "~" /index.html #清除页面缓存用curl -I 172.25.1.2/index.html查看,并没有清除所有
curl -I 172.25.1.2 #查看是否命中
四、增加多个后端服务器
设置后端
vim /var/www/html/index.htmml
vim /etc/httpd/conf.d/vhost.conf
mkdir /www
mkdir /bbs
vim /var/www/html/www/index.html
vim /var/www/html/bbs/index.html
vcl_recv :是http请求到达后的第一个状态,在这个状态中可以对请求进行以下处理:
1、修改客户端请求,以减少缓存决策时的差异
2、根据客户端请求,决定缓存策略
3、重定向请求
4、处理请求的后端
在缓存数据要发送到客户端时调用
代理端:
vim /etc/varnish/default.vcl
systemctl restart varnish
要求:
westos.org/www.westos.org–server2/3 一个ip对应两个域名,配aphche虚拟主机
bbs.westos.org-server3
五、varnish推送平台
.* 清除所有
. 更新
/index.html 清除页面