haproxy Hướng dẫn cài đặt HAProxy Load balancing trên Ubuntu 18.04

phatkma

Administrator
Nội dung

Step 1 - Tìm hiểu HAproxy
Step 2 - Cài đặt HAProxy trên Ubuntu 18.04
Step 3 - Cấu hình Load Balancing HAproxy

Step 4 - Kiểm tra cấu hình và restart service HAProxy
Step 5 - Test hoạt động haproxy
Step 6 - Monitor traffic HAproxy



Step 1: Tìm hiểu HAproxy

Khái niệm:

HAProxy viết tắt của High Availability Proxy, là một phần mềm cân bằng tải open source cho TCP/HTTP. Nó có thể chạy trên Linux, Solaris và FreeBSD. Mục đích chính của nó là dùng để cải thiện hiệu năng và tính tin cậy của hệ thống bằng cách dẫn tải đến các server khác.​
HAProxy cũng được sử dụng tại nhiều các công ty nổi tiếng như GitHub, Imgur, Instagram,...​
Các thuật ngữ trong HAProxy
Access Control List (ACL): Trong cân bằng tải, ACL được dùng để kiểm tra điều kiện và thực hiện một hành động (ví dụ như lựa chọn một server hay chặn một request) dựa trên kết quả của việc kiểm tra đó. Việc sử dụng ACL cho phép tạo một môi trường có khả năng chuyển tiếp các request một cách linh hoạt dựa trên các yếu tố khác nhau mà người dùng có thể tùy chỉnh một cách dễ dàng.​
VD:​
acl url_blog src /something
Chú thích: ACL này sử dụng cho các request có chứa /something (vd như: localhost/something/1/) và các request này được redirect đến src​
Backend: là một tập các server mà HAProxy có thể forward các request tới. Backend được cấu hình trong mục backend thuộc file configuration của HAProxy.​
Một backend có thể chứa một hoặc nhiều server, về cơ bản thì càng nhiều server trong một backend thì khả năng chịu tải và performance của hệ thống càng tăng lên. Tính tin cậy của hệ thống cũng tăng lên theo phương pháp này vì khi một server bị ngắt khỏi proxy, các server có thể chịu tải thay được cho nó.​
HAProxy còn cho phép một server backup chuyên dụng, được sử dụng khi các server đều offline. Server backup này thường sẽ chứa các thông báo hệ thống offline hoặc một thông điệp nào đó để người dùng có thể biết được rằng hệ thống đang tạm thời không có sẵn.​
backend my_web_xenforo​
mode http​
balance roundrobin​
server xenforo01.securityzone.vn 10.123.70.98​
server xenforo02.securityzone.vn 10.123.70.99​
Chú thích: Dòng "balance roundrobin" chỉ ra rằng thuật toán để cân bằng tải là chọn những server là roundrobin.​
Dòng "mode http" chỉ ra rằng proxy sẽ chỉ cân bằng cho các kết nối tại tầng 7 của Internet Layer (Tầng ứng dụng)​

Frontend được dùng để định nghĩa cách mà các request được điều hướng cho backend. Frontend được định nghĩa trong mục frontend của HAProxy configuration. Các cấu hình cho frontend gồm:​
  • Một bộ địa chỉ IP và port (ví dụ: 10.0.0.1:8080, *:443,...)
  • Các ACL do người dùng định nghĩa
  • Backend được dùng để nhận request
frontend Local_Server​
bind 10.123.70.100:80​
mode http​
default_backend my_web_xenforo​
Các thuật toán trong HAProxy
  • roundrobin: các request sẽ được chuyển đến server theo lượt. Đây là thuật toán mặc định được sử dụng cho HAProxy
  • leastconn: các request sẽ được chuyển đến server nào có ít kết nối đến nó nhất
  • source: các request được chuyển đến server bằng các hash của IP người dùng. Phương pháp này giúp người dùng đảm bảo luôn kết nối tới một server

Step 2 - Cài đặt HAProxy trên Ubuntu 18.04
  • Mô hình triển khai HAproxy
Screenshot_9.jpg


  • Tải và cài đặt gói haproxy | Download and install haproxy package:
