varnish_cache

 

(MaychuVn) – Varnish Cache là gì: là một ứng dụng mã nguồn mở (Open Source) được cài đặt phía trước webserver để lưu và truy xuất cache trên webserver. Varnish cache có tác dụng như proxy trung gian cho webserver, giúp tăng tốc độ truy xuất lên rất nhiều và tiêu tốn ít tài nguyên máy chủ. Là một ứng dụng chạy độc lập không ghi bất kỳ một dòng code nào vào source web và hỗ trợ lưu cache cho nhiều loại website, chính vì lý do đó có rất nhiều website lớn sử dụng varnish cache để tăng tốc độ trang web như: facebook, Wikipedia, Twitter. Phiên bản đầu tiên của Varnish Cache 1.0 được phát hành vào tháng 12 năm 2006, đến hiện nay phiên bản mới nhất là Varnish Cache 4.1.3.

Cài đặt Varnish Cache

Cho đến thời điểm viết bài này thì varnish cache chỉ hỗ trợ các phiên bản 64 bit của Linux, FreeBSD hoặc  Solaris (x86).

Trong nội dung bài này tác giả trình bày phần cài đặt varnish làm proxy cho control panel phổ biến hiện nay là Directadmin chạy ở default (không cấu hình chuyên sâu). Do vậy vanish cache sẽ sử dụng port 80 còn webserver sẽ sử dụng một port nào đó bất kỳ.

Chú ý: là login vào máy chủ với quyền root để thực hiện các thao tác tiếp theo.

Trước hết cần nạp package của varnish repo vào:

Varnish 3.0

rpm –nosignature -i https://repo.varnish-cache.org/redhat/varnish-3.0.el6.rpm

Varnish 4.0

rpm –nosignature -i https://repo.varnish-cache.org/redhat/varnish-4.0.el6.rpm

Varnish 4.1:

rpm –nosignature -i https://repo.varnish-cache.org/redhat/varnish-4.1.el6.rpm

Cài varnish bằng lệnh

yum install varnish

Sau khi cài đặt thành công ta tiến hành sửa file

Sửa file /etc/sysconfig/varnish tìm

VARNISH_LISTEN_PORT=6081

Thành

VARNISH_LISTEN_PORT=80

Tiếp tục mở file /etc/varnish/default.vcl tìm

backend default {
.host = “127.0.0.1”;
.port = “80”;
}

Thành

backend default {
.host = “IP_may_chu_cua_ban”;
.port = “8080”;
}

Cấu hình cho webserver của Directadmin (apache)

Sửa file /etc/httpd/conf/httpd.conf tìm đoạn

Listen 80
…..
NameVirtualHost *:80

Sửa thành

Listen 8080
…..
NameVirtualHost *:8080

Tiếp tục sửa file /etc/httpd/conf/extra/httpd-vhosts.conf tìm đoạn

<VirtualHost *:80>
ServerAdmin webmaster@localhost
UserDir public_html
DocumentRoot /var/www/html
ServerName localhost
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
CustomLog /var/log/httpd/homedir.log homedir
CustomLog /var/log/httpd/access_log combined
<IfModule !mod_ruid2.c>
SuexecUserGroup webapps webapps
</IfModule>
</VirtualHost>

Sửa thành

<VirtualHost *:8080>
ServerAdmin webmaster@localhost
UserDir public_html
DocumentRoot /var/www/html
ServerName localhost
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
CustomLog /var/log/httpd/homedir.log homedir
CustomLog /var/log/httpd/access_log combined
<IfModule !mod_ruid2.c>
SuexecUserGroup webapps webapps
</IfModule>
</VirtualHost>

Bây giờ hãy khởi động lại Apache và Varnish

service httpd restart
service varnish restart

Cuối cùng là kiểm tra xem Varnish cache đã sử dụng port 80 và apache sử dụng đúng port 8080 chưa

[root@demo ~]# netstat -pant | grep 80
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      4771/varnishd
tcp        0      0 :::80                       :::*                        LISTEN      4771/varnishd
tcp        0      0 :::8080                     :::*                        LISTEN      2491/httpd

Một số thông số cần biết để cấu hình Varnish Cache

Bài viết này không trình bày cấu hình chuyên sâu, chỉ dừng lại ở mức mặc định vậy nên sẽ liệt kê các thông số cần thiết của file cấu hình Varnish

  • File thông số cấu hình /etc/sysconfig/varnish, file này chứa các thông số caching ta chú ý thông số VARNISH_STORAGE_SIZE=1G, là lượng ram ta giành riêng cho Varnish Cache dùng để cache dữ liệu ( thông số này tùy theo lượng ram của máy chủ mà cấu hình)
  • File cấu hình VLC (Varnish Configuration Language) /etc/varnish/default.vcl, file này định nghĩa chính sách caching cho Varnish chẳng hạn như caching file gì…

Một số câu lệnh cần biết

Vì Varnish không ghi log vào file như bình thường, nó ghi log theo thời gian thực và các câu lệnh của varnish đa phần đều dựa theo thời gian thực.

Varnishhist

Lệnh này cho thấy được số lượng request đến cache (HIT) và  lượt request trực tiếp vào backend server (MISS – khi chưa có cache), varnishhist sẽ thống kê theo dạng biểu đồ như hình

varnishhist

Varnishstat

Lệnh này sẽ hiển thị thông số thống kê chi tiết trong quá trình xử lý cache của

varnishstat

Ngoài ra còn có nhiều lệnh rất hữu ích có thể tham khảo thêm tại

https://www.varnish-cache.org/docs/trunk/reference/index.html