Image default
Máy Tính

Tại Sao Tôi Chọn HAProxy Thay Vì Các Reverse Proxy Khác Cho Hệ Thống Tự Host?

Trong hành trình khám phá thế giới tự host ứng dụng, tôi đã trải nghiệm hầu hết mọi giải pháp reverse proxy mà bạn có thể kể tên. Từ Nginx Proxy Manager đến Caddy, các tùy chọn dựa trên WireGuard khác nhau, và những giải pháp tức thời như Tailscale Funnel hay Cloudflare Tunnel, mỗi cái đều có những ưu và nhược điểm riêng. Một số có các tính năng nâng cao được tích hợp sẵn, trong khi số khác lại cần vô số plugin để xây dựng công cụ bạn cần. Mặc dù tôi đã sử dụng chúng trong một thời gian dài, nhưng kiến thức về cách chúng hoạt động thường trôi tuột khỏi tâm trí tôi ngay khi tôi ngừng cấu hình chúng.

Tôi hiểu khái niệm chung, nhưng tôi không thể nhớ cách mỗi dịch vụ hoạt động một khi tôi ngừng sử dụng. Nhiều bước cấu hình thường là “gửi cổng 3000 đến cổng 3000 ở kia,” và điều đó luôn khiến tôi cảm thấy như một kiểu dịch chuyển tức thời. Cho đến khi tôi bắt đầu sử dụng HAProxy. HAProxy được thiết kế như một bộ cân bằng tải (load balancer) nhưng cũng là một giải pháp reverse proxy tuyệt vời, và mọi thứ bắt đầu có ý nghĩa hơn. Nó sử dụng một mô hình cấu hình cho phép bộ não tôi hình dung từng giai đoạn của những gì đang xảy ra, như thể tôi có thể nhìn thấy các sợi cáp Ethernet vật lý giữa các máy chủ, và mọi thứ chỉ đơn giản là khớp với nhau.

Máy chủ Pterodactyl đang chạy Minecraft, minh họa cho ứng dụng tự host.Máy chủ Pterodactyl đang chạy Minecraft, minh họa cho ứng dụng tự host.

1. HAProxy Cực Nhanh

Được thiết kế cho hiệu suất, hiệu quả và độ trễ thấp

Bạn có thể mong đợi một chương trình được nhiều doanh nghiệp lớn sử dụng làm bộ cân bằng tải giữa các máy chủ của họ sẽ phải nhanh, có khả năng xử lý nhiều gói tin cùng lúc. Nhưng tôi không chỉ nói về thông lượng. Đối với tôi, HAProxy nhanh chóng để cấu hình ngay từ đầu, với một reverse proxy đầy đủ chức năng bao gồm SSL offloading, hai frontends (cho lưu lượng HTTP và HTTPS), và cấu hình backend có thể được thực hiện trong thời gian ngắn hơn nhiều so với một số gói phần mềm có giao diện đồ họa (GUI) mà tôi đã sử dụng gần đây.

Một phần lý do là vì đây là công nghệ đã trưởng thành và tồn tại từ lâu, vì vậy có rất nhiều tài nguyên chuyên sâu để tôi tìm hiểu, và quan trọng hơn, rất nhiều bài đăng trên diễn đàn chi tiết các bước khắc phục sự cố cho bất kỳ vấn đề nào tôi có thể gặp phải. Đó không phải là điều tôi có thể tin tưởng với bất kỳ reverse proxy mới hơn nào, và tôi thực sự đánh cao việc không phải tìm kiếm qua các bình luận trên GitHub để tìm giải pháp thực sự.

Tủ mạng chứa các thiết bị chuyển mạch (switches) và server, thể hiện hạ tầng mạng.Tủ mạng chứa các thiết bị chuyển mạch (switches) và server, thể hiện hạ tầng mạng.

2. Có Plugin OPNsense Tiện Lợi

Cách dễ nhất để tôi sử dụng các công cụ mạng

