您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關如何理解varnish,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
varnishi由management(主進程)和(child/cache)子進程組成 varnishi由management(主進程)和(child/cache)子進程組成 management的工作: 1、提供命令行接口 2、監控和管理子進程,初始化varnish 3、將default.vcl編譯為二進制生成新的配置文件 child/cache的工作: 1、接收連接請求 2、處理用戶請求 3、清除緩存中的過期對象 4、記錄日志 5、根據default.vcl生成緩存策略 VCL: 1、緩存策略配置接口 2、基于"域"的配置 存儲緩存對象: flie:單個文件進行存儲,不支持持久化,會產生大量磁盤i/o對性能有一定影響 malloc:內存存儲,性能較高,代價更高(內存比磁盤貴),長時間使用會產生內存碎片 persistent:單個文件進行存儲,支持持久化,目前作為測試使用 varnish安裝:centos7環境 1、配置epel源 2、yum -y install varnish varnish配置: /etc/varnish/default.vcl #vcl配置文件 /etc/varnish/varnish.params #命令行參數配置文件 /etc/varnish/secret #連接命令行認證文件 varnish管理工具: systemctl start varnish.service #啟動varnish varnish默認監聽*:6081和127.0.0.1:6082,6081提供服務,6082提供管理 varnishadm #交互式命令行管理工具 varnishlog #交互式獲取日志工具 varnishncsa #交互式獲取日志工具(apache格式) varnishstat #顯示狀態 varnishtop #排序 varnish.params詳解: VARNISH_VCL_CONF=/etc/varnish/default.vcl #指定vcl文件位置 VARNISH_LISTEN_PORT=6081 #指定服務端口,默認監聽所有地址 VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1 #管理ip VARNISH_ADMIN_LISTEN_PORT=6082 #監聽端口 VARNISH_SECRET_FILE=/etc/varnish/secret #認證文件 VARNISH_STORAGE="file,/var/lib/varnish/varnish_storage.bin,1G" #緩存方式(單個文件緩存) #VARNISH_STORAGE="malloc,256M" #緩存方式(內存緩存),不能同時啟動 VARNISH_USER=varnish #程序用戶 VARNISH_GROUP=varnish #程序組 #DAEMON_OPTS="-p thread_pool_min=5 -p thread_pool_max=500 -p thread_pool_timeout=300" #進程池配置 varnish狀態引擎詳解:狀態引擎用于對客戶端請求進行判斷并作出相應處理 vcl_recv:接收用戶請求,判斷如何處理 vcl_pass: 繞過緩存,不從緩存中查詢內容,將請求直接傳遞給后端主機 vcl_pipe:無法解析請求類型,直接交給后端處理 vcl_hash:可緩存數據,通過hash進行處理 vcl_hit:緩存命中 vcl_deliver:將緩存數據返回給客戶端 vcl_miss:緩存未命中 vcl_fetch:從后端主機獲取內容,通過判斷將內容放入緩存或,直接返回給客戶端 vcl_error:如果請求出現錯誤,由varnishi構建錯誤頁返回給客戶端 varnish負載均衡集群算法: random #隨機 round-robin #輪詢 fallback #備份 hash #固定后端 配置實例: vcl 4.0; #varnish版本 probe cache { #定義健康檢查函數 .url = "/index.html"; #檢查的url .timeout = 1s; #超時時間 .interval = 5s; #重試間隔 .window = 5; #重試次數 .threshold = 3; #重試三次成功則認為服務器在線 } backend www1 { #定義后端主機 .host = "192.168.0.10"; #后端主機 .port = "80"; #監聽端口 .probe = cache; #調用健康檢查函數 } backend www2 { .host = "192.168.0.40"; .port = "80"; .probe = cache; } backend www3 { .host = "192.168.0.70"; .port = "80"; .probe = cache; } import directors; #導入集群模塊 sub vcl_init { new www = directors.round_robin(); #使用輪詢算法 www.add_backend(www1); #集群主機 www.add_backend(www2); #集群主機 www.add_backend(www3); #集群主機 } sub vcl_recv { set req.backend_hint = www.backend(); #將所有流量發送給www集群 }
關于如何理解varnish就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。