Computer >> Máy Tính >  >> Hệ thống >> Linux

Sử dụng HAProxy làm Bộ cân bằng tải cho Nginx

Trong bài viết này, chúng tôi sẽ hướng dẫn cách định cấu hình HAProxy làm bộ cân bằng tải cho hai Nginx máy chủ web (bạn có thể thay thế nó bằng Apache). CentOS được sử dụng như một hệ điều hành chủ trong mọi trường hợp.

HAProxy là một phần mềm máy chủ để cung cấp tính khả dụng cao và cân bằng tải cho các ứng dụng TCP và HTTP bằng cách phân phối các yêu cầu đến giữa nhiều máy chủ phụ trợ. HAProxy được sử dụng trên nhiều tài nguyên phổ biến như Twitter , Instagram , Github , Amazon, Vân vân.

HAProxy được cài đặt trên một máy chủ riêng biệt chấp nhận các yêu cầu của khách hàng và chuyển hướng chúng đến các máy chủ web Nginx. Bạn có thể xem kiến ​​trúc hệ thống chung bên dưới:

Sử dụng HAProxy làm Bộ cân bằng tải cho Nginx

Cấu hình Nginx trên Máy chủ Phụ trợ

Chúng tôi bắt đầu với việc cài đặt và cấu hình Nginx trên máy chủ web của chúng tôi, tải sẽ được cân bằng giữa. Cài đặt kho lưu trữ EPEL và nginx bằng yum (hoặc dnf trên RHEL / CentOS 8):

#yum install epel-release -y
#yum install nginx -y

Sau đó, trong nginx . conf các tệp chỉ định rằng máy chủ chỉ phải xử lý các yêu cầu từ máy chủ HAProxy và máy chủ phụ trợ:

