LoadBalancing Webserver đơn giản với HAproxy trên Ubuntu server

807
05-06-2018
LoadBalancing Webserver đơn giản với HAproxy trên Ubuntu server

Ý 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. Hiện nay, BizflyCloud sẽ giới thiệu 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à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 
LoadBalancing Webserver đơn giản với HAproxy trên Ubuntu server - Ảnh 1.

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ả.

LoadBalancing Webserver đơn giản với HAproxy trên Ubuntu server - Ảnh 2.

Sau khi F5 :

LoadBalancing Webserver đơn giản với HAproxy trên Ubuntu server - Ảnh 3.

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 /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

LoadBalancing Webserver đơn giản với HAproxy trên Ubuntu server - Ảnh 4.

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/

>> Có thể bạn quan tâm: Hướng dẫn cài đặt .Net Framework 3.5 cho windows server 2012 

Theo viblo.asia

SHARE
Hỗ trợ kỹ thuật
Kinh doanh, CSKH