Cách thiết lập cân bằng tải Nginx
Giới thiệu về Cân bằng tải
Cân bằng tải là một cơ chế hữu ích để phân phối lưu lượng đến xung quanh một số server Riêng ảo có khả năng. Bằng cách phân bổ cơ chế xử lý cho một số máy, ứng dụng sẽ cung cấp khả năng dự phòng - đảm bảo khả năng chịu lỗi và độ ổn định cao hơn. Thuật toán Round Robin để cân bằng tải sẽ đưa khách truy cập đến một trong một tập hợp các IP. Ở cấp độ cơ bản nhất Round Robin, khá dễ thực hiện, phân phối tải server mà không cần triển khai xem xét các yếu tố sắc thái hơn như thời gian phản hồi của server và khu vực địa lý của khách truy cập.
Cài đặt
Các bước trong hướng dẫn này yêu cầu user có quyền root trên VPS của bạn. Bạn có thể xem cách cài đặt điều đó trong Hướng dẫn user .
Trước khi cài đặt cân bằng tải nginx, bạn nên cài đặt nginx trên VPS của bạn . Bạn có thể cài đặt nó một cách nhanh chóng với apt-get:
sudo apt-get install nginx
Mô-đun thượng nguồn
Để cài đặt bộ cân bằng tải vòng tròn, ta cần sử dụng module ngược dòng nginx. Ta sẽ kết hợp cấu hình vào cài đặt nginx.
Hãy tiếp tục và mở cấu hình trang web (trong các ví dụ của tôi, tôi sẽ chỉ xử lý server ảo mặc định chung):
sudo nano /etc/nginx/sites-available/default
Ta cần thêm cấu hình cân bằng tải vào file .
Đầu tiên, ta cần bao gồm module ngược dòng trông giống như sau:
upstream backend { server backend1.example.com; server backend2.example.com; server backend3.example.com; }
Sau đó, ta nên tham khảo thêm module trong cấu hình:
server { location / { proxy_pass http://backend; } }
Khởi động lại nginx:
sudo service nginx restart
Miễn là bạn có tất cả các server riêng ảo tại chỗ, bây giờ bạn sẽ thấy rằng bộ cân bằng tải sẽ bắt đầu phân phối khách truy cập đến các server được liên kết một cách bình đẳng.
Chỉ thị
Phần trước đã trình bày cách phân bổ tải đồng đều trên một số server ảo. Tuy nhiên, có nhiều lý do tại sao đây có thể không phải là cách hiệu quả nhất để làm việc với dữ liệu. Có một số chỉ thị mà ta có thể sử dụng để hướng khách truy cập trang web hiệu quả hơn.
Cân nặng
Một cách để bắt đầu phân bổ user cho các server chính xác hơn là phân bổ trọng lượng cụ thể cho một số máy nhất định. Nginx cho phép ta chỉ định một số chỉ định tỷ lệ lưu lượng truy cập sẽ được chuyển hướng đến mỗi server .
Cài đặt cân bằng tải bao gồm trọng lượng server có thể trông như sau:
upstream backend { server backend1.example.com weight=1; server backend2.example.com weight=2; server backend3.example.com weight=4; }
Trọng số mặc định là 1. Với trọng số là 2, backend2.example sẽ được gửi nhiều gấp đôi lưu lượng truy cập so với backend1 và backend3, với trọng số là 4, sẽ xử lý lượng truy cập gấp đôi so với backend2 và gấp bốn lần so với backend 1.
Băm
Hàm băm IP cho phép các server phản hồi với khách hàng theo địa chỉ IP của họ, đưa khách truy cập trở lại cùng một VPS mỗi lần họ truy cập (trừ khi server đó bị lỗi). Nếu một server được biết là không hoạt động, nó sẽ được đánh dấu là ngừng hoạt động. Tất cả các IP được cho là được chuyển đến server sau đó sẽ được chuyển hướng đến một IP thay thế.
Cấu hình dưới đây cung cấp một ví dụ:
upstream backend { ip_hash; server backend1.example.com; server backend2.example.com; server backend3.example.com down; }
Thất bại tối đa
Theo cài đặt vòng lặp mặc định, nginx sẽ tiếp tục gửi dữ liệu đến các server riêng ảo, ngay cả khi các server không phản hồi. Lỗi tối đa có thể tự động ngăn chặn điều này bằng cách hiển thị các server không phản hồi, không hoạt động trong một khoảng thời gian nhất định.
Có hai yếu tố liên quan đến lỗi max: max_fails và fall_timeout. Max failed đề cập đến số lần cố gắng kết nối với server không thành công tối đa xảy ra trước khi nó được coi là không hoạt động. Fall_timeout chỉ định độ dài của server được coi là không hoạt động. Sau khi hết thời gian, các nỗ lực mới để truy cập server sẽ khởi động lại. Giá trị thời gian chờ mặc định là 10 giây.
Cấu hình mẫu có thể trông như thế này:
upstream backend { server backend1.example.com max_fails=3 fail_timeout=15s; server backend2.example.com weight=2; server backend3.example.com weight=4;
Xem thêm
Đây là một tổng quan ngắn gọn về cân bằng tải Round Robin đơn giản. Ngoài ra, có những cách khác để tăng tốc và tối ưu hóa server :
- Cách cấu hình Nginx làm proxy giao diện user cho Apache
- Cách cài đặt và cấu hình Varnish với Apache trên Ubuntu 12.04
- Cách cài đặt và sử dụng Memcache trên Ubuntu 12.04
Các tin liên quan
Cách cấu hình Nginx làm Reverse Proxy cho Apache2012-07-20
Cách cài đặt WordPress với nginx trên CentOS 6
2012-07-02
Cách cài đặt WordPress với nginx trên CentOS 6
2012-07-02
Cách tạo chứng chỉ SSL trên nginx cho CentOS 6
2012-06-08
Cách thiết lập server ảo nginx (server block) trên CentOS 6
2012-06-07
Cách cài đặt Rails và nginx với Passenger trên Ubuntu
2012-06-01
Cách cài đặt nginx trên CentOS 6 với yum
2012-05-22