varnish基礎(chǔ)概念
可以基于內(nèi)存緩存燃领,也可以在磁盤(pán)上緩存,但是就算存放在磁盤(pán)上锦援,也不能實(shí)現(xiàn)持久緩存
只要進(jìn)成本管控猛蔽,此前緩存通通失效,無(wú)論是在內(nèi)存還是在磁盤(pán)灵寺,但是現(xiàn)在已經(jīng)具備持久緩存功能曼库,但是仍然在試驗(yàn)階段,經(jīng)常容易崩潰略板,而且最大大小不能超過(guò)1G毁枯。
如果期望內(nèi)存大小超過(guò)幾十個(gè)G,比如圖片服務(wù)器叮称,純粹使用內(nèi)存种玛,性能未必好,這個(gè)時(shí)候可以使用磁盤(pán)進(jìn)行緩存瓤檐,或SSD X 2座RAID避免磁盤(pán)損壞赂韵,在實(shí)現(xiàn)隨機(jī)訪(fǎng)問(wèn)上ssd硬盤(pán)要比機(jī)械硬盤(pán)要好得多,如果必須要緩存在磁盤(pán)上還是建議使用ssd磁盤(pán)挠蛉。
開(kāi)始
搭建一臺(tái)云服務(wù)器祭示,使用ssh進(jìn)入,并搭建好一個(gè)web服務(wù)器谴古,例如:Apache或nginx
更新系統(tǒng)
sudo apt-get update
sudo apt-get upgrade
安裝和配置Varnish
1质涛、安裝Varnish包
sudo apt-get install varnish
2、為了避免配置被以后的更新而修改掰担,復(fù)制一下默認(rèn)配置:
cd /etc/varnish
sudo cp default.vcl user.vcl
3汇陆、停止Varnish服務(wù),配置Varnish
sudo systemctl stop varnish
用Systemd配置varnish后臺(tái)
打開(kāi)varnish.service文件恩敌,設(shè)置端口瞬测、配置文件、緩存大小,例如
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/user.vcl -S /etc/varnish/secret -s malloc,1G
varnish.service的路徑為/lib/systemd/system/varnish.service
本人在Ubuntu上的配置具體內(nèi)容如下
[Unit]
Description=Varnish HTTP accelerator
[Service]
Type=forking
LimitNOFILE=131072
LimitMEMLOCK=82000
ExecStartPre=/usr/sbin/varnishd -C -f /etc/varnish/default.vcl
ExecStart=/usr/sbin/varnishd -a :6081 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
ExecReload=/usr/share/varnish/reload-vcl
[Install]
WantedBy=multi-user.target
- 上面的配置分配最多1G的內(nèi)存來(lái)存儲(chǔ)緩存項(xiàng)月趟,如果你需要調(diào)整這些配置灯蝴,編輯
-s malloc, 1G
即可。 - 重啟systemd:
sudo systemctl daemon-reload
修改Varnish的默認(rèn)配置通過(guò)VCL文件
在上述內(nèi)容中孝宗,配置文件中有一個(gè)默認(rèn)的user.vcl文件穷躁,你需要配置這個(gè)文件,來(lái)配置Varnish因妇。路徑為/etc/varnish/user.vcl问潭。配置內(nèi)容如下:
backend default {
.host = "127.0.0.1"; (本地IP)
.port = "8080"; (所需緩存的服務(wù)器的端口號(hào))
}
配置緩存時(shí)間
同上打開(kāi)user.vcl文件,加上以下內(nèi)容:
sub vcl_backend_response {
set beresp.ttl = 5m
}