author:JevonWei

版权声明:原创作品


配置后端主机的Health Check

环境

Varnish      192.168.198.139
图片服务端 192.168.198.120
程序服务端 192.168.198.128

程序服务器

[root@danran ~]# vim /var/www/html/.healthchk.html
ok

图片服务器

[root@centos6 ~]# vim /data/web/image2/.healthchk.html
oK
[root@centos6 ~]# vim /data/web/images/.healthchk.html
ok

Vernish

[root@danran ~]# vim /etc/varnish/default.vcl
导入directors模块
import directors; 定义健康检查的机制,自定义为healthchk
probe healthchk {
.url = "/.healthchk.html";\\检查的url为.healthchk.html
.timeout = 2s; \\超时时间为2s
.interval = 2s;\\检查间隔时间
.window = 8; \\基于最近8次的检查判断
.threshold = 5; \\检查最近8次若有5次成功即为健康状态
} 定义一个app程序后端服务器
backend appsrv1 {
.host = "192.168.198.128";
.port = "80";
.probe = healthchk; \\调用健康检查的机制
} 定义两个图片服务端
backend imgsrv1 {
.host = "192.168.198.120";
.port = "80";
.probe = healthchk; \\调用健康检查的机制
}
backend imgsrv2 {
.host = "192.168.198.120";
.port = "8080";
.probe = healthchk; \\调用健康检查的机制
} 定义一个图片服务器组imgsrvs,并将imgsrv1和imgsrv2两个后端图片服务器添加进imgsrvs组中
sub vcl_init {
new imgsrvs = directors.round_robin(); \\指定调度算法为轮询
imgsrvs.add_backend(imgsrv1);
imgsrvs.add_backend(imgsrv2);
} sub vcl_recv {
if (req.url ~ "(?i)\.(jpg|jpeg|png|gif|svg|txt)$") {
set req.backend_hint = imgsrvs.backend();
} else {
set req.backend_hint = appsrv1;
}
}
[root@danran ~]# varnish_reload_vcl \\重新加载/etc/varnish/default.vcl参数文件

Varnish查看后端主机的健康状态

[root@danran ~]# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082
backend.list
200
Backend name Refs Admin Probe
appsrv1(192.168.198.128,,80) 7 probe Healthy 8/8 \\Healthy为健康状态,检测了8次,8次成功
imgsrv1(192.168.198.120,,80) 7 probe Healthy 8/8
imgsrv2(192.168.198.120,,8080) 6 probe Healthy 8/8

图片服务端故障了一台服务器

添加一条防火墙规则,禁止8080端口的连接,即等同于imgsrv2服务器的故障
[root@centos6 ~]# iptables -A INPUT -p tcp --dport 8080 -j REJECT

Varnish查看后端主机的健康状态

[root@danran ~]# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082
backend.list
200
Backend name Refs Admin Probe
appsrv1(192.168.198.128,,80) 7 probe Healthy 8/8
imgsrv1(192.168.198.120,,80) 7 probe Healthy 8/8
imgsrv2(192.168.198.120,,8080) 6 probe Sick 0/8 \\检查80次,0次成功,即imgsrv2服务端故障,从而imgsrv2不可用 修复使imgsrv2上线后,imgsrv2恢复正常状态
[root@danran ~]# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082
backend.list
200
Backend name Refs Admin Probe
appsrv1(192.168.198.128,,80) 7 probe Healthy 8/8
imgsrv1(192.168.198.120,,80) 7 probe Healthy 8/8
imgsrv2(192.168.198.120,,8080) 6 probe Sick 4/8 \\Sick为失败状态
backend.list
200
Backend name Refs Admin Probe
appsrv1(192.168.198.128,,80) 7 probe Healthy 8/8
imgsrv1(192.168.198.120,,80) 7 probe Healthy 8/8
imgsrv2(192.168.198.120,,8080) 6 probe Healthy 5/8 \\当检查次数大于等于5次时,即表示该服务端可以正常使用

Varnish手动使某后台服务端下线,即修改服务器健康状态为sick

