Thứ Năm, 9 tháng 2, 2023

Cài đặt và triển khai Nginx load balancing server

Cài đặt và triển khai Nginx load balancing server
 Read Time:7 Minute, 2 Second

Nội dung bài viết [ẩn]

  • Cài đặt và triển khai Nginx load balancing server
    • 1. Mô hình triển khai
    • 2. Tiến hành cài đặt và triển khai load balancing server
      • 2.1 Cài đặt nginx
      • 2.2 Quy ước cấu hình
        • 2.2.1 Thuật toán Round Robin
        • 2.2.2 Thuật toán Weighted load balancing
        • 2.2.3 Thuật toán Least connection
        • 2.3.4 Thuật toán Health check
      • 2.3 Cấu hình vhost
        • 2.3.1 Cài đặt và cấu hình
        • 2.3.2  Tạo thư mục và các file log
        • 2.3.3 File cấu hình Vhost cơ bản

    Cài đặt và triển khai Nginx load balancing server

    Trong bài này mình sẽ làm demo cài đặt và triển khai NGINX như một load balancing server (cân bằng tải). NGINX sẽ đứng ra thực hiện phân tải. Tránh tình trạng 1 server phải xử lý tất cả request hoặc nếu có 1 server trong cụm server chết thì cũng không sao.

    1. Mô hình triển khai

    – Nginx server: 10.10.10.100

    – Server01: 10.10.10.10

    – Server02: 10.10.10.15

    – Server03: 10.10.10.20

    2. Tiến hành cài đặt và triển khai load balancing server

    2.1 Cài đặt nginx

    + Đối với CentOs7/ Redhat7/ Oracle Linux7:
    # yum -y install nginx 
    + Đối với CentOs8/ Redhat8/ Oracle Linux8: 
    # yum -y install epel-release
    # dnf -y install nginx 
    + Đối với Debian: 
    # apt -y install nginx 
    + Đối với Ubuntu: 
    # apt-get install nginx

    – Cho phép nginx tạo kết nối mạng

    # setsebool httpd_can_network_connect on -P

    – Khởi động nginx

    # service nginx start

    – Cấu hình firewall và reload lại dịch vụ:

    # firewall-cmd --zone=public --add-port=80/tcp --permanent 
    # firewall-cmd --zone=public --add-port=443/tcp --permanent 
    # firewall-cmd –reload

    2.2 Quy ước cấu hình

    – Mở file /etc/nginx/nginx.conf thêm dòng sau

    include /etc/nginx/conf.d/upstream;

    – Nôi dung tóm tắc file sẽ như sau:

    user nginx;
    worker_processes auto;
    error_log /var/log/nginx/error.log notice;
    pid /var/run/nginx.pid;
    ...
    ...
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/conf.d/upstream;
    }

    – Tạo file tương ứng /etc/nginx/conf.d/upstream File này sẽ khai báo thông tin các cụm load balancer và thuật toán load balancer.

    + Ở đây mình khai báo 2 cụm server cần được load balancer là backends_01 và backends_02.

    + Ở 2 cụm này được khai báo với thuật toán mặc đinh là Round Robin.

    upstream backends_01 {
       server 10.10.10.10:7001;
       server 10.10.10.15:7001;
       server 10.10.10.20:7001;
    }
    upstream backends_02 {
       server 10.10.10.25:80;
       server 10.10.10.30:80;
    }

    2.2.1 Thuật toán Round Robin

    – Round Robin là thuật toán mặc định của nginx khi chúng ta không có cấu hình gì thêm trong block HTTP.

    – Đặc điểm của thuật toán này là các request sẽ được luân phiên liên tục giữa các server 1:1:1 , điều này sẽ làm giải tải cho các hệ thống có lượng request lớn.

    + Tại file /etc/nginx/conf.d/upstream ta sẽ khai báo cấu hình như sau:

    upstream backends_01 {
       server 10.10.10.10:7001;
       server 10.10.10.15:7001;
       server 10.10.10.20:7001;
    }

    2.2.2 Thuật toán Weighted load balancing

    – Đây là một thuật toán quan trọng trong loadbalancing, khi sử dụng thuật toán này sẽ giúp chúng ta giải quyết đươc bài toán phân chia các server xử lý.

    – Với mặc định của nginx sử dụng thuật toán round-robin thì các request sẽ được chuyển luân phiên đến các server để xử lý, tuy nhiên đối với Weighted load balancing thì chúng ta sẽ phân ra được khối lượng xử lý giữa các server.

    – Ví dụ chúng ta có 3 server dùng để load balancing muốn cứ 5 request đến thì:

    + 3 request sẽ dành cho server01 xử lý.

    + 1 request dành cho server02.

    + 1 request dành cho server03.

    Các trường hợp tương tự thì weighted load balancing là sự lựa chọn hợp lý.

    + Tại file /etc/nginx/conf.d/upstream ta sẽ khai báo cấu hình như sau:

    upstream backends_01 {
       server 10.10.10.10:7001 weight=3;
       server 10.10.10.15:7001 weight=1;
       server 10.10.10.20:7001 weight=1;
    }

    2.2.3 Thuật toán Least connection

    – Đây là thuật toán nâng cấp của round robin và weighted load balancing, thuật toán này sẽ giúp tối ưu hóa cân bằng tải cho hệ thống.

    – Đặc điểm của thuật toán này là sẽ chuyển request đến cho server đang xử lý ít hơn làm việc, thích hợp đối với các hệ thống mà có các session duy trì trong thời gian dài, tránh được trường hợp các session duy trì quá lâu mà các request được chuyển luân phiên theo quy tắc định sẵn , dễ bị down 1 server nào đó do xử lý quá khả năng của nó.

    + Tại file /etc/nginx/conf.d/upstream ta sẽ khai báo cấu hình như sau:

    upstream backends_01 {
       least_conn;
       server 10.10.10.10:7001;
       server 10.10.10.15:7001;
       server 10.10.10.20:7001;
    }

    2.3.4 Thuật toán Health check

    – Thuật toán này xác định máy chủ sẵn sàng xử lý request để gửi request đến server , điều này tránh được việc phải loại bỏ thủ công một máy chủ không sẵn sàng xử lý.

    – Các hoạt động của thuật toán này là nó sẽ gửi một kết nối TCP đến máy chủ , nếu như máy chủ đó lắng nghe trên địa chỉ và port đã cấu hình thì nó mới gửi request đến cho server xử lý.

    – Đối với các máy chủ cơ sở dữ liệu thì health check không thể làm điều này.

    + Tại file /etc/nginx/conf.d/upstream ta sẽ khai báo cấu hình như sau:

    upstream backends_01 {
       server 10.10.10.10:7001 max_fails=3 fail_timeout=5s;
       server 10.10.10.15:7001;
       server 10.10.10.20:7001;
    }

    2.3 Cấu hình vhost

    – Để sử dụng được file cấu hình dưới dây bạn cần tiến hành cấu hình và cài đặt thêm các yêu cầu sau đây

    + Để client truy cập sử dụng SSL bạn có thể sử dụng SSL bạn mua từ các nhà cung cấp khác hoặc sử dụng SSL miễn phi bằng cách cài đặt thêm SSL Let’s Encrypt.

    + Tạo thư mục và các file log.

    2.3.1 Cài đặt và cấu hình

    – Mục dích dùng để mã hóa các yêu cầu từ phía client đến server.

    # sudo yum install certbot -y

    – Để phát hành chứng chỉ SSL Let’s Encrypt cho domain có rất nhiều cách:

    # service nginx stop
    # certbot certonly --standalone -d weblogic.system.info.vn --staple-ocsp -m admin@weblogic.system.info.vn --agree-tos

    + File SSL được lưu trữ tại đường dẫn: /etc/letsencrypt/live/weblogic.system.info.vn/

    [root@weblogic ~]# ls /etc/letsencrypt/live/weblogic.system.info.vn/
    fullchain.pem privkey.pem

    2.3.2  Tạo thư mục và các file log

    # mkdir -p /var/log/nginx/weblogic.system.info.vn
    # cd /var/log/nginx/weblogic.system.info.vn
    # touch error.log access.log

    2.3.3 File cấu hình Vhost cơ bản

    + Tạo file tương ứng /etc/nginx/conf.d/<ten file>.conf File này sẽ khai báo các cấu hình vhost của backends như IP, server name và Port client truy cập, access_log, access_log, SSL,…

    + Bạn có thể tạo nhiều file cấu hình khác nhau cho cụm server cần load balancing ở đây mình sử dụng cụm upstream backends_01 được khai báo ở trên:

    # vi /etc/nginx/conf.d/weblogic.system.info.vn.conf
    server {
       # Listen on port 80 and 443 on both IPv4 and IPv6
       listen 80;
       listen 443 ssl;
       #listen [::]:80 ipv6only=on;
       #listen [::]:443 ipv6only=on ssl;
    
       # Server name
       server_name weblogic.system.info.vn;
    
       #Log
       access_log /var/log/nginx/weblogic.system.info.vn/access.log;
       error_log /var/log/nginx/weblogic.system.info.vn/error.log;
    
       # Enable SSL
       ssl_certificate /etc/letsencrypt/live/weblogic.system.info.vn/fullchain.pem;
       ssl_certificate_key /etc/letsencrypt/live/weblogic.system.info.vn/privkey.pem;
       ssl_session_timeout 5m;
       ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
       ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
       ssl_prefer_server_ciphers on;
    
       # Proxy
       proxy_redirect off;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header Host $http_host;
    
       location / {
       proxy_pass http://backends_01;
       }
    }

    – Kiểm tra file cấu hình

    # nginx -t
    [root@weblogic ~]# nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful

    – Restart nginx để áp dụng cấu hình Vhost

    # service nginx restart
    • Ngoài ra bạn có thể tham khảo qua bài viết cài đặt và triển khai HAProxy load balancing server.

    Chúc các bạn thành công!

    =============================
    * 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/Zalo: 0902912888
    👨 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

    =============================
    oracle tutorial, 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,sql tutorial, khóa học pl/sql tutorial, 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 RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

    ĐỌC NHIỀU

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