Không phải tôi lười biếng, nhưng việc một công cụ xuất hiện trên nền tảng mà tôi đã và đang sử dụng là một lý do lớn khiến tôi chọn nó thay vì một dịch vụ khác. OPNsense có các plugin cho HAProxy, cùng với một vài reverse proxy khác, điều này khiến tôi có nhiều khả năng sử dụng nó hơn. Không chỉ là sự dễ sử dụng và khả năng quay lại OPNsense nếu có vấn đề với cấu hình nhờ các quy tắc khóa, mà còn có điều gì đó về việc chạy reverse proxy trên router và firewall của tôi khiến tôi hài lòng.

Giao diện cài đặt plugin HAProxy trên OPNsense, minh họa sự tích hợp dễ dàng.Giao diện cài đặt plugin HAProxy trên OPNsense, minh họa sự tích hợp dễ dàng.

Tôi có thể có dịch vụ DNS động, client ACME để tự động gia hạn chứng chỉ Let’s Encrypt nhằm đảm bảo SSL luôn sẵn sàng. Tôi có thể sử dụng Unbound cho split DNS, để reverse proxy mà tôi thiết lập có thể truy cập được từ cả bên trong mạng của tôi và từ các thiết bị từ xa, với hệ thống mà tôi quen thuộc nhất. Không cần phải nhớ thêm thông tin đăng nhập hoặc một địa chỉ IP khác của một Docker container đang chạy trên NAS của tôi, thứ có thể không chạy do sự cố mất điện và NAS có thể không tự động khởi động lại khi có điện. Có thể đó không phải là thực hành tốt nhất, nhưng đó là cách hoạt động hiệu quả đối với tôi, và điều đó rất có ý nghĩa.

Bộ chuyển mạch mạng (network switch) kết nối NAS và router, đại diện cho hệ thống mạng gia đình.Bộ chuyển mạch mạng (network switch) kết nối NAS và router, đại diện cho hệ thống mạng gia đình.

3. Kiến Trúc HAProxy Rõ Ràng, Dễ Hiểu

Cách thiết lập server vật lý, pool và dịch vụ có ý nghĩa hơn với tôi

Tôi đã sử dụng rất nhiều giải pháp reverse proxy, bao gồm Nginx Proxy Manager, Caddy, Traefik, Pangolin, Nginx và những thứ như Tailscale Funnel, có thể thay thế tạm thời khi cần. Tuy nhiên, tôi nhận thấy rằng tôi hoặc phải dành rất nhiều thời gian để tìm hiểu lý do tại sao chúng hoạt động, hoặc toàn bộ quá trình bị trừu tượng hóa trong một loạt các cú nhấp chuột trên GUI, khiến tôi không có bất kỳ khoảnh khắc học hỏi thực sự nào. Một phần chắc chắn là do cách bộ não tôi hoạt động, nhưng tôi thích học bằng hình ảnh, như sơ đồ mạng và những thứ tương tự.

Các reverse proxy được thiết kế cho việc sử dụng container, như Caddy hoặc Traefik, giúp dễ dàng thiết lập các kiến trúc phức tạp, nhưng tôi lại kém trong việc tạo tài liệu và bộ não tôi thậm chí còn kém hơn trong việc ghi nhớ cách mọi thứ kết nối với nhau. Nếu không có bối cảnh của các microservices mà tôi đang thiết lập, tôi thực sự gặp khó khăn. Có lẽ đó là lý do tại sao tôi thích máy ảo (VM) hơn container ngay từ đầu, vì chúng vẫn mang lại cảm giác vật lý, mặc dù không phải vậy.

HAProxy sắp xếp chuỗi reverse proxy theo một cách mà bộ não tôi có thể xử lý. Một máy chủ thực (real server) cho mỗi dịch vụ có ý nghĩa hoàn hảo đối với tôi, hoặc nhiều máy chủ thực nếu tôi cần thiết lập cân bằng tải. Sau đó, việc có một pool backend làm nơi để nhóm các máy chủ thực, đóng vai trò là lớp quản lý để gửi lưu lượng truy cập từ frontend, cũng có ý nghĩa.

Việc triển khai map files dạng văn bản thuần túy để khớp các tên miền đầy đủ đủ điều kiện (FQDN) đến các pool backend riêng lẻ cũng vậy. Việc tách ingress thành các quy tắc frontend riêng biệt cũng giúp tôi dễ dàng hơn rất nhiều. Tôi thích việc lắp ráp hệ thống như những khối xây dựng nhỏ. Đôi khi, các dịch vụ khác cố gắng thiết lập mọi thứ trong một tệp duy nhất, và bộ não tôi phản đối cách tiếp cận đó.