[root@Varnish ~]# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082
backend.set_health imgsrv1 sick
200 \\将imgsrv1服务器的状态手动修改为sick故障状态 backend.set_healtlist
200
Backend name Refs Admin Probe
appsrv1(192.168.198.128,,80) 7 probe Healthy 8/8
imgsrv1(192.168.198.120,,80) 7 sick Healthy 8/8 \\imgsrv1状态为sick故障状态
imgsrv2(192.168.198.120,,8080) 6 probe Healthy 8/8

将手动修改为sick状态的后台服务器端上线,即将状态修改为health

[root@Varnish ~]# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082

backend.set_health imgsrv1 healthy
200 \\将imgsrv1服务器的状态手动修改为healthy健康状态,即不管物理后台服务器端是否正常,varnish检测结果都为正常 backend.set_healtlist
200
Backend name Refs Admin Probe
appsrv1(192.168.198.128,,80) 7 probe Healthy 8/8
imgsrv1(192.168.198.120,,80) 7 sick Healthy 8/8 \\imgsrv1状态为sick故障状态
imgsrv2(192.168.198.120,,8080) 6 probe Healthy 8/8 backend.set_healtlist
200
Backend name Refs Admin Probe
appsrv1(192.168.198.128,,80) 7 probe Healthy 8/8
imgsrv1(192.168.198.120,,80) 7 healthy Healthy 8/8
imgsrv2(192.168.198.120,,8080) 6 probe Healthy 8/8

imgsrv1后台服务器端故障,不能正常使用

[root@imgsrv1 ~]# iptables -A INPUT -p tcp --dport 80 -j REJECT

Varnish检测后端服务器的健康状态

[root@Varnish ~]# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082

backend.list
200
Backend name Refs Admin Probe
appsrv1(192.168.198.128,,80) 7 probe Healthy 8/8
imgsrv1(192.168.198.120,,80) 7 healthy Sick 0/8
imgsrv2(192.168.198.120,,8080) 6 probe Healthy 8/8

将手动修改为sick状态的后台服务器端上线,即将状态修改为health

[root@Varnish ~]# varnishadm -S /etc/varnish/secret -T

backend.set_healtlist
200
Backend name Refs Admin Probe
appsrv1(192.168.198.128,,80) 7 probe Healthy 8/8
imgsrv1(192.168.198.120,,80) 7 sick Healthy 8/8 \\imgsrv1状态为sick故障状态
imgsrv2(192.168.198.120,,8080) 6 probe Healthy 8/8 backend.set_health imgsrv1 auto
200 backend.set_healtlist
200
Backend name Refs Admin Probe
appsrv1(192.168.198.128,,80) 7 probe Healthy 8/8
imgsrv1(192.168.198.120,,80) 7 probe Healthy 8/8
imgsrv2(192.168.198.120,,8080) 6 probe Healthy 8/8

imgsrv1后台服务器端故障,不能正常使用

[root@imgsrv1 ~]# iptables -A INPUT -p tcp --dport 80 -j REJECT

Varnish检测后端服务器的健康状态

[root@Varnish ~]# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082

backend.set_healtlist
200
Backend name Refs Admin Probe
appsrv1(192.168.198.128,,80) 7 probe Healthy 8/8
imgsrv1(192.168.198.120,,80) 7 probe Sick 0/8
imgsrv2(192.168.198.120,,8080) 6 probe Healthy 8/8

修复imgsrv1,使imgsrv1上线1

[root@Varnish ~]# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082

backend.set_healtlist
200
Backend name Refs Admin Probe
appsrv1(192.168.198.128,,80) 7 probe Healthy 8/8
imgsrv1(192.168.198.120,,80) 7 probe Healthy 8/8
imgsrv2(192.168.198.120,,8080) 6 probe Healthy 8/8

