成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

前言

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

[[138009]]

降級目標

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

  1. 只提供基本的瀏覽服務
  2. 瀏覽的數據都是非登錄狀態下的數據
  3. 支持手動和自動降級。自動降級是當后端返回500錯誤次數在一段時間內達到一定閾值(不包含503)。手動降級是從控制界面操作。

降級方案

存儲

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

更新

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

降級

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

流程圖

[[138010]]

流程描述

  1. 用戶請求到nginx時,nginx會判斷當前是否是降級狀態。如果屬于降級狀態,直接從varnish中獲取數據。非降級狀態,把請求轉到php-fpm。
  2. 當crond腳本請求varnish進行緩存數據更新時,如果當前varnish處于降級狀態,則不進行緩存更新。如果沒有處在降級狀態,則把請求轉到nginx,獲取數據。然后把獲取的數據緩存到varnish中。
  3. varnish會自動監控后端nginx的狀態。如果檢測到nginx已經處于降級狀態,則varnish也會自動進入降級狀態。

安裝部署

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

首先,安裝libpcre。

  1. sudo yum install pcre pcre-devel

其次,安裝varnish。

  1. ./configure --prefix=/home/varnish
  2. make
  3. sudo -u admin make install
  4. sudo -u admin mkdir -p /home/varnish/vcache/
  5. sudo chown admin:admin -R /home/varnish
  6. sudo -u admin touch /home/varnish/vcache/varnish_cache.data
  7. sudo chmod 777 /home/varnish/vcache/varnish_cache.data

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

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

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

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

  1. $ /home/varnish/bin/varnishlog
  2. 0 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目錄下。 確保目錄下有如下幾個個腳本。

  1. pc_get_downgrade_data.lua
  2. init.lua
  3. pc_status_stat.lua
  4. pc_get_status.lua
  5. pc_set_satus.lua

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

修改nginx配置文件

首先,在http域增加

  1. init_by_lua_file 'lua/init.lua';
  2. lua_shared_dict pc_status 1m;
  3. lua_shared_dict pc_auto_status 1m;
  4. #varnish config
  5. upstream varnish{
  6. server 127.0.0.1:8080 weight=1 max_fails=2 fail_timeout=5s;
  7. }

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

  1. location @php {
  2. include fastcgi_params;
  3. }
  4. location @var {
  5. proxy_pass http://varnish$str_params;
  6. }
  7. location ~* ^(.+\.php)(.*)$ {
  8. #check downgrade status, then get data from varnish
  9. set $str_params $uri;
  10. content_by_lua_file lua/pc_get_downgrade_data.lua;
  11. }
  12. location /hl_get_auto_status {
  13. if ($white_ip = 0) {
  14. return 403;
  15. }
  16. content_by_lua_file lua/pc_get_auto_status.lua;
  17. }
  18. location /hl_get_status {
  19. if ($white_ip = 0) {
  20. return 403;
  21. }
  22. content_by_lua_file lua/pc_get_status.lua;
  23. }
  24. location /hl_set_status {
  25. if ($white_ip = 0) {
  26. return 403;
  27. }
  28. content_by_lua_file lua/pc_set_status.lua;
  29. }
  30. 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降級

設置降級:

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

恢復正常:

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

查看降級狀態:

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

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

責任編輯:林師授 來源: 信海龍的博客
相關推薦

2020-06-16 10:57:20

搭建

2015-05-12 11:42:39

Angular JSExpress JS入門搭建網站

2017-09-06 09:02:34

服務器NAS存儲

2020-06-19 17:49:23

建網

2009-12-02 16:49:46

Visual Stu

2019-11-12 16:39:43

黑客網絡安全云計算

2009-01-18 09:14:00

內網IPNAT

2012-03-29 15:34:42

云計算微軟Azure

2023-06-27 16:51:37

人工智能工具

2021-09-11 23:18:13

云服務虛擬主機網站

2023-04-24 09:28:53

2016-09-12 15:48:06

Nginxvarnish緩存

2018-08-16 14:11:56

現代農業

2022-08-28 20:07:17

Docker后端

2011-06-27 18:01:20

網站建設SEO

2012-04-02 17:46:08

緩存對比

2011-03-11 16:54:47

LAMPphpMyAdmin

2017-04-24 18:10:27

DrupalCentOSFedora

2011-03-10 14:40:48

LAMP搭建

2011-03-10 10:09:13

Ubuntu搭建LAMP
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美激情免费在线 | 一级特黄a大片 | 99re视频精品 | 羞羞视频免费观看 | 一级欧美一级日韩片 | 五月激情久久 | 高清欧美性猛交 | 天堂av影院 | 亚洲人人 | 亚洲国产精品第一区二区 | 中文字幕在线一区 | 亚洲中午字幕 | 黄色免费看 | 久久精品99 | 欧美性久久久 | 极品一区| 色婷婷国产精品综合在线观看 | 国产精品日韩一区 | 午夜影院在线观看视频 | 欧美淫片 | 久草在线在线精品观看 | 国产jizz女人多喷水99 | 麻豆av一区二区三区久久 | 电影在线| 国产91一区 | 午夜在线观看免费 | 久久精品日产第一区二区三区 | 91看片网| 成人午夜精品一区二区三区 | 日韩欧美在 | 国产在线第一页 | 国产精品久久久久一区二区三区 | 亚洲精品一区二区三区蜜桃久 | 国产精品毛片无码 | 欧美日韩在线播放 | 天天操网 | 都市激情亚洲 | 一区二区三区不卡视频 | 久久久久久av | 国产精品无码久久久久 | 成人在线观看网址 |