91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用varnish + nginx + lua搭建網站的降級系統

發布時間:2021-08-03 18:01:28 來源:億速云 閱讀:348 作者:chen 欄目:系統運維

這篇文章主要講解了“如何使用varnish + nginx + lua搭建網站的降級系統”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何使用varnish + nginx + lua搭建網站的降級系統”吧!

前言

通常一個網站數據庫掛掉后,后果將是非常嚴重的。基本上整個網站基本不可用了。對于一些網站來說,當數據庫掛掉后,如果能提供基本的瀏覽服務,也是不錯的。本文將嘗試使用 varnish + nginx + lua 搭建網站降級系統來實現整個目標。

降級目標

降級方案的目標是,當網站出現致命故障時(如出現500錯誤,不能提供服務),可以把緩存的頁面數據展現給用戶。從而提供基本的瀏覽服務。

  1. 只提供基本的瀏覽服務

  2. 瀏覽的數據都是非登錄狀態下的數據

  3. 支持手動和自動降級。自動降級是當后端返回500錯誤次數在一段時間內達到一定閾值(不包含503)。手動降級是從控制界面操作。

降級方案

存儲

使用varnish作為存儲。有效的節約了物理內存,并保持了較好的性能。

更新

使用crond腳本從nginx的access日志中分析出請求url,然后向varnish發請求,從而更新varnish的緩存。緩存的異步更新,減少對nginx的壓力。

降級

支持手動降級和自動降級。降級后,nginx自動從varnish中提取數據,并返回給用戶。

流程圖

如何使用varnish + nginx + lua搭建網站的降級系統

流程描述
  1. 用戶請求到nginx時,nginx會判斷當前是否是降級狀態。如果屬于降級狀態,直接從varnish中獲取數據。非降級狀態,把請求轉到php-fpm。

  2. 當crond腳本請求varnish進行緩存數據更新時,如果當前varnish處于降級狀態,則不進行緩存更新。如果沒有處在降級狀態,則把請求轉到nginx,獲取數據。然后把獲取的數據緩存到varnish中。

  3. varnish會自動監控后端nginx的狀態。如果檢測到nginx已經處于降級狀態,則varnish也會自動進入降級狀態。

安裝部署

vanish安裝到/home/varnish 目錄下。安裝步驟如下:

首先,安裝libpcre。

sudo yum install pcre pcre-devel

其次,安裝varnish。

./configure --prefix=/home/varnishmakesudo -u admin make installsudo -u admin mkdir -p /home/varnish/vcache/sudo chown admin:admin -R /home/varnishsudo -u admin touch /home/varnish/vcache/varnish_cache.datasudo chmod 777 /home/varnish/vcache/varnish_cache.data

再次,修改varnish配置文件和部署相關腳本。點擊下載文件壓縮包。配置文件名為default.vcl。

最后,啟動varnish。啟動腳本也在壓縮包中,名稱為 varnishctl

sudo /home/admin/varnish/sbin/varnishctl start

注意:啟動后可以通過varnishlog命令查看是否運行正常。如果出現以下字樣,說明運行正常。http的返回狀態為200

$ /home/varnish/bin/varnishlog0 Backend_health - default Still healthy 4--X-RH 4 2 4 0.002698 0.001722 HTTP/1.1 200 OK

部署lua腳本

lua腳本在/home/admin/nginx/data/lua目錄下。 確保目錄下有如下幾個個腳本。

pc_get_downgrade_data.luainit.luapc_status_stat.luapc_get_status.luapc_set_satus.lua

這幾個腳本在下載的壓縮包中有。

修改nginx配置文件

首先,在http域增加

init_by_lua_file 'lua/init.lua';lua_shared_dict pc_status 1m;lua_shared_dict pc_auto_status 1m;#varnish configupstream varnish{    server 127.0.0.1:8080 weight=1 max_fails=2 fail_timeout=5s;}

最后,在server域宏增加如下配置。

location @php {  include fastcgi_params;}   location @var { proxy_pass http://varnish$str_params;}   location ~* ^(.+\.php)(.*)$ {  #check downgrade status, then get data from varnish  set $str_params $uri;  content_by_lua_file lua/pc_get_downgrade_data.lua;}location /hl_get_auto_status {           if ($white_ip = 0) {               return 403;           }           content_by_lua_file lua/pc_get_auto_status.lua; }location /hl_get_status {     if ($white_ip = 0) {         return 403;     }     content_by_lua_file lua/pc_get_status.lua;}location /hl_set_status {           if ($white_ip = 0) {               return 403;           }           content_by_lua_file lua/pc_set_status.lua;} log_by_lua_file  lua/pc_status_stat.lua;

部署crond腳本

腳本varnish_crond.php。在crond中增加執行命令。每分鐘執行一次。

來自crond的請求,user-agent數據為varnish_crond。把user-agent為varnish_crond請求特殊處理。保證能正常請求,并返回相關數據。

降級管理

varnish降級

只要讓varnish配置中指定的監控腳本check.php返回500錯誤即可。varnish監控到指定腳本不可用,自動會進入降級狀態。
當腳本返回200狀態后,varnish自動又會恢復正常。

nginx降級

設置降級:

curl -H "Host:demo.bo56.com" -i http://127.0.0.1/hl_set_status?status=1

恢復正常:

curl -H "Host:demo.bo56.com" -i http://127.0.0.1/hl_set_status?status=0

查看降級狀態:

curl -H "Host:demo.bo56.com" -i http://127.0.0.1/hl_get_status

如果返回的值為1表示降級。

感謝各位的閱讀,以上就是“如何使用varnish + nginx + lua搭建網站的降級系統”的內容了,經過本文的學習后,相信大家對如何使用varnish + nginx + lua搭建網站的降級系統這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

枣阳市| 江永县| 昔阳县| 台东县| 南汇区| 汨罗市| 太湖县| 南靖县| 永丰县| 桃园县| 禄丰县| 祁门县| 日土县| 平顶山市| 新巴尔虎左旗| 灵石县| 湖南省| 临夏县| 依兰县| 通海县| 宽城| 清水河县| 柘城县| 左贡县| 西和县| 阿克陶县| 东港市| 临高县| 漳平市| 万载县| 临武县| 丰城市| 朝阳县| 玛沁县| 丰宁| 太仆寺旗| 南通市| 九寨沟县| 大邑县| 建始县| 新沂市|