LoadBalancing Webserver đơn giản với HAproxy trên Ubuntu server
Thuật ngữ Loadbalancing (cân bằng tải) với các anh chị em coder thì không còn xa lạ gì nữa. Với những ai chưa biết thì chúng ta có thể google hoặc vào đây để đọc nhé. Ý tưởng của kỹ thuật loadbalancing các bạn có thể hình dung như sau : Hãy tưởng tượng bạn đang ung dung phóng xe trên đường đến ga ...
Thuật ngữ Loadbalancing (cân bằng tải) với các anh chị em coder thì không còn xa lạ gì nữa. Với những ai chưa biết thì chúng ta có thể google hoặc vào đây để đọc nhé. Ý tưởng của kỹ thuật loadbalancing các bạn có thể hình dung như sau :
Hãy tưởng tượng bạn đang ung dung phóng xe trên đường đến ga tàu hỏa thì bất chợt phía xa xa kia có một cái bảng thông báo to đùng rằng nếu bạn đi xe máy thì phải rẽ trái và đi ôto thì rẽ phải. Tất nhiên với 1 đoạn đường xe máy only thì bạn tha hồ vít ga, đánh võng lạng lách để đến nơi nhanh hơn mà không sợ mấy ông oto lấn làn, bấm còi . Đó chính là ý tưởng của kỹ thuật loadbalancing với loadbalancer là cái bảng thông báo to đùng.
Vậy để xây dựng một hệ thống loadbalancing thì đầu tiên chúng ta phải dựng một loadbalancer. Cơ bản thì chúng ta có 2 loại : Loadbalancer "mềm" và loadbalancer "cứng"
Loadbalancer mềm : Xây dựng một loadbalancer thông qua việc cấu hình hệ điều hành hoặc các phần mềm chia tải. Giải pháp này có ưu điểm là chi phí rẻ, nhưng lại mắc các khuyết điểm như: hiệu năng xử lý phân tải , tốc độ xử lý và chuyển tiếp gói tin chậm hơn so với các loadbalancer cứng chuyên dụng.
Một số phần mềm hay sử dụng làm loadbalancer như Nginx, Apache, HAproxy...
Loadbalancer cứng : Sử dụng các thiết bị chuyển mạch ứng dụng chuyên dụng. Đặc điểm của giải pháp này là trang bị các thiết bị phần cứng chuyên dụng với giá thành tương đối cao. Tuy nhiên hiệu năng xử lý và công nghệ áp dụng vượt xa so với phương pháp cân bằng tải bằng phần mềm.
Các hãng sản xuất các thiết bị loadbalancer như Foundry, Nortel (Alteon) hay Cisco CSS (Arrowpoint), Cisco Local Director...
Trong bài viết này, mình sẽ dùng ứng dụng HAproxy (các tính năng của HAproxy các bạn tham khảo tại đây ) được cài đặt trên một máy chủ Ubuntu đóng vai trò là một Loadbalancer. Mô hình triển khai như sau :
– Load Balancer Hostname: haproxy OS: Ubuntu + haproxy Private IP: 192.168.158.133 – Web Server 1 Hostname: webser01 OS: Ubuntu + Apahce2 Private IP: 192.168.158.134 – Web Server 2 Hostname: webserver02 OS: Ubuntu + Apache2 Private IP: 192.168.158.135
Bước 1 : Cài đặt và cấu hình 2 con web server.
Cài đặt ubuntu và apache2 trên cả 2 con webserver:
sudo apt-get update sudo apt-get install apache2
Trên mỗi con webserver, chúng ta sẽ tạo một trang index.html mới như sau :
Webserver 01
sudo sh -c "web1 >> /var/www/index.html"
Webserver 02
sudo sh -c "web2 >> /var/www/index.html"
Sau khi chuẩn bị xong 2 con webserver, chúng ta sang bước kế tiếp.
Bước 2: Cài đặt và cấu hình HAproxy.
sudo apt-get update sudo apt-get install haproxy
Dùng lệnh haproxy -v để xem kết quả.
Đã xong các bước chuẩn bi, chúng ta sang bước quan trọng nhất là cấu hình HAproxy.
Bước 3 : Cấu hình HAproxy.
File cấu hình là file haproxy.cfg lưu ở /etc/haproxy/. Trước khi tác động đến nó các bạn có thể lưu backup để dành tham khảo nhé. Bây giờ mở nó lên nào.
sudo nano /etc/haproxy/haproxy.cfg
Sau khi đã xóa trắng file, với mục đích chỉ config loadbalancer đơn giản cho 2 webserver, mình sẽ điền như sau :
global daemon maxconn 256 defaults mode http timeout connect 5000ms timeout client 50000ms timeout server 50000ms frontend http-in bind *:80 default_backend servers backend servers balance roundrobin server webserver1 192.168.158.134:80 check server webserver2 192.168.158.135:80 check
Cấu hình trên là cấu hình basic cho một loadbalancer, bạn chỉ cần quan tâm đến phần
backend servers balance roundrobin server webserver1 192.168.158.134:80 check server webserver2 192.168.158.135:80 check
Nếu có nhiều node apache server, các bạn chỉ cần khai báo thêm vào là được. Lưu ý với khai báo balance roundrobin, các bạn có thể thay đổi thuật toán loadbalancing nếu thích. (tham khảo thêm tại đây )
Save lại và sudo service haproxy start. Thế là đã xong một mô hình loadbalancing đơn giản với HAproxy. Bạn có thể truy cập vào IP của loadbalancer và xem kết quả.
Sau khi F5 :
Bonus thêm tính năng monitor thông qua web GUI của HAproxy
Thêm vào file cấu hình phần defaults như sau :
defaults mode http timeout connect 5000ms timeout client 50000ms timeout server 50000ms stats enable stats uri /monitor stats auth root:123456
Lưu ý : 2 khai báo stats uri / và stats auth các bạn điền tham số tùy ý nhé. Ở đây mình đặt tên trang monitor là monitor với user/pass dùng login là root:123456
Truy cập vào thử nào, của mình là 192.168.158.133/monitor
Kết luận
HAproxy là một công cụ rất mạnh, cung cấp rất nhiều tính năng để xây dựng nên một hệ thống loadbalancing tốt. Cách sử dụng basic khá đơn giản, dễ tìm hiểu nhưng nếu để hoàn thiện nó thì cũng khá là khoai ^^ . Các bạn có thể tham khảo đầy đủ các tính năng của nó tại http://www.haproxy.org/