Giao diện Portainer quản lý nhiều container đang chạy, minh họa việc quản lý ứng dụng.Giao diện Portainer quản lý nhiều container đang chạy, minh họa việc quản lý ứng dụng.

4. HAProxy Được Xây Dựng Cho Sự Ổn Định

Tính sẵn sàng cao, cân bằng tải, kiểm tra sức khỏe và duy trì phiên theo tiêu chuẩn

Tôi chưa bao giờ quá yêu thích triết lý ‘làm nhanh, phá vỡ mọi thứ’ của ngành lập trình, và triết lý đó cũng mở rộng sang mạng gia đình và home lab của tôi. Container rất tốt để thử nghiệm, nhưng tôi không thích chúng về lâu dài, vì tôi có xu hướng quên rằng chúng đang chạy và tắt chúng đi. Tuy nhiên, tôi thích ảo hóa, và các máy ảo lồng nhau không làm tôi bối rối, nhưng có điều gì đó về Docker và các container khác mà tôi vẫn chưa thể hiểu rõ.

Điều đó khiến tôi thích các dịch vụ hệ thống như HAProxy hơn, vì tôi biết rằng khi thiết bị đó bật, dịch vụ cũng sẽ hoạt động. Tôi thích biết rằng tôi có thể khởi động một máy ảo thứ hai, với các dịch vụ tương tự, và thêm nó vào backend của HAProxy để đạt được tính sẵn sàng cao (High Availability) và cân bằng tải (Load Balancing). Mặc dù tôi không thực hiện nhiều thứ gây đủ lưu lượng truy cập cho một dịch vụ để cần cân bằng tải, nhưng thật tốt khi biết rằng nó có ở đó, cách nó hoạt động và cách thiết lập nó nếu tôi cần.

Tủ server trong phòng lab tại gia (home lab), thể hiện hạ tầng tự host.Tủ server trong phòng lab tại gia (home lab), thể hiện hạ tầng tự host.

Giá đỡ mạng (network rack) với thiết bị đèn RGB và kết nối 10GbE, biểu tượng cho mạng hiệu suất cao.Giá đỡ mạng (network rack) với thiết bị đèn RGB và kết nối 10GbE, biểu tượng cho mạng hiệu suất cao.

HAProxy vẫn tuyệt vời cho nhiều tình huống mạng, bao gồm cả của tôi

Sau khi sử dụng rất nhiều giải pháp reverse proxy, tôi nghĩ tôi sẽ gắn bó lâu dài với HAProxy. Mặc dù tôi đánh giá cao một số tính năng nâng cao của các giải pháp dựa trên WireGuard, nhưng chúng không cung cấp cho tôi nhiều cái nhìn sâu sắc về những gì đang xảy ra trong mạng home lab của tôi. Tôi đánh giá cao việc HAProxy trình bày mọi thứ một cách rõ ràng và logic. Ngoài ra, việc tìm hiểu về các công cụ được sử dụng trong môi trường doanh nghiệp cũng rất bổ ích, và tôi cảm thấy mình có thể nắm bắt các quy trình đằng sau reverse proxy tốt hơn khi tôi phải tự tay thực hiện các công việc cấu hình.

Cận cảnh khay ổ đĩa của NAS TerraMaster T6-423, biểu thị thiết bị lưu trữ trong hệ thống tự host.Cận cảnh khay ổ đĩa của NAS TerraMaster T6-423, biểu thị thiết bị lưu trữ trong hệ thống tự host.

Bạn có kinh nghiệm với HAProxy hoặc các giải pháp reverse proxy khác không? Hãy chia sẻ những suy nghĩ và trải nghiệm của bạn trong phần bình luận bên dưới!

Related posts

Những Linh Kiện PC Bạn Có Thể Tiết Kiệm Chi Phí Mà Không Ảnh Hưởng Hiệu Năng

Administrator

Bài Học Xương Máu Về Nguồn Máy Tính (PSU): Chọn Mua & Sử Dụng Để PC Bền Bỉ

Administrator

Ninite: Giải pháp cài đặt ứng dụng Windows hàng loạt miễn phí và không bloatware

Administrator