Varnish
server1 cdn varnish 缓冲服务器数据
Server2 httpd发布首页 服务器
Server3 httpd发布首页 服务器
本机 客户端 通过CDN 访问服务器的发布的缓冲
第一阶段 用server1设置server2的缓冲
Server 1 varnish-3.0.5-1.el6.x86_64.rpm
varnish-libs-3.0.5-1.el6.x86_64.rpm -y
[root@server1 ~]# yum install -y *
[root@server1 ~]# vim /etc/sysconfig/varnish
65 # VARNISH_LISTEN_ADDRESS=
66 VARNISH_LISTEN_PORT=80
修改varnish的端口为80
[root@server1 varnish]# vim /etc/security/limits.conf
52 varnish - nofile 131073
53 varnish - memlock 82000
54 varnish - nofile umlimited
[root@server1 ~]# /etc/init.d/varnish start
Starting Varnish Cache: [ OK ]
重新启动配置文件
产看80端口开启
[root@server1 ~]# netstat -antlp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1153/varnishd
Varnish 80端口开启
[root@server1 ~]# cd /etc/security/
[root@server1 security]# cd /etc/varnish/
[root@server1 varnish]# ls
default.vcl secret
[root@server1 varnish]# vim default.vcl
backend default
.host = “172.25.77.2”;
.port = “80”;
}
[root@server1 varnish]# /etc/init.d/varnish reload
Current running config name is boot
Using new config name reload_2018-07-27T14:48:37
VCL compiled.
available 0 boot
active 0 reload_2018-07-27T14:48:37
Done
[root@server2 html]#pwd
/var/www/html
[root@server2 html] yum install httpd -y
[root@server2 html] /etc/init.d/httpd start
[root@server2 html]cat index.html
www.westos.org
[root@server2 html] /etc/init.d/httpd restart
客户端 77号
[root@foundation77 images]# vim /etc/hosts
5 172.25.77.1 www.westos.org bbs.westos.org
[root@foundation77 images]#curl -I www.westos.org
[root@foundation77 images]#curl -I www.westos.org/index.html -I
工作流程
Client > dns > cdn > server >cdn >cache > client
客户端发送请求到nds访问域名 cdn向服务器server取得缓冲cache 取得的缓冲发送到client客户端
Server1 命中缓冲 HIT from westos cache
[root@server1 varnish]# vim /etc/varnish/default.vcl
27 sub vcl_deliver {
28 if (obj.hits > 0) {
29 set resp.http.X-Cache = "HIT from westos cache";
30 }
31 else {
32 set resp.http.X-Cache = "MISS from westos cache";
33 }
34 return (deliver);
35 }
客户端 77号
[root@foundation77 images]#curl -I www.westos.org
X-Cache:HIT from westos cache
第二阶段 设置server3的缓冲 从cdn跳转web1 web2
清空自己的缓冲
Server1
[root@server1 ~]# varnishadm ban.url /index.html
[root@server1 ~]# varnishadm ban.url .*$
客户端
[root@foundation77 ~]#curl -I www.westos.org/index.html -I
Age=0 缓冲过期时间 清空变成0
有缓冲会时间 降低服务器的压力
Server3
[root@server3 ~]#yum install httpd -y
[root@server3 ~]#/etc/init.d/httpd start
[root@server3 ~]#cd /var/www/html
[root@server3 html]#cat index.html
bbs.westos.org
[root@server3 ~]#/etc/init.d/httpd restart
Server1
[root@server1 ~]# cd /etc/varnish/
[root@server1 varnish]# vim /etc/varnish/default.vcl
[root@server1 varnish]# /etc/init.d/varnish restart
7 backend web1 {
8 .host = "172.25.77.2";
9 .port = "80";
10 }
11
12 backend web2 {
13 .host = "172.25.77.3";
14 .port = "80";
15 }
16
17 sub vcl_recv {
18 if (req.http.host ~ "^(www.)?westos.org") {
19 set req.http.host = "www.westos.org";
20 set req.backend = web1;
21 }elsif (req.http.host ~ "^bbs.westos.org") {
22 set req.backend = web2;
23 } else {error 404 "westos cache";
24 }
25 }
26
27 sub vcl_deliver {
28 if (obj.hits > 0) {
29 set resp.http.X-Cache = "HIT from westos cache";
30 }
31 else {
32 set resp.http.X-Cache = "MISS from westos cache";
33 }
34 return (deliver);
35 }
#sub vcl_recv :页面跳转www.westos.org跳转
bbs.westos.org
backend :后端 web1 web2
[root@server1 varnish]# /etc/init.d/varnish reload
Loading vcl from /etc/varnish/default.vcl
Current running config name is reload_2018-07-27T16:05:43
Using new config name reload_2018-07-27T16:07:24
VCL compiled.
available 0 boot
available 0 reload_2018-07-27T14:48:37
available 0 reload_2018-07-27T15:06:55
available 0 reload_2018-07-27T15:59:16
available 0 reload_2018-07-27T16:00:11
available 0 reload_2018-07-27T16:03:46
available 2 reload_2018-07-27T16:05:43
active 0 reload_2018-07-27T16:07:24
Done
客户端
[root@foundation77 ~]#curl -I www.westos.org/index.html
[root@foundation77 ~]#curl -I bbs.westos.org/index.html
故障排查
客户端
[root@foundation77 ~]#curl -I www.westos.org/index.html
X-Cache : MISS from westos cache 没有命中缓冲
重新启动server2
[root@server2 html]cat index.html
www.westos.org
[root@server2 html] /etc/init.d/httpd restart
第三阶段 高可用 server2 server3 发布页面均衡负载
Server3
[root@server3 html]# vim index.html
www.westos.org - server 3
[root@server3 html]# vim /etc/http/conf/httpd.conf
nameVirtualHost *80
在后面
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName www.westos.org
<VirtualHost>
<VirtualHost *:80>
DocumentRoot/www/docs/dummy-host.example.com
ServerName dummy-host.example.com
<VirtualHost>
[root@server3 html]# /etc/init.d/httpd restart
Server1
[root@server1 varnish]# vim default.vcl
17 director westos round-robin {
18 { .backend = web1; }
19 { .backend = web2; }
20 }
23
24 sub vcl_recv {
25 if (req.http.host ~ "^(www.)?westos.org") {
26 set req.http.host = "www.westos.org";
27 set req.backend = westos;
28 return (pass);
29 }elsif (req.http.host ~ "^bbs.westos.org") {
30 set req.backend = web2;
31 } else {error 404 "westos cache";
32 }
33 }
[root@server1 varnish]# /etc/init.d/varnish restart
[root@server1 varnish]# /etc/init.d/varnish reload
Loading vcl from /etc/varnish/default.vcl
Current running config name is reload_2018-07-27T17:03:36
Using new config name reload_2018-07-27T17:08:23
VCL compiled.
available 0 boot
available 0 reload_2018-07-27T14:48:37
available 0 reload_2018-07-27T15:06:55
available 0 reload_2018-07-27T15:59:16
available 0 reload_2018-07-27T16:00:11
available 0 reload_2018-07-27T16:03:46
available 0 reload_2018-07-27T16:05:43
available 0 reload_2018-07-27T16:07:24
available 0 reload_2018-07-27T16:30:35
available 0 reload_2018-07-27T16:30:40
available 0 reload_2018-07-27T17:03:31
available 2 reload_2018-07-27T17:03:36
active 0 reload_2018-07-27T17:08:23
Done
[root@server3 html]# cat index.html
www.westos.org - server3
[root@server3 html]#/etc/init.d/httpd restart
[root@server2 html]# cat index.html
www.westos.org - server2
[root@server3 html]#/etc/init.d/httpd restart
客户端client 负载均衡 www.westos.org
[root@foundation77 images]#curl www.westos.org
www.westos.org - server3
[root@foundation77 images]#curl www.westos.org
www.westos.org - server2
故障排除
[root@foundation77 images]#curl www.westot.org
<h1>Error 503 service Unavaiable</h1>
Server2 httpd 关闭 重新启动服务
[root@server2 html]# cat index.html
www.westos.org - server2
[root@server2 html]#/etc/init.d/httpd restart