Máy chủ phụ trợ 1:

 máy chủ {nghe current_server_IP_address:80 default_server; cho phép thứ_bạc_bên_bài_sách_IP_địa_chỉ; cho phép IP_haproxy; Phủ nhận tất cả; tên máy chủ _; root / usr / share / nginx / html; # Tải tệp cấu hình cho khối máy chủ mặc định. bao gồm /etc/nginx/default.d/*.conf; vị trí / {} 

Máy chủ phụ trợ 2:

 máy chủ {nghe current_server_IP_address:80 default_server; cho phép first_backend_server_IP_address; cho phép IP_haproxy; Phủ nhận tất cả; tên máy chủ _; root / usr / share / nginx / html; # Tải tệp cấu hình cho khối máy chủ mặc định. bao gồm /etc/nginx/default.d/*.conf; vị trí / {} 

Tệp cấu hình nginx là mặc định, chúng tôi vừa thêm máy chủ vào IP lắng nghe và từ chối quyền truy cập vào tất cả mọi người ngoại trừ máy chủ của chúng tôi sử dụng allow từ chối chỉ thị.

Để máy chủ web có thể bắt đầu hoạt động, hãy mở cổng HTTP của tường lửa bằng firewalld hoặc iptables:

#firewall-cmd --permanent –add-service=http
#firewall-cmd –reload

Thực hiện kiểm tra thử nghiệm trên bất kỳ máy chủ phụ trợ nào của bạn:

# curl IP_of_the_second_server

  ở đây bạn sẽ nhận được một html tệp 

Máy chủ đã trả về một tệp chỉ mục nginx tiêu chuẩn. Để làm cho việc kiểm tra thuận tiện hơn, tôi đã thay đổi nội dung của tệp chỉ mục trên mỗi máy chủ phụ trợ để xem trong trình duyệt của tôi, máy chủ nào đã xử lý một yêu cầu hiện tại.

Tệp chỉ mục nginx nằm trong / usr / share / nginx / html / .

Cấu hình bộ cân bằng tải HAProxy

Hãy cài đặt và định cấu hình HAProxy trên máy chủ sẽ được sử dụng làm bộ cân bằng tải.

Cài đặt HAProxy:
#yum install epel-release -y
#yum install haproxy -y

 Đang chạy giao dịch Cài đặt:haproxy-1.5.18-9.el7.x86_64 1 / 1Xác minh:haproxy-1.5.18-9.el7.x86_64 1/1 Cài đặt:haproxy.x86_64 0:1.5.18-9.el7Complete! 

Để bật HAProxy, bạn cần thêm Đã bật =1 vào / etc / default / haproxy tệp:

#nano /etc/default/haproxy

Sử dụng HAProxy làm Bộ cân bằng tải cho Nginx

Bây giờ chúng ta hãy chuyển sang cấu hình HAProxy. Trong cấu hình đơn giản nhất của chúng tôi, máy chủ cân bằng tải sẽ xử lý tất cả các yêu cầu HTTP và lần lượt gửi chúng đến các máy chủ phụ trợ:

#nano /etc/haproxy/haproxy.cfg

 log / dev / log local0 chroot / var / lib / haproxy pidfile /var/run/haproxy.pid maxconn 4000 người dùng haproxy nhóm haproxy daemondefaults mode http log global option httplog option redispatch retries 3 timeout http-request 10s timeout queue 1m hết thời gian chờ kết nối 10 giây máy khách hết thời gian chờ 1 phút máy chủ hết thời gian chờ 1 phút http-keep-live kiểm tra thời gian chờ 10 giây 10 giây maxconn 3000frontend www bind balancer_IP_address:80 default_backend nginx_poolbackend nginx_pool cân bằng chế độ roundrobin http server web1 IP_ofond_the_first_backend_server:80 check server web2 IP_server:80 check server web2 IP_prever 

Sau khi lưu cấu hình của bạn, hãy kiểm tra cú pháp haproxy.cfg:

#haproxy -f /etc/haproxy/haproxy.cfg -c

Nếu ổn, bạn sẽ nhận được thông báo như sau:

 Tệp cấu hình hợp lệ 

Sau đó khởi động lại HAProxy và thêm nó vào phần khởi động Linux. Và mở cổng HTTP trong tường lửa.

#systemctl restart haproxy
#systemctl enable haproxy
#firewall-cmd —permanent –add-service=http
#firewall-cmd –reload

Như vậy, bộ cân bằng tải đã được cấu hình. Hãy kiểm tra bằng cách mở địa chỉ IP máy chủ HAProxy trong trình duyệt:

Sử dụng HAProxy làm Bộ cân bằng tải cho Nginx

Như bạn có thể thấy, cả hai máy chủ đã lần lượt trả về nội dung, vì vậy bộ cân bằng đang hoạt động.

Tham số tệp cấu hình Haproxy.cfg

Hãy xem xét các ví dụ chính về thuật toán HAProxy:

  • roundrobin - là thuật toán mặc định, lần lượt gửi các yêu cầu đến các máy chủ. Chúng tôi đã sử dụng phương pháp này trong ví dụ của mình.
  • leastconn - chọn một máy chủ có số lượng kết nối hoạt động ít nhất. Nó được khuyến khích áp dụng cho các dự án, trong đó các phiên sử dụng lâu dài.
  • source - chọn một máy chủ dựa trên băm địa chỉ IP của người dùng. Trong chế độ này, một ứng dụng khách sẽ kết nối cùng một máy chủ web nếu địa chỉ IP của người dùng không thay đổi.

Hãy mô tả một số thông số tệp cấu hình.

Toàn cầu khối:

  • log - ghi log vào / dev / log save local0 dưới dạng giá trị đối tượng
  • chroot - cài đặt bảo mật, khóa HAProxy vào thư mục được chỉ định
  • maxconn - số lượng tối đa các kết nối đồng thời cho mỗi quá trình
  • daemon - chạy quy trình dưới dạng daemon

Mặc định khối. Khối này đặt các tham số mặc định cho tất cả các phần khác theo sau nó:

  • log - tập hợp nhật ký nào là các mục được ghi vào (trong trường hợp này, toàn cục có nghĩa là các tham số được đặt trong phần chung được sử dụng)
  • mode - đặt giao thức truyền thông và có một trong các giá trị sau:tcp, http hoặc health
  • retries - số lần cố gắng kết nối với máy chủ trong trường hợp không thành công
  • option httplog - định dạng nhật ký được sử dụng nếu HAProxy đang ủy quyền các yêu cầu HTTP
  • option redispatch - cho phép một chương trình kết thúc và bắt đầu lại một phiên trong trường hợp máy chủ bị lỗi
  • contimeout - thời gian chờ tối đa cho đến khi kết nối với máy chủ được thiết lập thành công

Ngoài ra còn có rất nhiều thông số liên quan đến thời gian chờ khác nhau.

Thu thập số liệu thống kê HAProxy

Thêm khối thống kê vào tệp cấu hình:

 nghe thống kê bind:10001 stats enable stats uri / haproxy_stats stats auth admin:admin 

Mô tả:

  • bind - cổng bạn có thể xem số liệu thống kê
  • stats enable - bật báo cáo thống kê
  • stats uri - đặt địa chỉ trang thống kê
  • stats auth - đăng nhập và mật khẩu để truy cập
Bạn có thể chỉ định bất kỳ cổng TCP nào bạn thích. Nếu một trong những chỉ định ở trên bận hoặc không phù hợp với bạn.

Chấp nhận kết nối đến trên cổng được chỉ định ở trên trong tường lửa của bạn:

firewall-cmd --permanent –add-port=10001/tcp
firewall-cmd –reload

Để xem các báo cáo HAProxy, hãy nhấp vào liên kết sau:

https://hostname_haproxy:10001/haproxy_stats

Sử dụng HAProxy làm Bộ cân bằng tải cho Nginx Mở địa chỉ IP của trình cân bằng trong trình duyệt của bạn và bắt đầu nhấn F5 . Thống kê HAproxy sẽ thay đổi.

Trong bài viết này, chúng tôi đã xem xét cấu hình HAProxy cơ bản. Có nhiều trường hợp sử dụng mô-đun HAProxy.

Trong lược đồ của chúng tôi, máy chủ HAProxy cân bằng tải trở thành một điểm lỗi duy nhất. Để tăng khả năng chịu lỗi của dịch vụ web của bạn, bạn có thể thêm một máy chủ HAProxy khác và triển khai cấu hình bộ cân bằng tải có tính khả dụng cao bằng Keepalived. Bạn sẽ nhận được một lược đồ như sau:

Sử dụng HAProxy làm Bộ cân bằng tải cho Nginx