Bối cảnh: Cơn ác mộng từ 7 phút lệch giờ
Vận hành cụm VMware production cho ngân hàng hay fintech, điều khiến anh em kỹ sư đau đầu nhất nhiều khi không phải hỏng ổ cứng hay đứt cáp quang. Nó đến từ một thứ ngỡ như vô hại: lệch giờ hệ thống.
Sáng thứ Hai, toàn bộ admin không thể đăng nhập vCenter. Giao diện vSphere Client trơ trơ báo “Invalid credentials” dù gõ mật khẩu root chuẩn từng ký tự. Trình duyệt đồng loạt chặn truy cập với lỗi “Signing certificate is not valid yet”. Toàn bộ backup định kỳ qua Veeam dừng đột ngột. Tác vụ vMotion giữa các host cũng fail sạch.
Khi kiểm tra log, nguyên nhân lộ diện: ESXi host chứa máy ảo vCenter Server Appliance (VCSA) chạy nhanh hơn Domain Controller đúng 7 phút 12 giây. Trong kiến trúc VMware, cơ chế xác thực Kerberos và SAML Token của STS (Security Token Service) chỉ chấp nhận mức chênh lệch tối đa 300 giây (5 phút). Lệch quá ngưỡng này, toàn bộ ticket trao đổi giữa các service lập tức bị hủy.
Hạ tầng ảo hóa không có NTP chuẩn xác sẽ kéo theo hàng loạt rủi ro dây chuyền:
- Xác thực vCenter SSO, Active Directory và các giải pháp Identity Provider (IdP) gãy hoàn toàn.
- Chứng chỉ SSL/TLS bị vô hiệu hóa vì hệ thống tưởng nhầm chứng chỉ chưa đến kỳ hiệu lực hoặc đã hết hạn.
- Log giữa các ESXi host và vCenter lệch mốc thời gian (timestamp). Khi cần truy vết sự cố hay audit bảo mật, việc khớp nối log gần như bất khả thi.
- Tính năng vSphere HA và DRS đưa ra quyết định sai lệch do nhận diện sai nhịp heartbeat giữa các node.
Chuẩn bị trước khi triển khai
Trước khi gõ lệnh, bạn cần xác định rõ nguồn thời gian và thông luồng mạng.
1. Mô hình nguồn thời gian (NTP Topology)
- Môi trường Domain: Trỏ toàn bộ ESXi và vCenter về trực tiếp PDC Emulator (Domain Controller nắm role PDC). PDC này sẽ đồng bộ ra nguồn ngoài.
- Môi trường Standalone: Khai báo ít nhất 3 nguồn NTP Server độc lập để chống split-brain. Ưu tiên Core Switch/Router nội bộ Lớp 3, kết hợp public pool như
time.google.com,time.cloudflare.comhoặcvn.pool.ntp.org.
2. Thông luồng Firewall
NTP chạy trên cổng UDP 123. Hãy kiểm tra các Access Control List (ACL) và tường lửa giữa dải Management Network của VMware tới NTP Server. Chiều traffic đi và về đều phải thông suốt.
Test nhanh kết nối UDP 123 từ máy trạm quản trị:
nc -zvu 192.168.10.1 123
Cấu hình chi tiết
1. Cấu hình NTP trên VMware ESXi Host qua SSH
Thao tác trên giao diện ESXi Host Client khá đơn giản. Tuy nhiên, khi quản lý cluster hàng chục host, dùng CLI sẽ nhanh và chuẩn hóa hơn nhiều.
Bước 1: SSH vào ESXi host
ssh [email protected]
Bước 2: Kiểm tra thời gian và cấu hình hiện tại
# ESXi luôn hiển thị giờ hệ thống theo chuẩn UTC
esxcli system time get
# Xem danh sách NTP server đang cấu hình
esxcli system ntp get
Bước 3: Mở rule firewall cho NTP Client
esxcli network firewall ruleset set --ruleset-id=ntpClient --enabled=true
esxcli network firewall ruleset list | grep ntpClient
Bước 4: Khai báo NTP server và bật service
# Thêm danh sách server (ngăn cách bằng dấu phẩy)
esxcli system ntp set --servers="192.168.10.1,time.google.com,vn.pool.ntp.org"
# Đặt policy khởi động cùng host và bật service
esxcli system ntp set --enabled=true
/etc/init.d/ntpd restart
2. Cấu hình NTP trên vCenter Server Appliance (VCSA)
Trên vCenter 7.x và 8.x, bạn không chỉnh giờ trong vSphere Client. Việc này phải thực hiện qua giao diện quản trị VAMI hoặc Appliance Shell.
Cách 1: Thao tác qua Web VAMI (Khuyên dùng)
- Mở trình duyệt, vào port 5480:
https://<vcenter-ip>:5480. - Đăng nhập tài khoản
rootcủa appliance. - Chọn mục Time ở menu trái.
- Tại khung Time synchronization, bấm Edit.
- Đổi Mode từ Host sang NTP. Điền IP hoặc FQDN của NTP server:
192.168.10.1, time.google.com. - Bấm Save.
Lưu ý thực chiến: Tuyệt đối không chọn mode Host (đồng bộ qua VMware Tools từ ESXi) nếu cả ESXi và VCSA đều đang tự trỏ ra NTP ngoài. Việc sync chồng chéo này sẽ tạo vòng lặp bù trừ thời gian, làm đồng hồ của vCenter giật lùi liên tục.
Cách 2: Cấu hình qua Appliance Shell
SSH trực tiếp vào VCSA bằng tài khoản root. Tại dấu nhắc Command>, chạy lệnh:
# Kiểm tra mode hiện tại
timesync.get
# Chuyển mode sang NTP và khai báo server
timesync.set --mode NTP
timesync.set --servers "192.168.10.1,time.google.com"
# Xác nhận lại cấu hình
timesync.get
Kiểm tra & Giám sát sau cấu hình
Cấu hình xong chưa phải là hết. Hãy dành 3 phút kiểm tra xem tiến trình đồng bộ có thực sự nhận dữ liệu hay không.
1. Đo đạc độ lệch trên ESXi host
Chạy lệnh kiểm tra bảng peer trên ESXi:
[root@esx-node01:~] ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*192.168.10.1 10.0.0.1 2 u 18 64 377 0.412 -0.035 0.021
+time.google.com 216.239.35.4 1 u 42 64 377 22.180 0.104 0.318
+vn.pool.ntp.org 133.243.3.8 2 u 11 64 377 14.650 -0.180 0.245
Ý nghĩa các thông số quan trọng cần nhìn:
- Dấu
*: NTP server chính đang được hệ thống lấy mốc chuẩn. - Dấu
+: Server phụ tin cậy, tự động thế chỗ nếu nguồn chính mất kết nối. - Cột
reach = 377: Mã bát phân (octal) chứng tỏ 8 lần truy vấn gần nhất đều nhận được phản hồi. Nếu giá trị là0, cổng UDP 123 đang tắc. - Cột
offset: Độ lệch thực tế tính bằng mili-giây (ms). Con số này dưới 10ms là hoàn toàn yên tâm chạy production.
2. Kiểm tra trên vCenter
Vào Bash shell của VCSA và kiểm tra daemon hệ thống:
timedatectl status
Đảm bảo hai tham số hiển thị đúng: System clock synchronized: yes và NTP service: active.
3. Thiết lập cảnh báo chủ động
Đừng để sự cố xảy ra mới đi dò tìm:
- Tạo một Alarm Definition trên vCenter theo dõi sự kiện
Host time out of sync. Cài đặt ngưỡng bắn cảnh báo qua Telegram/Email ngay khi host lệch trên 5 giây. - Nếu phát hiện một host thường xuyên trôi giờ nhanh dù NTP vẫn chạy, hãy kiểm tra lại pin CMOS trên mainboard server vật lý hoặc update BIOS/firmware mới nhất từ hãng.

