loading

Viettel IDC

VNNIC
Cooky

Contacts
seozie-img
cài đặt
Trong bài viết này mình sẽ hướng dẫn bạn cách cài đặt và sử dụng Varnish làm front-end cho Nginx hoặc Apache để cache các request HTTP nhanh hơn mà không cần phải nhờ đến webserver xử lý. Varnish là một hệ thống cache được dùng để tăng tốc server, đặc biệt là với những hệ thống lớn, có trafic nhiều. Varnish hoạt động bằng cách cache nội dung page lên bộ nhớ RAM và ngay lập tức trả lại cho người dùng khi có yêu cầu mà không phải thông qua PHP hay MySQL xử lý. Do sử dụng Memory để cache nên tốc độ truy xuất sẽ nhanh hơn rất nhiều so với Disk truyền thống, kể cả SSD. Bạn thử tưởng tượng với những website có lượng lớn dữ liệu, phương pháp cache thông thường sẽ tạo ra hàng vạn file .html trên ổ cứng, lúc đó PHP hoặc Nginx xử lý sẽ cực kỳ vất vả, tốn tài nguyên. Varnish hoạt động rất tốt với những website có dữ liệu lớn, một số website lớn trên thế giới đang áp dụng Varnish như Wikipedia, The New York Times, The Guardian, Facebook, Twitter, Vimeo,…. Quá trình cài đặt và cấu hình Varnish Cache khá phức tạp, tuy nhiên điều này rất đáng để thử vì sau khi hoàn thành, website của bạn chắc chắn load vù vù cho coi.

I. Cài đặt Varnish

Bạn cần cài đặt trước LEMP hoặc LAMP server trước khi tiến hành cài đặt Varnish. Với Ubuntu Với CentOS 6 Với CentOS 7 Sau khi cài đặt thành công, tùy thuộc vào OS mà bạn đang sử dụng mà Varnish có phiên bản khác nhau:
  1. Ubuntu: 3.0.2-1
  2. CentOS: v4.0.3
Việc xác định phiên bản Varnish rất quan trọng, vì Varnish 3.0 có cách cấu hình, tham số khác hoàn toàn Varnish 4.0. Bạn có thể kiểm tra phiên bản sau khi cài đặt xong bằng lệnh varnishd -V
Một số hệ thống sử dụng OS x32 khi cài thì bị lỗi [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found", các bạn chuyển sang x64 nhé.

Kích hoạt Varnish tự động chạy

Với Ubuntu, CentOS 6.x Với CentOS 7.x

II. Cấu hình Varnish

Có 2 file cấu hình bạn cần biết trước khi làm việc với Varnish: 1. File cấu hình tham số để Varnish hoạt động được
  • /etc/sysconfig/varnish trên CentOS 6.x hoặc
  • /etc/default/varnish trên Ubuntu hoặc
  • /etc/varnish/varnish.params trên CentOS 7.
2. File cấu hình VCL (Varnish Configuration Language) chứa các rule caching, /etc/varnish/default.vcl Quy trình tiến hành cấu hình Varnish như sau:
  1. Thay đổi port để Varnish listen thành 80
  2. Thay đổi port để Web server listen thành 8080, hoặc port bất kỳ bạn muốn
  3. Varnish tự động kết nối đến web server khi có request

1. Cấu hình Varnish

Phiên bản Hệ điều hành Đường dẫn file Cấu hình tham khảo
Varnish 3 Ubuntu /etc/default/varnish
Varnish 4 CentOS 6.x /etc/sysconfig/varnish
Varnish 4 CentOS 7 /etc/varnish/varnish.params
Bạn có thể thay đổi một số tham số mình thấy tối ưu nhất cho Varnish như sau:
  • thread_pool_min (VARNISH_MIN_THREADS) mặc định là 100, thay bằng 800/(số CPU Core). Ví dụ mình có 4 Core -> VARNISH_MIN_THREADS=200
  • thread_pool_max (VARNISH_MAX_THREADS) mặc định 5000, tuyệt đối không cấu hình quá 5000
VARNISH_STORAGE có 2 loại là malloc và filemalloc lưu cache trên Memory, có tốc độ xử lý cao hơn nhiều so với file lưu trên ổ cứng.. Cấu hình file VCL cho Varnish 4 để hoạt động được với WordPress Do mình sử dụng WordPress và CentOS nhiều nên có chuẩn bị được file cấu hình VLC tối ưu này, các bạn có thể tham khảo sử dụng. Thay thế toàn bộ bằng nội dung sau: Bạn có thể test cấu hình VCL với lệnh bên dưới, nếu không xuất hiện lỗi gì là ok. Thoát varnishd bằng cách nhấn Ctrl+C Khi update file cấu hình default.vcl, các bạn có thể reload Varnish vẫn giữ nguyên cache sử dụng init.d scripts: hoặc thông qua Varnish Reload VCL script

2. Cấu hình Web server

– Tiếp theo hãy chỉnh sửa file cấu hình của Web server để thay đổi port listen từ 80 thành 8080
Web Server Hệ điều hành File cấu hình Nội dung thay đổi
Apache Ubuntu /etc/apache2/ports.conf NameVirtualHost 127.0.0.1:8080 Listen 8080
/etc/apache2/sites-available/default
CentOS /etc/httpd/conf/httpd.conf Listen 8080
Nginx Ubuntu /etc/nginx/sites-enabled/default listen 127.0.0.1:8080 trong block server.
CentOS /etc/nginx/nginx.conf
Bạn cấu hình lại toàn bộ tên miền ở folder /etc/nginx/conf.d/ chuyển listen 80; thành listen 127.0.0.1:8080; – Điều chỉnh để hiển thị IP thật của visitor trong log file, thay vì 127.0.0.1. Bạn hãy mở file cấu hình nginx: Thay đoạn log_format bằng đoạn sau: Cuối cùng hãy restart Varnish và Web server. Giờ bạn có thể truy cập vào IP để check xem hệ thống đã hoạt động chưa rồi đó. Để kiểm tra các service nào đang listen port, ví dụ 80, bạn có thể sử dụng lệnh: netstat -lntp | grep 80.

III. Testing Varnish

Để biết được Varnish có đang hoạt động hay không bạn sử dụng lệnh bên dưới: Lần đầu tiên chạy, để ý dòng X-Varnish bạn sẽ thấy một số, ví dụ: hoặc X-Cache: MISS Sử dụng lệnh bên trên lần thứ 2, nếu thấy xuất hiện 2 số tức là Varnish đã hoạt động rồi đó, ví dụ: hoặc X-Cache: HIT Ngoài ra, bạn cũng có thể sử dụng 2 công cụ:
  1. varnishlog: xem Varnish logsreal time
  2. varnishstat: hiển thị tình trạng cache Varnish
Chúc bạn  thành công!

Write a Reply or Comment

Your email address will not be published. Required fields are marked *