Tới nội dung
Cloudj

Hướng dẫn GPU

VPS làm frontend cho máy chủ GPU: API ổn định trên mọi host GPU

Dùng VPS làm frontend cho máy chủ GPU: giữ tên miền, TLS, xác thực và hàng đợi trên VPS cố định, nối GPU qua SSH tunnel, đổi GPU mà không cần sửa DNS.

Cập nhật · 4 phút đọc

Dùng VPS làm frontend cho máy chủ GPU giải quyết một vấn đề mà đội nào cũng gặp khi mô hình bắt đầu phục vụ người dùng thật: GPU là phần dễ thay đổi nhất. Trên Cloudj, instance GPU chạy trên một máy host độc lập có ngày "available until", không có cơ chế tự chuyển máy nếu host mất kết nối, và đơn giản là tuần sau bạn có thể tìm được card tốt hơn. Một VPS nhỏ đứng yên một chỗ cho người dùng một địa chỉ ổn định, trong khi GPU phía sau có thể đến rồi đi. Bài này trình bày kiến trúc, SSH tunnel nối hai bên, cấu hình Nginx, và quy trình đổi GPU mà không đụng tới DNS.

Mô hình này đặc biệt hợp với các đội nhỏ ở Việt Nam đang chạy chatbot cho shop Zalo, Shopee hay TikTok Shop: khách hàng gọi vào một tên miền cố định, còn GPU phía sau thì đổi linh hoạt theo giá và tình trạng máy. Nếu bạn còn phân vân có cần GPU hay không, bài instance GPU hay VPS cho AI sẽ giúp.

Kiến trúc

người dùng -> DNS -> VPS (Nginx: TLS, xác thực, giới hạn, hàng đợi) -> SSH tunnel -> instance GPU (model server trên 127.0.0.1)

VPS giữ mọi thứ cần ổn định: tên miền, chứng chỉ TLS, API key hoặc đăng nhập, giới hạn request, log, hàng đợi job và có thể cả cơ sở dữ liệu. Instance GPU chỉ chạy model server, lắng nghe trên localhost nên không bao giờ lộ trực tiếp ra ngoài.

Vì sao dùng SSH tunnel? Instance GPU được truy cập qua SSH bằng key, với host và cổng hiện trong tab Connection. Cổng không phải lúc nào cũng là 22. Tunnel tận dụng chính quyền truy cập đó, mã hóa lưu lượng và không cần mở thêm cổng nào phía GPU.

Chọn nơi đặt VPS

Đặt VPS gần người dùng, vì mọi request đều đi qua nó. VPS của Cloudj có thành phố cố định, khác với GPU chỉ hiển thị ở cấp quốc gia. Các lựa chọn phổ biến:

Khi đó GPU có thể ở bất kỳ đâu hợp với công việc. Với dịch vụ tương tác, hãy chọn GPU cùng khu vực với VPS để chặng nối thêm ngắn; bài inference LLM trên GPU Singapore có cấu hình tương ứng cho châu Á. Tìm GPU trên trang triển khai với mã quốc gia của khu vực đó; tình trạng máy thay đổi trong ngày.

Bước 1: chuẩn bị VPS

Bắt đầu từ một máy chủ đã được gia cố: user không phải root, SSH key, tường lửa chỉ mở SSH, HTTP và HTTPS, tự cập nhật bản vá bảo mật. Bài checklist bảo mật VPS mới đi qua từng bước. Sau đó cài Nginx và lấy chứng chỉ TLS; bài Nginx reverse proxy với SSL hướng dẫn chi tiết.

Tạo một SSH key riêng trên VPS dành cho tunnel và thêm public key vào tài khoản Cloudj, để chọn được key này khi triển khai instance GPU. Key mới thêm có thể mất tới ba phút mới được chấp nhận sau khi instance khởi động.

Bước 2: chạy model server trên GPU

Trên instance GPU, khởi động server lắng nghe trên localhost, ví dụ cổng 8000:

vllm serve <hf-model-id> --host 127.0.0.1 --port 8000

Server nào cũng làm tương tự: API tương thích OpenAI, backend tạo ảnh, dịch vụ giọng nói. Hãy chạy trong tmux hoặc trình quản lý tiến trình để không mất khi rớt phiên SSH.

