Thứ Sáu, 11 tháng 11, 2022

Load Balancing bằng nginx

Load balancing trên các máy chủ là một kỹ thuật thường được sử dụng để tối ưu hóa việc sử dụng tài nguyên, tối đa hóa lưu lượng, giảm độ trễ.

Chúng ta có thể sử dụng nginx như một máy chủ cân bằng tải HTTP để phân phối lưu lượng truy cập với một số máy chủ ứng dụng. Nó giúp cải thiện hiệu suất, khả năng mở rộng và độ tin cậy của các ứng dụng web với nginx.

Phương pháp load balancing

nginx có các phương pháp cân bằng tải sau:

  • round-robin - request gửi tới máy chủ ứng dụng được phân phối bởi round-robin
  • least-connected - các request tiếp theo được gán cho server dựa trên số lược connection.
  • ip-hash - một hàm hash (hash-function) được sử dụng để xác định máy chủ nào có thể được chọn cho request kế tiếp (dựa trên IP của máy khách)

Cấu hình load balancing mặc định

Dưới đây là 1 cấu hình đơn giản cho nginx:

http {
    upstream loadblancing-test {
        server server1.demo.com;
        server server2.demo.com;
        server server2.demo.com;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://loadblancing-test;
        }
    }
}

Trong ví dụ trên, chúng ta có 3 máy chủ ứng dụng server1-server3. Khi phương pháp cân bằng tải được cấu hình một cách cụ thể, nó sẽ mặc định chọn round-robin. Tất cả các request sẽ được ủy nhiệm cho nhóm loadblancing-test, và nginx sẽ có nhiệm vụ phân phối các request.

Reverse proxy được kế thừa trong nginx bao gồm load balancing cho cả HTTP, HTTPS, FastCGI, uwsgi, SCGI, và memcached.

Để cấu hình cân bằng tải cho HTTPS thay vì HTTP, chúng ta chỉ cần chỉ cần sử dụng "https" trong giao thức protocol.

Cân bằng tải least-connected

Một phương pháp cân bằng tải có quy tắc khác đó là least-connectedleast-connected cho phép quản lý số lượng máy chủ một cách có kiểm soát khi request mất quá nhiều thời gian để hoàn thành.

Với least-connected, nginx sẽ cố gắng không để quá tải máy chủ với quá nhiều request, nó sẽ phân phối request tới máy chủ đang ít bận rộn hơn.

least-connected trong nginx sẽ được kích hoạt khi least_con được sử dụng trong nhóm config:

upstream loadblancing-test {
    least_conn;
    server server1.demo.com;
    server server2.demo.com;
    server server2.demo.com;
}

Duy trì phiên làm việc (session)

Xin lưu ý rằng với phương pháp round-robin hay least-connected, mỗi request của từng client có thể được phân phối vào các máy chủ khác nhau. Không có ràng buộc đảm bảo nào rằng cùng một client sẽ luôn luôn được hướng tới cùng một máy chủ.

Nếu có yêu cầu để buộc một client luôn đến một máy chủ - nói cách khác, luôn làm cho phiên làm việc của client luôn dính đến một máy chủ được lựa chọn - thì ip-hash sẽ cần được sử dụng.

Với ip-hash, địa chỉ IP của client được sử dụng như một chìa khóa để xác định những máy chủ trong một nhóm máy chủ nên được lựa chọn. Phương pháp này đảm bảo rằng các yêu cầu từ client sẽ luôn được hướng đến cùng một máy chủ trừ khi máy chủ này là không còn tồn tại.

Để cấu hình cân bằng tải ip-hash, chỉ cần thêm các chỉ thị ip_hash:

upstream loadblancing-test {
    ip_hash;
    server server1.demo.com;
    server server2.demo.com;
    server server2.demo.com;
}

Cân bằng tải trọng

Ở đây chúng ta có thuật toán cân bằng tải dựa trên tải trọng của server.

Trong ví dụ trên, tải trọng máy chủ không được cấu hình có nghĩa là tất cả các máy chủ được đối xử như nhau.

Với round-robin việc phân phối request qua các server sẽ không được đều, sẽ có những lúc request được xử lý không thống nhất và cũng không đủ nhanh.

Khi tham số weight được quy định cho một máy chủ, tải trọng được tính như là một phần của các quyết định cân bằng tải.

upstream loadblancing-test {
    server server1.demo.com weight=3;
    server server2.demo.com;
    server server2.demo.com;
}

Với cấu hình này, mỗi 5 request mới sẽ được phân phối trên các máy chủ như sau: 3 yêu cầu sẽ được hướng tới server1, một trong những yêu cầu sẽ đi đến server2, và một cái khác sẽ đến server3.

Nó có thể sử dụng tải trọng tương tự với least-connected và ip-hash trong các phiên bản gần đây của nginx.

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
Load Balancing bằng nginx, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,khóa học pl/sql, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master