Tìm hiểu thông số kỹ thuật frontend, backend vào HAProxy, cài đặt và thực hiện nó để cân đối tải hoặc làm Server trung gian đưa hướng các request
Nhiều bạn đã quen dùng nginx làm reverse proxy (server trung gian) hoặc balance proxy (cân bởi tải) công dụng với giao thức HTTPD(S).Ngoài nginx thì HAProxy cũng thỏa mãn nhu cầu được các yêu cầu trên với năng suất cao đồng thời còn có các tác dụng phức tạp trên cả các giao thức TPC,nó làm Proxy được cho nhiều thương mại & dịch vụ khác nhau. Nhiều hãng technology nổi giờ có sử dụng HAProxy như Twitter, Intagram ...
Bạn đang xem: Haproxy là gì
Cài đặt HAProxy
Cài bỏ trên CentOS 7/RHEL 7
# yum -y update# yum -y install haproxy# systemctl start haproxy# systemctl enable haproxy
File thông số kỹ thuật cho HAProxy tại /etc/haproxy/haproxy.cfg các thiết lập cấu hình cho nó được sửa đổi ở đây, mỗi lúc chỉnh sửa hoàn thành cầnkhởi hễ lại (restart) để có hiệu lực (systemctl restart haproxy)
Cài để trên Ubuntu
sudo apt-get -y updatesudo apt-get -y install haproxy
Cấu hình HAProxy cùng thuật toán cân bằng tải
Cấu hình phương thức làm vấn đề của HAProxy trải qua việc chỉnh sửa file /etc/haproxy/haproxy.cfg, cơ bạn dạng là bạn định nghĩa ra phần lớn khốinhận phân tích những yêu cầu (Request) nhờ cất hộ đến gọi chúng là frontend, các yêu mong này được đưa hướng tương thích đến một khối hotline là backend, ởbackend các thuật toán về thăng bằng tải được cách xử lý và rất có thể các Request được chuyển cho một Server đích thực sau HAProxyCác khối backend
Bạn có thể định nghĩa ra các backend, từng backend bao gồm đặt một cái tên nhằm fontend nào phải dùng thì áp dụng tên này. Vào khối này cần chỉ ra:
Thuật toán cân bằn download với từ khóa là balance và những server nhấn Request và một số thiết lập cấu hình khác ví dụ:
backend name-backend # bắt đầu định nghĩa backend với thương hiệu name-backend balance roundrobin # thuật toán cân bằng tải thực hiện mode http # chính sách cần bằng tải (còn bao gồm mode tcp) server server1 mydomain.com:80 check # server1 (chỉ ra bởi domain và cổng) vps server2 IP:80 check # server2 (chỉ ra bằng IP với cổng) # chữ check ở cuối là yêu ước HAProxy bình chọn serverMột số thuật toán thăng bằng tải:
roundrobin chọn server xoay vòng (request này đến server này, thì resquest tiếp theo sau cho hệ thống khác ...) leastconn chuyển yêu cầu cho server gồm ít kết nối nhất source hệ thống được chọn nhờ vào IP của user!check khai báo ở server là yêu ước HAProxy liên tục kiểm tra xem server đó còn sống (phản hồi gói tin) không, để đảm bảo request được gởi đếnserver vẫn đang còn sống!
Các khối fontend
Khối này nhấn phân tích những request và đưa nó đến khối backend thích hợp. Hoàn toàn có thể định nghĩa nhiều khối frontend và có đặt tên mang lại khối.Các tham số đề xuất chỉ ra bao gồm có những thứ như IP, cổng (từ khóa bind), định nghĩa các điều kiện với từ khóa alc (Access control list),căn cứ vào những alc Request được gửi mang lại backend thích phù hợp với từ khóa use_backend, ví dụ:
frontend name-frontend # ban đầu định nghĩa một frontend đặt tên là name-frontend bind *:80 # dìm phân tích các request gửi mang đến cổng 80 trường đoản cú IP ngẫu nhiên acl alc1 hdr_dom(host) -i testhaproxy1.com # định nghĩa alc1 là: nếu domain name truy vấn là testhaproxy1.com acl alc2 hdr_dom(host) -i testhaproxy2.com # có mang alc2 là: nếu domain name truy vấn là testhaproxy2.com use_backend name-backend if acl1 # đưa request mang đến backend mang tên name-backend nếu acl1 thỏa mãn nhu cầu use_backend other-backend if alc2 # đưa request mang lại backend mang tên other-backend nếu như acl2 thỏa mãn nhu cầu use_backend default_backend # chuyển request đến backend có tên default-backend giả dụ request chưa chuyển cho backend nào!Tóm lại, cơ bạn dạng cấu hình HAProxy là chúng ta viết ra những khối frontend, backend tương xứng với yêu ước của mình. Sau đó là một lấy ví dụ như chạy HAProxy trên Docker để chúng ta có thể thực hành soát sổ nó một bí quyết nhanh chóng!
HAProxy với Docker
Image Docker của HAproxy được cung ứng với tên haproxy (bản cuối haproxy:latest). Để bảo vệ chạy được container HAProxy cần có file config haproxy.cfg khi tạo thành thì copy (hoặc ánh xạ) vào folder /usr/local/etc/haproxy/haproxy.cfg của container. Hoàn toàn có thể chạy docker run với tham số -v nhằm ánh xạ tệp tin vào (xem ánh xạ file, thư mục vào container để biết phương pháp sử dụng).
Tuy nhiên tại chỗ này sẽ sử dụng kỹ thuật cùng với Dockerfile với docker-compose để triển khai chạy một container HAProxy.
Xem thêm: 1 Sao Donate Tiền Donate Như Thế Nào? Donate Là Gì
Trước tiên buộc phải đưa ra một yêu thương cầu đơn giản sau:
Tạo HAProxy chạy trên một container, lắng nghe những yêu cầu gửi mang lại cổng 80,443 (public 8080, 443)
Nếu truy cập bằng domain http://testhaproxy1.com:8080 thì request gửi mang đến yahoo.com:80 Nếu truy cập bằng domain http://testhaproxy2.com:8080 thì request gửi xoay vòng mang lại wikipedia.org:80, bing.com:80, google.com:80 Nếu truy vấn bằng https://testhaproxy1.com hoặc https://testhaproxy2.com thì gởi request cho wikipedia.org:443Giờ ta vẫn từng bước triển khai yêu mong trên:
Hãy tạo thành một thư mục khắc tên là haproxy để lưu các file. Đầu tiên trong folder đó tạo nên file haproxy.cfg với nội dung:
global maxconn 4096 # giới hạn liên kết đến Proxy daemon log 127.0.0.1 local0 log 127.0.0.1 local1 noticedefaults timeout connect 10s timeout client 30s timeout vps 30s log global mode http # mode tcp option httplog # option tcplog maxconn 3000 stats enable # option forwardfor # option http-server-close stats uri /haproxyStats # URL trang những thống kê stats auth admin:admin123 # user/pass truy vấn trang những thống kê http://localhost:8080/haproxyStats# FONTEND xử lý yêu ước gửi cho port 80frontend http-in bind *:80 acl host_test1 hdr_dom(host) -i testhaproxy1.com # nếu truy cập bằng domain testaproxy1.com acl host_test2 hdr_dom(host) -i testhaproxy2.com # nếu truy vấn bằng domain name testaproxy2.com use_backend bke_80_test1 if host_test1 # gửi mang đến backend bke_80_test1 nếu host_test1 thỏa mãn use_backend bke_80_test2 if host_test2 # gửi cho backend bke_80_test2 nếu như host_test2 thỏa mãn# FONTEND giải pháp xử lý yêu ước gửi đến port 443frontend https-in bind *:443 mode tcp # cơ chế cân bằng tải tcp option tcplog tcp-request inspect-delay 10s tcp-request content accept if req_ssl_hello_type 1 acl acl1 req.ssl_sni -m end testhaproxy1.com # nếu truy vấn bằng tên miền testaproxy1.com acl acl2 req.ssl_sni -m end testhaproxy2.com # nếu truy vấn bằng domain testaproxy1.com use_backend bke_443 if acl1 || acl2 # gởi request đến bke_443 ví như acl1 hoặc acl2 thỏa mãnbackend bke_80_test1 balance roundrobin option httpclose option forwardfor hệ thống server1 yahoo.com:80 checkbackend bke_80_test2 balance roundrobin option httpclose option forwardfor server server1 wikipedia.org:80 kiểm tra server server2 bing.com:80 kiểm tra server server3 google.com:80 check backend bke_443 mode tcp balance source option ssl-hello-chk server server1 wikipedia.org:443 kiểm tra #redirect scheme https if ! ssl_fc Dockerfile
Tạo file Dockerfile trong thư mục haproxy sinh hoạt trên, cùng với nội dung:
FROM haproxy:latestCOPY ./haproxy.cfg /usr/local/etc/haproxy/haproxy.cfgdocker-compose.yml tạo thành file này trong folder haproxy và câu chữ nhập vào như sau:
version: "3"services: xtlab-haproxy: build: context: . Container_name: haproxy restart: always hostname: haproxy ports: - "8080:80" # Mở cổng 8080 public -> 80 - "443:443" # Mở cổng 443 public -> 443Như vậy mọi thứ sẽ đủ, giờ hãy chạy thử bằng phương pháp đang làm việc thử mục haproxy sản xuất ở bên trên gõ:
docker-compose upVậy là đã tất cả container đang chạy, hãy kiểm tra bằng cách tạo cấu hình thiết lập 2 domain testhaproxy2.com và testhaproxy2.com trong file hosts (/ect/hosts của macOS, Linux) hoặc (C:WindowsSystem32Driversetchosts vào Windows)
127.0.0.1testhaproxy2.com127.0.0.1testhaproxy1.comGiờ trên trình duyệt bạn vào địa chỉ http://testhaproxy1.com:8080, hiệu quả backend bke_80_test1 nó đã đưa request mang lại yahoo.com

