Varnish後端主機的健康狀態檢查
author:JevonWei
配置後端主機的Health Check
環境
Varnish 192.168.198.139
圖片服務端 192.168.198.120
程式服務端 192.168.198.128
程式伺服器
[[email protected] ~]# vim /var/www/html/.healthchk.html
ok
圖片伺服器
[[email protected] ~]# vim /data/web/image2/.healthchk.html oK [[email protected] ~]# vim /data/web/images/.healthchk.html ok
Vernish
[[email protected] ~]# 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;
}
}
[ [email protected] ~]# varnish_reload_vcl \\重新載入/etc/varnish/default.vcl引數檔案
Varnish檢視後端主機的健康狀態
[[email protected] ~]# 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伺服器的故障
[[email protected] ~]# iptables -A INPUT -p tcp --dport 8080 -j REJECT
Varnish檢視後端主機的健康狀態
[[email protected] ~]# 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恢復正常狀態
[[email protected] ~]# 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
[[email protected] ~]# 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
[[email protected] ~]# 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後臺伺服器端故障,不能正常使用
[[email protected] ~]# iptables -A INPUT -p tcp --dport 80 -j REJECT
Varnish檢測後端伺服器的健康狀態
[[email protected] ~]# 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
[[email protected] ~]# 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後臺伺服器端故障,不能正常使用
[[email protected] ~]# iptables -A INPUT -p tcp --dport 80 -j REJECT
Varnish檢測後端伺服器的健康狀態
[[email protected] ~]# 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
[[email protected] ~]# 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後端主機的健康狀態檢查
author:JevonWei 配置後端主機的Health Check 環境 Varnish 192.168.198.139 圖片服務端 192.168.198.120 程式服務端 192.168.198.128 程式伺服器 [[email
Nginx1.11.10使用upstream_check_module模組實現後端節點健康檢查功能
Nginx1.11.10使用upstream_check_module模組實現後端節點健康檢查功能 1. 安裝nginx的依賴包(pcre和zlib) 1.1安裝pcre 1.2安裝zlib 2. 安裝nginx 2.1上傳安裝包(可以使用winscp、xf
nginx後端節點健康檢查
一、nginx健康檢查的三種方式 1、ngx_http_proxy_module 模組和ngx_http_upstream_module模組(自帶) 官網地址:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next
haprox動態下線後端主機
nbsp 最好 sock 主機 建議 apr 而不是 redis 好的 haproxy可以很好的支持主機下線,不需要編輯配置文件,也不需要重新reload服務,通過本身的socket發送指令即可; 當你的應用程序是高可用狀態,一般部署的是>2的,這個時候就可以通過ha
Kubernetes 健康狀態檢查(九)
強大的自愈能力是 Kubernetes 這類容器編排引擎的一個重要特性。自愈的預設實現方式是自動重啟發生故障的容器。除此之外,使用者還可以利用 Liveness 和 Readiness 探測機制設定更精細的健康檢查,進而實現如下需求: 零停機部署。 避免部署無效的映象。 更加安全的滾動升級。
後端---深入理解雙重檢查鎖定
Java中的雙重檢查鎖定 雙重檢查鎖定又稱雙重效驗鎖,以前常常用於Java中的單例模式,在併發程式設計中的執行緒池中常常用到該模式,並且在Spring中DI(依賴注入)也用到該模式的思想,當Spring執行的時候將我們加入註解的bean(Java物件)遍歷出來,並建立其相關的一個例項,在程式的執
容器的健康狀態檢查
docker 1.12新加了不少命令,而健康檢查相關的命令,讓容器的健康檢查變得十分的簡單。 可以通過 docker run --help 找到和健康檢查相關的命令以及介紹: --health-cmd string Command to run to check heal
後端系統開發之檢查意識
klist 深度 系統 問題 男人 很好 car child 發現 生活中要有常識意識,行走在外要有交通安全意識,競技遊戲中要有參戰和逃命意識。軟件開發作為一項極易踩坑而且犯錯成本很高的工作,一定要有強烈的檢查意識。我在工作中發現,檢查意識能帶來很多明顯的好處:
叢集故障處理之處理思路以及健康狀態檢查(三十二)
前言 按照筆者的教程,大家應該都能夠比較順暢的完成k8s叢集的部署,不過由於環境、配置以及對Linux、k8s的不瞭解會導致很多問題、異常和故障,這裡筆者分享一些處理技巧和思路,以及部分常見的問題,
nginx對後端節點的健康檢查
nginx 檢查最近梳理了下手頭的業務,發現nginx層配有幾種健康檢查方式,在這裏做個總結,記錄下nginx做負載均衡時對後端節點的健康檢查方式:1、ngx_http_proxy_module 模塊中的下面三個指令(nginx自帶模塊) proxy_connect_timeout 60s
nginx反代+varnish緩存+後端LAMP平臺集群實現
nginxvarnishlamp較為完善的集群實現方式,前端兩臺LVS主機進行調度轉發到前端的兩臺nginx反代服務器,由nginx反代服務器將請求資源轉發到後端的varnish主機中,若varnish緩存服務器中存在所請求資源的緩存,則由varnish主機向nginx反代服務器進行響應,再有nginx服務器
高可用haproxy調度varnish服務器緩存後端動靜分離集群架構
haproxy varnish(1) 動靜分離部署wordpress,動靜都要能實現負載均衡,要註意會話的問題;(2) 在haproxy和後端主機之間添加varnish進行緩存;(3) 給出設計拓撲,寫成博客;(4) haproxy的設定要求: (a) stats page,要求僅能通過本地訪問使用管理接口;
nginx反代varnish緩存服務器實現後端amp動靜分離架構
varnish1.前端nginx做調度器及反代服務器,將用戶的請求調度至後端的兩臺varnish,緩存調度算法使用一致性hash算法保證緩存命中率;2.兩臺varnish反向代理用戶請求至三個(組)後端主機,分別為存儲靜態資源(htm,html,css,js),應用程序服務器(可以部署wordpress或Di
後端處理高並發狀態的多次重復請求
由於 build 無限循環 目前 檢索 沒有 調用 body 通過 相信做Web的,都有可能遇到有多次重復請求發送到後端的情況。而這些重復請求,可能大都是由於在網絡較差的情況下,用戶多次連續點擊。最後導致後端面臨處理大量重復請求的境地。阻止這些情況發生的方法有很多。
axios在後端返回401時,獲取不到error.response和返回的狀態碼問題
在axios中爬過的坑 專案是後端採用的grails + spring cloud + gorm + es等外掛做的, 前端採用的是element + axios + vue等,身份認證採用的是spring cloud oauth2.0 . 開發採用的是gradle搭建,語言使用的是gr
Keepalived實現LVS(DR模式)+自動後端健康檢測
上一篇部落格《Keepalived實現NAT+LVS+後端健康檢測》簡單介紹了NAT模式的LVS搭建步驟,下面介紹一下使用更普遍、網路結構更簡單的DR模式搭建方法。 不同與NAT模式,DR模式不需要跨兩個網段,負載均衡伺服器和真實Web伺服器還有客戶端都可以放在同一個網段裡
使用varnish的緩存功能實現後端服務器的負載均衡及資源的定向分發
else cluster 圖片格式 服務器組 調度 模塊 dfa pipe host 結構拓撲圖:使用varnish軟件實現後端兩臺web服務器的負載均衡並實現客戶端請求內容的定向分發。準備基礎環境: 在三臺後端服務器上安裝httpd服務,其中一臺作為圖片服務器提供服務,另
WEB快取系統之varnish代理以及健康狀態檢測配置
前文我們聊了下varnish的快取項修剪配置,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/12666406.html;今天我來說一下varnish作為代理伺服器反向代理多主機的配置;前邊的所有操作都是針對後端主機只有一臺的情況來說varnish的配置;在生產環境中
進行獨立於後臺後端的前端開發——學習Mockjs
lis 返回值 大於等於 con 函數 ddl -m sca 註意 Mockjs實現的功能 1.讓前端攻城師獨立於後端進行開發。 2.通過隨機數據,模擬各種場景。增加單元測試的真實性 3.不需要修改既有代碼,就可以攔截 Ajax 請求,返回模擬的響應數據。 4.用法簡單 5
nginx對後端的目錄進行反向代理
plonenginx主配置文件worker_processes 1; error_log /home/data/logs/nginx/error.log; #error_log logs/error.log; #error_log logs/error.log notice; #error_log