About Me

header ads

Tìm hiểu về HAPROXY, giải pháp cân bằng tải mã nguồn mở, thân thiện, hữu ích.

Mở đầu: Haproxy là một giải pháp cân bằng tải mã nguồn mở, miễn phí, thường được sử dụng rất phổ biến hiện nay. Haproxy thường được sử dụng làm reserve proxy cho máy chủ web, một số trường hợp sử dụng linh động để chia tải cho database, hay ứng dụng web socket.
Sau đây là demo triển khai, trong mô hình triển khai này mô hình như sau;
          INTERNET
  ||
  ||
   HAPROXY 
  ||
  ||
================================
||                                                                     ||
WEBSERVER I                            WEBSERVER II

Địa chỉ cho các máy chủ như sau:
- Haproxy: 192.168.29.150
- webserver I: 192.168.29.10
- webserver II:  192.168.29.11

Traffic truy cập từ internet sẽ đi vào haproxy, sau đó Haproxy sẽ forward lại traffic xuống 2 webserver ở dưới, thuật toán forward có các kiểu thuật toán sau:
- roundrobin : request thứ nhất sẽ đi vào webserver 1,  request thứ 2 sẽ đi vào webserver 2, request thứ 3 đi vào webserver 1, cứ thế như thế quay vòng, theo hình thức chia bài, nếu có nhiều hơn 2 server, thì cũng quay vòng tương tự.
-  static-rr: Tương tự như đối với roundrobin, traffic đi vào cũng sẽ được các máy chủ web chia nhau xử lý, tuy nhiên nâng cao hơn chút đó là mỗi máy chủ web được đánh 1 trọng số riêng, chỉ định lượng traffic mà nó xử lý. Ví dụ web server 1 đánh trọng số = 70, web 2 đánh trọng số = 30, thì 70% traffic đi vào web1, 30% còn lại đi vào web 2. Thuật toán này được sử dụng để chia tải giữa những server backend có cấu hình khác xa nhau.
- leastconn  : request sẽ được ưu tiên đưa vào máy chủ có ít kết nối nhất
- first: Mỗi máy chủ được đặt 1 ngưỡng, Máy chủ đầu tiên có số lưỡng kết nối chưa đạt ngưỡng sẽ được sử dụng, khi nó đạt ngưỡng thì sẽ chuyển sang máy chủ thứ 2, 3 ...
- Source: Thuật toán này quyết định server nào sẽ xử lý request bằng cách hash source IP sau đó chia cho tổng weight của server. Điều này sẽ giúp ích nếu ta không muốn một request của 1 client sẽ xử lý qua nhiều server (Tức là server nào xử lý request của client nào thì sẽ giữ như vậy và không thay đổi) dĩ nhiên là server đó vẫn còn đang chạy.
 - uri : Thuật toán này cũng giống như source, tuy nhiên giá trị hash ở đây sẽ là url (không có parameter). Việc này giúp ích nếu ta muốn các URL giống nhau sẽ chỉ được xử lý bởi một server.
- url_param: Giống như trên, tuy nhiên url sẽ bao gồm luôn parameter

HEALTH CHECK:
Khi một server trong cụm bị lỗi, chúng ta sẽ không muốn HAProxy chuyển request qua server đó. Health check là cách để xử lý vấn đề này.
Health check là một chức năng của HAProxy, nó sẽ liên tục kiểm tra server bằng cách gởi một gói tin đến các server và đợi server hồi đáp. Trường hợp server nào không hồi đáp lại, thì xem như server đó chưa sẵn sàng để tiếp nhận request và HAProxy sẽ không chuyển hướng request qua server đó cho đến khi server hoạt động lại bình thường.
Để setup chức năng này, chúng ta chỉ việc thêm option check vào sau dòng khai báo server.

Đăng nhận xét

0 Nhận xét