Vào địa chỉ http://testhaproxy2.com:8080, thì backend bke_80_test1 có tác dụng việc, các lần refesh add này thì chúng ta thấy nó vào trong 1 trong 3 hệ thống như 3 hình dưới đây: dịp thì nó chuyển request đên google.com, khi đến bing.com, lúc thì tới wikipedia.org (xem khối bke_80_test1 và định hướng cân bởi tải sinh sống trên để biết nguyên nhân lại thế)



Cuối thuộc vào địa chỉ cửa hàng https://testhaproxy.com:

Để theo dõi buổi giao lưu của HAProxy truy tìm cập địa chỉ cửa hàng http://testhaproxy2.com:8080/haproxyStats cùng với user/pass khai bảo ở tệp tin cấu hình
Kết luận
Qua lấy ví dụ trên đã biết phương pháp sử dụng HAProxy có tác dụng một server cân đối tải hoặc hệ thống trung gian. Từ bỏ đây chúng ta có thể ứng dụng nó nhận các request phân tích cùng chuyểnrequest đó đến những DOCKER CONTAINER thích hợp trong khối hệ thống của bạn. Ứng dụng đơn giản nhất, bạn có không ít domain, mỗi domain lại chạy vận dụng trên một container Docker khác biệt vậy thì cần sử dụng HAProxy làm server trung gian lắng tai cổng (80, 443 http, https) tùy thuộc domain name nào thì gửi yêu ước đến container đó.