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 restartservice 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 80tcp 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
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
Ngoài ra còn có nhiều lệnh rất hữu ích có thể tham khảo thêm tại