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
下一篇 2016-11-13

相关推荐

  • 细述LVM

     前言:     LVM(Logical Volume Manager)是基于内核的一种逻辑卷管理器,LVM适合于管理大存储设备,并允许用户动态调整文件系统大小。此外,LVM的快照功能可以帮助我们快速备份数据。LVM为我们提供了逻辑概念上的磁盘,使得文件系统不再关心底层物理磁盘的概念。 看图识LVM &nbs…

    Linux干货 2015-06-15
  • 高可用集群部署文档

    同学们都很活跃,自己好久没写了,也动动笔,下面文章写着玩的,如有错误请联系(NET7-粤-义薄云天) 高可用集群部署文档   目录: 目录: 1 项目需求: 2 实现方式: 2 拓扑图: 3 系统及软件版本: 3 安装步骤: 4 IP分配: 4 LVS和keepalived的安装和配置: 4 LVS主配置: 4 LVS2备 配置: 7 w…

    Linux干货 2015-08-11
  • 推荐-btrfs文件系统介绍及操作

    btrfs文件系统支持写时复制功能,对备份很有帮助。在单个硬盘时,btrfs是没有意义的。     核心特性:         多物理卷支持:btrfs可由多个底层物理卷组成;支持RAID,以联机“添加”、“移除”,“修改”;       …

    Linux干货 2016-06-01
  • Nginx介绍及使用

       Nginx(engine x)是一个高性能的HTTP和反向代理服务器, 也是一个IMAP/POP3/SMTP服务器. Nginx是由IgorSysoev为俄罗斯访问量第二的Rambler.ru站点开发的, 第一个公开版本在2004年发布. 因为它的稳定性, 丰富的功能集, 示例配置文件和低系统资源的消耗而闻名. Nginx是一款轻量…

    Linux干货 2016-11-11
  • 浅谈Linux终端类型

    Linux终端类型 作者:任飞鹏            日期:2016-10-13 终端是什么: 终端(Terminal)也称终端设备,是计算机网络中处于网络最外围的设备,主要用于用户信息的输入以及处理结果的输出等。 早期计算机系统中,由于计算机主机…

    Linux干货 2016-10-19
  • Linux哲学思想和常用命令的用法

    Linux哲学思想:    (1)、一切皆文件:               不仅普通的文件,目录、字符设备、块设备、套接字等在Unix、Linux中都是以文件被对待;它们虽然类型不同,但是对其提供的却是同一套…

    2017-07-02