1. Bộ cân bằng tải sử dụng mã nguồn mở Haproxy:
1.1. Giới thiệu về bộ cân bằng tải mã nguồn mở Haproxy:
Haproxy là một giải pháp cân bằng tải với khả năng mở rộng cao, được cài đặt cho những website chạy các ứng dụng dựa trên TCP và HTTP. Haproxy là một giải pháp mã nguồn mở được phát triển trên hệ điều hành Linux. Trong phiên bản mới nhất, Haproxy hỗ trợ chuyển mạch ngữ cảnh (content switching) cho phép người quản trị website có thể thiết đặt các luật của chuyển mạch trong file cấu hình. Bên cạnh đó, Haproxy còn có số lượng thuật toán phân tải phong phú, khả năng ngăn chặn các cổng không cần thiết theo nhu cầu của người quản trị, hỗ trợ các phương pháp cài đặt cookie và khả năng hoạt động “trong suốt” giúp tăng tốc độ truyền dẫn dữ liệu.
Haproxy là một ứng dụng chạy độc lập, tất cả những gì người dùng phải làm là cài đặt Haproxy lên một máy server và thiết lập file cấu hình, trong đó chỉ rõ địa chỉ cài đặt Haproxy và địa chỉ các máy server. Mỗi server sẽ được đặt các thông số
khác nhau về địa chỉ server, cookie, trọng số…File cấu hình này cũng sẽ thiết lập các thông số về timeout của session, số lượng kết nối lớn nhất, cookie, thuật toán cân bằng tải, các luật chuyển mạch ngữ cảnh. Một ví dụ đơn giản về file cấu hình như sau:
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice #log loghost local0 info maxconn 4096 #debug #quiet user haproxy group haproxy defaults log global mode http option httplog option dontlognull retries 3 redispatch
maxconn 2000 # Number of max connections contimeout 5000 # Connection timeout
clitimeout 50000 # Client timeout srvtimeout 50000 # Server timeout listen webfarm 192.168.1.99:80 # Haproxy address mode http
stats enable # for statistics
stats auth someuser:somepassword # password stats balance roundrobin # Balance in round-robin mode cookie JSESSIONID prefix # Cookie rewrite
option httpclose option forwardfor
option httpchk HEAD /check.txt HTTP/1.0
server webA 192.168.1.102:80 cookie A check #Server A server webB 192.168.1.103:80 cookie B check #Server B
Các thông số được giải thích như trong phần chú thích (sau dấu „#‟). Trong đó có một vài thông số đáng lưu ý như:
”listen webfarm 192.168.1.99:80 # Haproxy address”
Server cài đặt Haproxy ở địa chỉ 192.168.1.99, listen trên cổng 80, người dùng sẽ truy cập vào website theo địa chỉ này và với họ đây là web-server duy nhất của website. Thông số quan trọng tiếp theo là thuật toán cân bằng tải:
”Balance roundrobin # Balance in round-robin mode”
Bộ cân bằng tải được cài đặt theo thuật toán phân tải round-robin. Haproxy phiên bản mới nhất hỗ trợ các thuật toán phân tải đa dạng như: round-robin, least connections, uri check, url check và source hash. Các website khác nhau sẽ có thể chọn thuật toán phù hợp với yêu cầu của người dùng hoặc tại thời điểm cụ thể. Thông số quan trọng thứ ba là địa chỉ các server thực chứa website.
server webA 192.168.1.102:80 cookie A check #Server A server webB 192.168.1.103:80 cookie B check #Server B
Hai server này được cài ở 2 máy trong cùng mạng LAN với bộ cân bằng tải, đều phục vụ trên cổng 80 và đều chứa cookie. Các thông số còn lại của file cấu hình có thể tìm hiểu thêm ở phần phụ lục của luận văn này.
Tuy hoạt động khá hiệu quả nhưng tính tùy biến và khả năng hỗ trợ người phát triển của Haproxy rất kém, phần mềm được viết bằng ngôn ngữ lập trình C trên hệ điều hành GNU/Linux, biên dịch bằng bộ thư viện mã nguồn mở GNU. Dưới đây là chi tiết cấu hình cài đặt Haproxy trên nền hệ điều hành phổ biến Centos.