9、varnish实现动静分离、负载均衡、后端服务器健康状态检测

varnish 4.0 版本

varnish实现动静分离
  1. # vim /etc/varnish/varnish.params 
  2. VARNISH_LISTEN_PORT=80 --> 修改为80端口
  1. # vim /etc/varnish/default.vcl 
  2. backend html {
  3.     .host = "10.1.249.125";
  4.     .port = "80";
  5. }
  6. backend app {
  7.     .host = "10.1.252.53";
  8.     .port = "80";
  9. }
  10. sub vcl_recv {
  11.     if (req.url ~ "(?i)\.php$") { --> (?i) 不区分字符大小写
  12.         set req.backend_hint = app;
  13.     } else {
  14.         set req.backend_hint = html;
  15.         }
  16. }
  1. # varnish_reload_vcl default.vcl --> 修改了vcl文件,需要重新编译
测试访问
9、varnish实现动静分离、负载均衡、后端服务器健康状态检测

 
9、varnish实现动静分离、负载均衡、后端服务器健康状态检测

 

此时可以看到,已经成功实现动静分离
但是我们也发现了存在一些问题:原来php Logo 的图标不见了
出现的问题的原因
查看网页源代码
9、varnish实现动静分离、负载均衡、后端服务器健康状态检测

 

修改vcl文件,使其网页内容能够完整显示
  1. sub vcl_recv {
  2.     if (req.url ~ "(?i)\.php") {       --> 将原来.php$ 的 $ 去掉即可
  3.         set req.backend_hint = app;
  4.     } else {
  5.         set req.backend_hint = html;
  6.         }
  7. }
重新编译vcl文件
  1. # varnish_reload_vcl default.vcl
此处重启只是为了试验效果,在实际应用中,varnish一旦重启,缓存将会全部失效
  1. # systemctl restart varnish
9、varnish实现动静分离、负载均衡、后端服务器健康状态检测

 




varnish实现负载均衡
vcl文件的修改
  1. import directors; --> 放在vcl 4.0; 后面
  2. backend default {
  3.     .host = "10.1.249.125";
  4.     .port = "80";
  5. }
  6. backend server2 {
  7.     .host = "10.1.252.53";
  8.     .port = "80";
  9. }
  10. sub vcl_init {
  11.     new webapp = directors.round_robin();
  12.     webapp.add_backend(default);
  13.     webapp.add_backend(server2);
  14. }
  15. sub vcl_recv {
  16.     
  17.    set req.backend_hint = webapp.backend();   //顺序很重要,顺序很重要,顺序很重要,放在if 语句的前面
  18.     if (req.url ~ "^/test") {  -->定义在该路径下的内容不缓存,否则无法看出负载均衡的效果
  19.         return(pass);          -->第一次选中某台服务器后,后续可能会重缓存中直接返回结果
  20.     }
  21. }
//需要重新编译vcl文件,此处不再演示
9、varnish实现动静分离、负载均衡、后端服务器健康状态检测

 
9、varnish实现动静分离、负载均衡、后端服务器健康状态检测

 



后端服务器健康状态监测
  1. probe check {       --> 需要写在两个后端服务器之前,顺序很重要,顺序很重要,顺序很重要
  2.     .url = "/test/index.html";
  3.     .window = 5;
  4.     .threshold = 4;
  5.     .interval = 2s;
  6.     .timeout = 1s;
  7. }
  8. backend default {
  9.     .host = "10.1.249.125";
  10.     .port = "80";
  11.     .probe = check;
  12. }
  13. backend server2 {
  14.     .host = "10.1.252.53";
  15.     .port = "80";
  16.     .probe = check;
  17. }
//后面和负载均衡调用方式一样
//注意 probe check 要写在两个后端服务器之前
//顺序很重要
1、当后端两个服务器均正常时,可以正常进行调度
9、varnish实现动静分离、负载均衡、后端服务器健康状态检测

 
2、我们此时停掉server2的 http服务器,可以看到此时检测到server2 转态为sick
9、varnish实现动静分离、负载均衡、后端服务器健康状态检测

3、测试访问 
9、varnish实现动静分离、负载均衡、后端服务器健康状态检测

 
无论如何刷新,此时varnish不会再调度到server2上 

原创文章,作者:sixijie,如若转载,请注明出处:http://www.178linux.com/59043

赞 (0)
sixijiesixijie
上一篇 2016-11-12 20:39
下一篇 2016-11-13 13:33

相关推荐

  • 计算机基础与Linux初识

    一、 计算机的组成及其功能。      计算机五大组成部件:运算器、控制器、存储器、输入设备、输出设备。其中CPU主要由运算器及控制器组成。      1、运算器:进行算数运算、逻辑运算,对数据进行加工处理。      2、控制器…

    2017-07-02
  • 文本查看、处理工具的应用及组、用户的相关操作

            一、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可      查看已经登录的用户用“who”命令,为了试验我用root多登录了几次。    &nb…

    2017-07-16
  • mysql进阶至mysql备份基础及备份工具

    一、mysql备份、恢复基础 备份:存储的数据副本 还原:把副本应用到线上系统,仅能恢复至备份操作时刻的数据状态。 硬件上的冗余并不能有效恢复逻辑操作上的错误。 备份:数据备份、服务配置文件备份、系统环境备份。程序的运行依赖于一定的系统环境,仅提供数据本身并不能确保恢复数据之后系统可用,数据备份的目的在于确保系统出现不可预料的灾难事故之后能够快速恢复运行,降…

    2016-11-18
  • 磁盘管理、文件管理、系统管理

    分区管理工具:fdisk,parted,sfdisk fdisk:MBR模式,对于一块硬盘来说,最多只能管理15个分区; # fdisk -l [-u] [device…]:查看 # fdisk device 子命令:管理功能 p:显示已有分区 n:新建分区 d:删除 w:写入磁盘并退出 q:放弃更改并退出 m:获取帮助 l:列出分区id t:调…

    Linux干货 2017-12-15
  • DNS介绍及资源记录

    DNS查询 第一段:主机到运营商的DNS服务器(递归) 第二段:运营商的DNS再去解析(根域名服务器/),在一层一层的查找(迭代) DNS名称解析方式:名称–>IP,IP–>名称 注意:二者的名称空间非同一个空间,即不是一个数据库; 域: www.magedu.com. ftp.magedu.com. bbs.magedu…

    Linux干货 2017-02-12
  • 排错

    把/etc/inittab  模式改为6模式 怎么修复 1 先把 vim /etc/inittab 打开 2 把/etc/inittab 模式改为6 3 reboot 4 在倒计时完之前按任意键 5按A进入 6 在quiet  命令后面写入 3  模式 重启 7把 vim /etc/inittab 打开 8 把/etc…

    Linux干货 2017-05-15