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常用文件管理命令

    常用文件管理命令 cat cat命令连接文件并打印到标准输出设备上,cat经常用来显示文件的内容 语法 cat(选项)(参数) 选项 -n或-number:有1开始对所有输出的行数编号; -b或–number-nonblank:和-n相似,只不过对于空白行不编号; -s或–squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行; …

    2018-03-11
  • shell脚本进阶

    一、流程控制 过程式编程语言:顺序执行、选择执行、循环执行 1.1 条件语句 1.1.1 if条件选择语句  选择执行: (注意: if 语句可嵌套) v  单分支:if  判断条件;then           条件为真的分支代…

    Linux干货 2016-11-27
  • linux用户和用户组

    一、用户和组 1、用户账号类型 在Linux系统中,根据系统管理的需要将用户账号分为不同的类型,其拥有的权限、担任的角色也各不相同。主要包括超级用户、普通用户和程序用户。 【超级用户】:root用户是Linux系统中默认的超级用户账号,对本主机拥有最高的权限,类似于Windows系统中的Administrator用户。只有当进行系统管理、维护任务时,才建议使…

    Linux干货 2017-07-22
  • MHA+keepalived 高可用MYSQL集群

    一、MHA简介 二、试验环境及要求 三、部署MHA 四、测试MHA集群功能 一、MHA简介     MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案。在MySQL故障切换过程中,MHA能做到在0~30秒之内手动或自动(结合脚本)完成数据库的故障切换操作,并且在…

    2017-02-25
  • shell脚本编程__bash的配置

    shell脚本编程__bash的配置   一、bash的配置文件:   按生效范围划分,存在两类:     全局配置: /etc/profile /etc/profile.d/*.sh /etc/bashrc    个人配置: ~/.bash_profile ~/.bashrc 二、she…

    Linux干货 2016-08-26
  • 马哥教育网络班21期-第四周课程练习

    Do one thing at a time,and do well. 小僧近期忙的去尿尿的时间都要挤出来…..! 无人能理解 zZzz 复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 编辑/etc/group文件,添加组hadoop。 手动编辑/etc/pass…

    Linux干货 2016-07-29