Varnish后端主机的健康状态检查
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后端主机的健康状态检查的更多相关文章
- nginx_upstream_check_module-master对nginx的后端机器进行健康状态检查报403错误【转】
在nginx.conf配置文件中 在server添加 location /nstatus { check_status; access_log off; #allow 192.168.2.11; #d ...
- pod管理调度约束、与健康状态检查
pod的管理 [root@k8s-master ~]# vim pod.yaml apiVersion: v1 kind: Pod metadata: name: nginx-pod labels: ...
- Tengine笔记3:Nginx的反向代理和健康状态检查
通常代理服务器只用于处理内部网络对Intenet的请求,客户端必须通过代理服务器把本来要发送到Web服务器上的请求通过代理服务器分发给Web服务器,Web服务器响应时再通过代理服务器把响应发给客户端: ...
- 利用ldirectord实现lvs后端realserver健康状态检查
ldirectord用来实现LVS负载均衡资源在主.备节点间的故障转移.在首次启动时,ldirectord可以自动创建IPVS表.此外,它还可以监控各RealServer的运行状态,一旦发现某Real ...
- Kubernetes 健康状态检查(九)
强大的自愈能力是 Kubernetes 这类容器编排引擎的一个重要特性.自愈的默认实现方式是自动重启发生故障的容器.除此之外,用户还可以利用 Liveness 和 Readiness 探测机制设置更精 ...
- 7.5 实现基于探针对pod中的访问的健康状态检查
1.pod的声明周期 取值 描述 Pending Pod 已被 Kubernetes 系统接受,但有一个或者多个容器尚未创建亦未运行.此阶段包括等待 Pod 被调度的时间和通过网络下载镜像的时间, R ...
- http健康状态检查
来自为知笔记(Wiz)
- WEB缓存系统之varnish代理以及健康状态检测配置
前文我们聊了下varnish的缓存项修剪配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12666406.html:今天我来说一下varnish作为代理服务 ...
- Nginx负载均衡中后端节点服务器健康检查的操作梳理
正常情况下,nginx做反向代理,如果后端节点服务器宕掉的话,nginx默认是不能把这台realserver踢出upstream负载集群的,所以还会有请求转发到后端的这台realserver上面,这样 ...
随机推荐
- Orchard 学习
https://github.com/OrchardCMS/Orchard 源码下载 http://www.orchardch.com/ 中文介绍网站
- jquery中防止冒泡事件
冒泡事件就是点击子节点,会向上触发父节点,祖先节点的点击事件. 下面是html代码部分: <body> <div id="content"> 外层div元素 ...
- 【逻辑漏洞】基于BurpSuite的越权测试实战教程
一.什么是越权漏洞?它是如何产生的? 越权漏洞是Web应用程序中一种常见的安全漏洞.它的威胁在于一个账户即可控制全站用户数据.当然这些数据仅限于存在漏洞功能对应的数据.越权漏洞的成因主要是因为开发人员 ...
- RabbitMQ入门-从HelloWorld开始
从读者的反馈谈RabbitMQ 昨天发完<RabbitMQ入门-初识RabbitMQ>,我陆陆续续收到一些反馈.鉴于部分读者希望结合实例来讲 期待下篇详细,最好结合案例.谢谢! 哪都好,唯 ...
- ORACLE - 管理表空间和数据文件
ORACLE表空间是一个逻辑分区,一个数据文件只能属于一个表空间,一个表空间可以拥有多个数据文件. 一般情况下,如果一个实例分配给多个应用使用,需要创建不同的表空间,每个用户使用自己的表空间. 一.表 ...
- log4g 使用教程
日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录.在apache网站:jakarta.apache.org/log4j 可以免费下载到Log ...
- seajs的模块化开发--实践笔记
2017-04-02 SeaJS是一个遵循CMD规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制.有效的解决复杂项目中命名冲突.依赖.性能等问题. SeaJS ...
- Mapreduce——视频播放数据分类统计
很多视频网站都有电视剧热度排名,一般是依据用户在自己站的行为数据所体现出的受欢迎程度来排名.这里有一份来自优酷.爱奇艺.搜索视频等五大视频网站的一份视频播放数据,我们利用这份数据做些有意义的事情. 金 ...
- Misra-Gries 算法
2017/8/13 12:51:30 一.算法解决的问题 统计频繁项:统计一个数据流中出现频率最高的 k 的元素. 例如 问:k=3,统计数据流 [1,2,1,4,2,5,6,4] 中的频繁项. 答: ...
- 浅析MySQL中的Index Condition Pushdown (ICP 索引条件下推)和Multi-Range Read(MRR 索引多范围查找)查询优化
本文出处:http://www.cnblogs.com/wy123/p/7374078.html(保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误 ...