sudo add-apt-repository ppa:vbernat/haproxy-1.8
sudo apt-get update
sudo apt-get install haproxy
Step 3 - Cấu hình Load Balancing HAproxy
Tiếp theo, chỉnh sửa file cấu hình tại đường dẫn: /etc/haproxy/haproxy.cfg
giữ nguyên cấu hình mặc định chỉ thêm vào các phần sau:


Frontend
: Lắng nghe và nhận các kết nối từ người dùng | Listen and receive requests from user.
frontend Local_Server
bind 10.123.70.100:80​
mode http​
default_backend my_web_xenforo​
Chú thích: 10.123.70.100 là IP đại diện cho 2 webserver bên trong, port dùng là port 80 giao thức http​
Backend: server web và port bên trong hệ thống mà HAProxy sẽ điều hướng tới từ kết nối của người dùng | web servers inside that HAProxy will navigate to from user request.
backend my_web_xenforo
mode http​
balance roundrobin​
option forwardfor​
http-request set-header X-Forwarded-Port %[dst_port]​
http-request add-header X-Forwarded-Proto https if { ssl_fc }​
option httpchk HEAD / HTTP/1.1rnHost:localhost​
server xenforo01.securityzone.vn 10.123.70.98​
server xenforo02.securityzone.vn 10.123.70.99​
Chú thích:
  • mode http - giao thức load balancing được sử dùng là http
  • balance roundrobin - thuật toán cân bằng tài roundrobin
  • http-request set-header X-Forwarded-Port %[dst_port] - Thêm tiêu đề X-Forwarded-Port theo bằng cách thủ công để các ứng dụng của chúng tôi biết cổng nào sẽ sử dụng khi chuyển hướng / tạo URL.
  • http-request add-header X-Forwarded-Proto https if { ssl_fc } - Thêm tiêu đề X-Forwarded-Proto và đặt nó thành "https" nếu lược đồ "https" được sử dụng trên "http" (qua ssl_fc). Tương tự như X-Forwarded-Port, điều này có thể giúp các ứng dụng web xác định lược đồ nào sẽ sử dụng khi tạo URL.
  • option httpchk HEAD / HTTP/1.1\r\nHost:localhost - Được sử dụng để kiểm tra xem máy chủ web có còn phản hồi hay không. Nếu những không phản hồi mà không có lỗi, máy chủ sẽ bị xóa khỏi HAProxy. Thao tác này sẽ gửi request HEAD với bộ tiêu đề HTTP/1.1 và Máy chủ lưu trữ, sẽ cần thiết nếu máy chủ web của bạn sử dụng máy chủ ảo để phát hiện trang web nào sẽ gửi lưu lượng truy cập đến.
  • 2 dòng cuối cùng là thông tin server web

Tiếp theo, sẽ add thêm phần cấu hình monitor các thông số kết nối tới HAproxy.
Stats
: Monitor các thông số kết nối của HAProxy bằng giao diện web | Monitor HAProxy statistics using Web GUI:
listen stats​
bind :8888​
mode http​
stats enable​
stats refresh 10s​
stats hide-version​
stats realm Haproxy\ Statistics​
stats uri /haproxy_stats​
stats auth admin:admin
Step 4 - Kiểm tra cấu hình và restart service HAProxy
  • Kiểm tra cấu hình | Check configuration:
haproxy -c -f /etc/haproxy/haproxy.cfg
  • Restart HAProxy service:
service haproxy restart
  • Kiểm tra trạng thái HAProxy service:
service haproxy status
Step 5 - Test hoạt động haproxy
Truy cập vào IP đại diện haproxy http://10.123.70.100
  • Lần 1: giao diện web hiện ra là giao diện web01
Screenshot_10.jpg


  • Lần 2: giao diện web hiện ra là giao diện web02
Screenshot_11.jpg


Do thuật toán sử dụng là Roundrobin nên sẽ luân phiên load source 2 web server.


Step 6 - Monitor traffic HAproxy
Để có thể truy cập giao diện monitor traffic HAproxy ta truy cập vào đường dẫn bên dưới, dùng username/pass: admin/admin vừa cấu hình bên trên.
Với giao diện monitor ta có thể kiểm tra được số lượng request đến, dung lượng packet request... ==> từ đó theo dõi và monitor hệ thống web server hiệu quả hơn.

Screenshot_8.jpg

Khi 1 server Web bị lỗi thì trang web còn lại vẫn hoạt động bình thường, đảm bảo tính dự phòng cho Web server.
 
Last edited:
Top