
Giới thiệu
Bạn đã bao giờ gặp lỗi “Could not resolve host” khi chạy pipeline CI/CD? Hay thắc mắc tại sao ứng dụng không kết nối được dù server vẫn sống? DNS là chìa khóa giải quyết những vấn đề này. Trong bài thứ tư của series, chúng ta sẽ đi sâu vào DNS hoạt động thế nào, phân giải tên miền, và cách debug DNS để đảm bảo hệ thống DevOps luôn ổn định.
DNS là gì?
DNS (Domain Name System) là “danh bạ Internet”, chuyển đổi tên miền (như google.com) thành địa chỉ IP (như 142.250.190.14). Trong DevOps, DNS là huyết mạch kết nối:
- Pipeline CI/CD: Resolve tên miền của registry (Docker Hub, S3).
- Microservices: Tìm IP của service khác trong cluster.
- Monitoring: Kết nối đến domain của tool như Prometheus.
Ví dụ thực tế: Một job deploy thất bại vì DNS server không phản hồi, dẫn đến timeout khi pull image từ registry.example.com. Hiểu DNS giúp bạn xử lý nhanh những lỗi này.
DNS hoạt động thế nào?
Quy trình phân giải tên miền
Khi bạn gõ google.com vào browser, đây là cách DNS tìm IP:
- Resolver: Máy bạn hỏi DNS server cục bộ (thường trong
/etc/resolv.conf). - Root Server: Nếu không biết, resolver hỏi 1 trong 13 root server toàn cầu.
- TLD Server: Root trả về server quản lý
.com(Top-Level Domain). - Authoritative Server: TLD trả về server của
google.com. - IP: Resolver nhận IP và trả lại cho máy bạn.
Thời gian: Thường dưới 100ms nhờ cache.
Các thành phần chính
- A Record: Ánh xạ tên miền sang IPv4 (ví dụ:
google.com → 142.250.190.14). - AAAA Record: Tương tự cho IPv6.
- CNAME: Alias từ tên miền này sang tên khác (ví dụ:
www.google.com → google.com). - TTL (Time to Live): Thời gian cache record (giây).
Trong DevOps: TTL thấp (như 60s) giúp cập nhật IP nhanh khi server đổi, nhưng tăng tải DNS.
DNS và DevOps: Ứng dụng thực tế
Tối ưu Pipeline
- CDN: Dùng DNS để định tuyến lưu lượng đến edge server gần nhất.
- Load Balancing: DNS round-robin trả về nhiều IP (như
app.example.com → 10.0.0.1, 10.0.0.2).
Debug Hệ Thống
- DNS Propagation: Khi đổi IP, thời gian cập nhật toàn cầu có thể gây lỗi.
- Internal DNS: Dùng trong mạng nội bộ (như
db.localtrong VPC).
Ví dụ: Một hệ thống microservices bị chậm vì DNS resolve api.internal mất 5 giây do cấu hình sai server nội bộ.
Debug DNS với Dig và Nslookup
Dùng dig để Phân Tích
- Chạy:
dig google.com- Kết quả:
ANSWER SECTION: google.com. 300 IN A 142.250.190.14- TTL: 300s, IP:
142.250.190.14.
- TTL: 300s, IP:
- Kết quả:
- Debug sâu hơn:
dig +trace google.com- Hiển thị toàn bộ quá trình từ root → TLD → authoritative.
Dùng nslookup Kiểm Tra
- Chạy:
nslookup google.com- Kết quả: IP và server DNS trả lời.
- Test server cụ thể:
nslookup google.com 8.8.8.8- Dùng DNS Google để kiểm tra.
Debug tip:
- Thời gian resolve lâu (>200ms): Kiểm tra DNS server trong
/etc/resolv.conf. - IP sai: Flush cache (
sudo systemd-resolve --flush-cachestrên Linux).

