Khi “Snap Update” trở thành cơn ác mộng băng thông
Dù bạn quản trị Web Server hay cụm K8s, Snap là công cụ quen thuộc để cài Docker hoặc LXD. Tuy nhiên, nó có một điểm yếu chí mạng khi triển khai quy mô lớn: ngốn băng thông internet khủng khiếp.
Thử làm một phép tính: Hệ thống của bạn có 50 máy chủ. Mỗi khi Docker ra bản cập nhật 200MB, cả 50 máy sẽ đồng loạt “ngốn” của bạn 10GB dữ liệu từ server Canonical. Kết quả là đường truyền văn phòng nghẽn cổ chai, còn bạn thì ngồi nhìn thanh tiến trình chạy như rùa bò. Việc kiểm soát máy nào đã lên bản mới, máy nào còn ở bản cũ cũng cực kỳ rối rắm.
Hồi mình làm Admin cho dự án Edge Computing với 30 node Ubuntu, mình từng mất cả tuần chỉ để xử lý lỗi timeout khi tải package. Lúc đó, Snap Store Proxy đã giải quyết triệt để vấn đề này. Nó giúp giảm tới 90% lưu lượng internet đi ra ngoài và mang lại khả năng quản lý tập trung chỉ trong một nốt nhạc.
Snap Store Proxy hoạt động như thế nào?
Nói đơn giản, Snap Store Proxy đóng vai trò như một kho chứa tạm (cache) đặt ngay trong mạng nội bộ của bạn. Thay vì mỗi máy khách tự đi tải dữ liệu từ internet, chúng sẽ hỏi Proxy trước. Nếu Proxy đã có sẵn bản cache, nó sẽ trả về ngay lập tức với tốc độ mạng LAN (thường là 1Gbps thay vì tốc độ internet lẹt đẹt). Nếu chưa có, Proxy sẽ tải về một lần duy nhất rồi phân phối cho các máy khác.
Một tính năng cực đáng giá khác là “Validation Sets”. Tính năng này cho phép bạn khóa phiên bản phần mềm trên toàn bộ hệ thống, đảm bảo mọi máy chủ đều chạy đúng phiên bản đã qua kiểm thử.
Cấu hình phần cứng cần thiết
Bạn nên dùng một máy chủ Ubuntu sạch (ưu tiên 22.04 hoặc 24.04 LTS). Cấu hình không cần quá khủng, nhưng cần lưu ý về ổ cứng:
- CPU: 2 Cores.
- RAM: 4GB.
- Disk: Nên dành riêng 40GB – 100GB tùy số lượng Snap bạn cần cache.
- Hệ điều hành: Ubuntu Server.
Các bước triển khai Snap Store Proxy
Bước 1: Cài đặt gói Proxy
Trước tiên, hãy cập nhật hệ thống và cài đặt gói snap-store-proxy:
sudo apt update && sudo apt upgrade -y
sudo snap install snap-store-proxy
Cài xong, bạn hãy kiểm tra xem các dịch vụ đã chạy ổn định chưa bằng lệnh:
snap-store-proxy status
Bước 2: Đăng ký với Canonical
Để Proxy hoạt động, bạn cần liên kết nó với hệ thống của Canonical qua tài khoản Ubuntu One. Nếu chưa có tài khoản, hãy đăng ký tại login.ubuntu.com.
Bắt đầu quá trình đăng ký bằng lệnh:
sudo snap-store-proxy register
Lúc này, màn hình sẽ hiện một mã code. Bạn chỉ cần truy cập đường link hiển thị trên terminal, đăng nhập và nhập mã này vào. Sau khi xác nhận, hệ thống sẽ cấp cho bạn một Store ID định danh duy nhất.
Bước 3: Thiết lập Domain
Proxy mặc định chạy trên cổng 80. Để thuận tiện, bạn nên cấu hình một bản ghi DNS nội bộ (ví dụ: snap-proxy.local) trỏ về IP của máy Proxy này.
sudo snap-store-proxy config domain=snap-proxy.yourdomain.com
Cấu hình máy Client để “đi qua” Proxy
Bây giờ là lúc hướng dẫn các máy con từ bỏ thói quen tải trực tiếp từ internet. Trên từng máy client, bạn thực hiện 2 thao tác sau:
1. Nạp chứng chỉ tin cậy (Assertion):
Máy client cần file định danh để tin tưởng và làm việc được với Proxy nội bộ.
curl -s http://<IP_CỦA_PROXY>/v2/auth/store/assertions | sudo snap ack /dev/stdin
2. Khai báo Store ID:
Lấy Store ID bạn nhận được ở Bước 2 và gán vào cấu hình của máy client:
sudo snap set core proxy.store=<YOUR_STORE_ID>
3. Trường hợp máy Client không có Internet:
Nếu máy client nằm trong vùng mạng cô lập hoàn toàn, hãy ép nó sử dụng Proxy cho mọi yêu cầu HTTP/HTTPS:
sudo snap set core proxy.http="http://<IP_CỦA_PROXY>"
sudo snap set core proxy.https="http://<IP_CỦA_PROXY>"
Kiểm chứng hiệu quả thực tế
Hãy thử cài một Snap nặng như VLC hoặc MicroK8s trên máy client đầu tiên. Sau đó, cài lại chính Snap đó trên máy client thứ hai. Bạn sẽ thấy tốc độ tải ở máy thứ hai nhanh đến kinh ngạc, gần như tức thì vì dữ liệu được kéo qua mạng LAN 1000Mbps.
Mẹo nhỏ: Bạn có thể vào thư mục /var/snap/snap-store-proxy/common/ để xem các file đã được cache. Chứng kiến dung lượng internet tiết kiệm được sau mỗi tháng chắc chắn sẽ làm sếp bạn hài lòng.
Vài lưu ý “xương máu” khi vận hành
Sau nhiều năm quản trị, mình rút ra vài điểm cần lưu ý để hệ thống không bị “sập” bất thình lình:
- Đừng để đầy ổ cứng: Nếu disk đầy 100%, Proxy sẽ bị treo và máy client không thể cài đặt gì thêm. Hãy đặt ngưỡng cảnh báo ở mức 80% dung lượng.
- Tự động cập nhật: Bản thân gói Proxy cũng tự update qua Snap. Thỉnh thoảng hãy chạy lệnh
statusđể đảm bảo mọi dịch vụ vẫn đang ở trạng thái Active. - Bảo mật Firewall: Luôn dùng UFW để chặn các IP lạ. Chỉ cho phép các dải IP nội bộ truy cập vào cổng 80/443 của Proxy để tránh bị khai thác băng thông ngoài ý muốn.
Thiết lập Snap Store Proxy có thể hơi tốn công ở bước đăng ký ban đầu, nhưng lợi ích lâu dài là cực lớn. Nó giúp bạn làm chủ hoàn toàn hạ tầng Ubuntu, tiết kiệm chi phí đường truyền và tăng tốc độ triển khai phần mềm. Nếu đang quản lý trên 10 máy Ubuntu, bạn nên triển khai ngay hôm nay!