Bước 3: giữ tunnel luôn sống bằng systemd

Trên VPS, tạo một service giữ tunnel mở và tự khởi động lại nếu bị ngắt:

[Unit]
Description=SSH tunnel to current GPU
After=network-online.target

[Service]
User=tunnel
EnvironmentFile=/etc/gpu-tunnel.env
ExecStart=/usr/bin/ssh -N -o ServerAliveInterval=30 -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes -o StrictHostKeyChecking=accept-new -i /home/tunnel/.ssh/gpu -p ${GPU_PORT} -L 127.0.0.1:9000:127.0.0.1:8000 root@${GPU_HOST}
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Lưu thành /etc/systemd/system/gpu-tunnel.service, ghi GPU_HOST và GPU_PORT vào /etc/gpu-tunnel.env, rồi chạy systemctl enable --now gpu-tunnel. Giờ cổng 9000 trên VPS dẫn tới cổng 8000 trên GPU.

Bước 4: trỏ Nginx vào tunnel

location /v1/ {
    auth_request /auth;
    proxy_pass http://127.0.0.1:9000;
    proxy_http_version 1.1;
    proxy_buffering off;
    proxy_read_timeout 300s;
}

proxy_buffering off giúp token stream tới client ngay khi được sinh ra, còn timeout đọc dài giúp các lượt sinh chậm không bị cắt. Dùng kiểu xác thực phù hợp: auth_request tới ứng dụng của bạn, basic auth, hoặc API key do một service nhỏ kiểm tra. Tài liệu module proxy của Nginx liệt kê mọi directive.

Đổi GPU mà không sửa DNS

Khi host sắp tới ngày "available until", host mất kết nối, hoặc bạn muốn đổi card:

  1. Triển khai instance GPU mới và khởi động model server trên đó.
  2. Thử trực tiếp qua một tunnel tạm từ VPS.
  3. Sửa /etc/gpu-tunnel.env với host và cổng mới, rồi systemctl restart gpu-tunnel.
  4. Gửi thử một request qua URL công khai.
  5. Chép những gì cần từ instance cũ, rồi xóa nó.

Người dùng nhiều nhất chỉ thấy vài giây thử lại. Nếu có hàng đợi trên VPS, request sẽ chờ thay vì báo lỗi. Muốn chắc chắn hơn, chạy hai instance GPU với hai tunnel và khai báo cả hai trong khối upstream của Nginx.

Những giới hạn cần nhớ

Mọi host GPU đều độc lập, không có SLA phần cứng, nên mô hình này giảm gián đoạn chứ không xóa bỏ được. Hãy sao lưu trọng số và cấu hình, và viết script dựng GPU để một instance mới sẵn sàng trong vài phút. Giá GPU theo thời gian thực có trên GPU cloud. VPS có thể trả theo giờ hoặc theo kỳ, còn GPU trừ theo phút từ số dư tài khoản mà bạn nạp bằng chuyển khoản VND.

Câu hỏi thường gặp

Sao không trỏ DNS thẳng vào GPU?

Host GPU thay đổi. Mỗi lần đổi là một lần sửa DNS, cấp lại chứng chỉ và gián đoạn dịch vụ. VPS giữ một địa chỉ cố định.

Tunnel có làm tăng độ trễ nhiều không?

Nó cộng thêm khoảng cách mạng giữa VPS và GPU. Với dịch vụ tương tác, hãy đặt cả hai cùng khu vực.

VPS tự chạy mô hình được không?

Không phải với tác vụ cần GPU. VPS lo TLS, xác thực và hàng đợi; GPU chạy mô hình.

Nên chọn vị trí VPS nào?

Nơi gần đa số người dùng nhất: Singapore, Frankfurt và các thành phố ở Mỹ là lựa chọn phổ biến. Người dùng ở Việt Nam thường hợp với Singapore.

Bước tiếp theo

Dựng một VPS gần người dùng, rồi triển khai GPU từ trang triển khai ở cùng khu vực. Nối hai bên bằng service tunnel ở trên, và tập đổi GPU một lần trước khi chạy thật.

Triển khai máy chủ hoặc mua proxy

Chọn vị trí trong console, xem giá trực tiếp và thanh toán từ số dư tài khoản.