Varnish后端主机的健康状态检查的更多相关文章

  1. nginx_upstream_check_module-master对nginx的后端机器进行健康状态检查报403错误【转】

    在nginx.conf配置文件中 在server添加 location /nstatus { check_status; access_log off; #allow 192.168.2.11; #d ...

  2. pod管理调度约束、与健康状态检查

    pod的管理 [root@k8s-master ~]# vim pod.yaml apiVersion: v1 kind: Pod metadata: name: nginx-pod labels: ...

  3. Tengine笔记3:Nginx的反向代理和健康状态检查

    通常代理服务器只用于处理内部网络对Intenet的请求,客户端必须通过代理服务器把本来要发送到Web服务器上的请求通过代理服务器分发给Web服务器,Web服务器响应时再通过代理服务器把响应发给客户端: ...

  4. 利用ldirectord实现lvs后端realserver健康状态检查

    ldirectord用来实现LVS负载均衡资源在主.备节点间的故障转移.在首次启动时,ldirectord可以自动创建IPVS表.此外,它还可以监控各RealServer的运行状态,一旦发现某Real ...

  5. Kubernetes 健康状态检查(九)

    强大的自愈能力是 Kubernetes 这类容器编排引擎的一个重要特性.自愈的默认实现方式是自动重启发生故障的容器.除此之外,用户还可以利用 Liveness 和 Readiness 探测机制设置更精 ...

  6. 7.5 实现基于探针对pod中的访问的健康状态检查

    1.pod的声明周期 取值 描述 Pending Pod 已被 Kubernetes 系统接受,但有一个或者多个容器尚未创建亦未运行.此阶段包括等待 Pod 被调度的时间和通过网络下载镜像的时间, R ...

  7. http健康状态检查

    来自为知笔记(Wiz)

  8. WEB缓存系统之varnish代理以及健康状态检测配置

    前文我们聊了下varnish的缓存项修剪配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12666406.html:今天我来说一下varnish作为代理服务 ...

  9. Nginx负载均衡中后端节点服务器健康检查的操作梳理

    正常情况下,nginx做反向代理,如果后端节点服务器宕掉的话,nginx默认是不能把这台realserver踢出upstream负载集群的,所以还会有请求转发到后端的这台realserver上面,这样 ...

随机推荐

  1. CentOS 访问 Windows 共享目录

    起因 由于公司的网络切换后,将所有的服务器都切换到了指定的网段(工作电脑在一个网络,服务器在另一个网络:这样一来,不同部门的 work stations 可以彼此访问,不同部门的服务器(servers ...

  2. python爬取百度搜索结果ur汇总

    写了两篇之后,我觉得关于爬虫,重点还是分析过程 分析些什么呢: 1)首先明确自己要爬取的目标 比如这次我们需要爬取的是使用百度搜索之后所有出来的url结果 2)分析手动进行的获取目标的过程,以便以程序 ...

  3. React Native 系列(一) -- JS入门知识

    前言 本系列是基于React Native版本号0.44.3写的,最初学习React Native的时候,完全没有接触过React和JS,本文的目的是为了给那些JS和React小白提供一个快速入门,让 ...

  4. JavaScript表单

    JavaScript表单 这篇文章的主要目的是介绍表单相关的知识,如表单基础知识.文本框脚本相关用法.选择框脚本相关用法以及等知识.虽然在现代web开发中,很少会使用form默认行为提交表单数据,而是 ...

  5. ES6新特性之生成器函数 (generator function): function*

    一.什么是生成器函数(generator function)? 生成器函数是ES6的新特性之一,它是一个在执行时能中途暂时退出,后面重新调用又能重新进入继续执行的一种函数. 并且在函数内定义的变量的所 ...

  6. MySQL数据库—日期与时间函数

    一. 日期和时间函数 函数的概念:按指定格式输入参数,返回正确结果的运算单元 1. 返回当前日期:curdate() current_date() current_date()+0可以将当前日期转换为 ...

  7. PHP中单引号、双引号和转义字符

    在PHP语言总,单引号与双引号的作用不尽相同. PHP单引号及双引号均可以修饰字符串类型的数据,如果修饰的字符串中含有变量(例$name):最大的区别是:双引号会替换变量的值,而单引号会把它当做字符串 ...

  8. 简单倒计时js代码

    //倒计时 var timer=null; var interval = 1000; function ShowCountDown(year,month,day,hour,minute,second, ...

  9. 一款轻量级前端框架Avalon.Js

    avalon2是一款基于虚拟DOM与属性劫持的 迷你. 易用. 高性能 的 前端MVVM框架, 拥有超优秀的兼容性, 支持移动开发, 后端渲染, WEB Component式组件开发, 无需编译, 开 ...

  10. tomcat调优的几个方面(转)

    tomcat调优的几个方面 和早期版本相比最新的Tomcat提供更好的性能和稳定性.所以一直使用最新的Tomcat版本.现在本文使用下面几步来提高Tomcat服务器的性能. 增加JVM堆内存大小 修复 ...