Cách thiết lập đồng bộ hóa thời gian trên Debian 9
Chấm công chính xác đã trở thành một thành phần quan trọng của việc triển khai phần mềm hiện đại. Cho dù đó là đảm bảo log được ghi theo đúng thứ tự hay các cập nhật database được áp dụng đúng cách, thời gian không đồng bộ hóa có thể gây ra lỗi, hỏng dữ liệu và các vấn đề khó gỡ lỗi khác. Debian 9 có tích hợp đồng bộ hóa thời gian và được kích hoạt theo mặc định bằng server thời gian ntpd tiêu chuẩn, được cung cấp bởi gói ntp
. Trong bài viết này, ta sẽ xem xét một số lệnh cơ bản liên quan đến thời gian, xác minh ntpd đang hoạt động và được kết nối với các đồng nghiệp, đồng thời tìm hiểu cách kích hoạt dịch vụ thời gian mạng systemd-timesyncd thay thế.
Yêu cầu
Trước khi bắt đầu hướng dẫn này, bạn cần một server Debian 9 với user không root, đã bật sudo, như được mô tả trong hướng dẫn cài đặt server Debian 9 này .
Điều hướng các lệnh thời gian cơ bản
Lệnh cơ bản nhất để tìm ra thời gian trên server của bạn là date
. Mọi user cũng có thể gõ lệnh này để in ra ngày và giờ:
- date
OutputTue Sep 4 17:51:49 UTC 2018
Thông thường, server của bạn sẽ mặc định theo múi giờ UTC , như được đánh dấu trong kết quả ở trên. UTC là Giờ Phối hợp Quốc tế , thời gian ở kinh độ 0 độ. Việc sử dụng nhất quán Giờ quốc tế giúp giảm nhầm lẫn khi cơ sở hạ tầng của bạn trải dài trên nhiều múi giờ.
Nếu bạn có các yêu cầu khác và cần thay đổi múi giờ, bạn có thể sử dụng lệnh timedatectl
để thực hiện.
Đầu tiên, hãy liệt kê các múi giờ khả dụng:
- timedatectl list-timezones
Danh sách các múi giờ sẽ in ra màn hình của bạn. Bạn có thể nhấn SPACE
để trang xuống, và b
để trang lên. Khi bạn tìm thấy múi giờ chính xác, hãy ghi lại múi giờ đó rồi gõ q
để thoát khỏi danh sách.
Bây giờ, hãy đặt múi giờ với timedatectl set-timezone
, đảm bảo thay thế phần được đánh dấu bên dưới bằng múi giờ bạn tìm thấy trong danh sách. Bạn cần sử dụng sudo
với timedatectl
để thực hiện thay đổi này:
- sudo timedatectl set-timezone America/New_York
Bạn có thể xác minh các thay đổi của bạn bằng cách chạy lại date
:
- date
OutputTue Sep 4 13:52:57 EDT 2018
Tên viết tắt của múi giờ phải phản ánh giá trị mới được chọn.
Bây giờ ta đã biết cách kiểm tra đồng hồ và đặt múi giờ, hãy đảm bảo thời gian của ta đang được đồng bộ hóa đúng cách.
Kiểm tra trạng thái của ntpd
Theo mặc định, Debian 9 chạy server ntpd tiêu chuẩn để giữ cho thời gian hệ thống của bạn được đồng bộ hóa với group server thời gian bên ngoài. Ta có thể kiểm tra xem nó đang chạy bằng lệnh systemctl
:
- sudo systemctl status ntp
Output● ntp.service - LSB: Start NTP daemon Loaded: loaded (/etc/init.d/ntp; generated; vendor preset: enabled) Active: active (running) since Tue 2018-09-04 15:07:03 EDT; 30min ago Docs: man:systemd-sysv-generator(8) Process: 876 ExecStart=/etc/init.d/ntp start (code=exited, status=0/SUCCESS) Tasks: 2 (limit: 4915) CGroup: /system.slice/ntp.service └─904 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 105:109 . . .
Trạng thái active (running)
cho biết ntpd đã khởi động đúng cách. Để biết thêm thông tin về trạng thái của ntpd, ta có thể sử dụng lệnh ntpq
:
- ntpq -p
Output remote refid st t when poll reach delay offset jitter ============================================================================== 0.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 1.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 2.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 3.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 -eterna.binary.n 204.9.54.119 2 u 240 256 377 35.392 0.142 0.211 -static-96-244-9 192.168.10.254 2 u 60 256 377 10.242 1.297 2.412 +minime.fdf.net 83.157.230.212 3 u 99 256 377 24.042 0.128 0.250 *t1.time.bf1.yah 98.139.133.62 2 u 31 256 377 11.112 0.621 0.186 +x.ns.gin.ntt.ne 249.224.99.213 2 u 108 256 377 1.290 -0.073 0.132 -ord1.m-d.net 142.66.101.13 2 u 473 512 377 19.930 -1.764 0.293
ntpq
là một công cụ truy vấn cho ntpd. Cờ -p
hỏi thông tin về server NTP (hoặc p eers) ntpd được kết nối với. Đầu ra của bạn sẽ hơi khác một chút, nhưng nên liệt kê các server chung Debian mặc định cùng với một số server khác. Lưu ý có thể mất vài phút để ntpd cài đặt kết nối.
Chuyển sang systemd-timesyncd
Có thể sử dụng thành phần timesyncd có sẵn của systemd để thay thế ntpd. timesyncd là một giải pháp thay thế nhẹ hơn ntpd được tích hợp nhiều hơn với systemd. Tuy nhiên, lưu ý nó không hỗ trợ chạy như một server thời gian và nó hơi kém phức tạp hơn trong các kỹ thuật mà nó sử dụng để giữ cho thời gian hệ thống của bạn được đồng bộ. Nếu bạn đang chạy các hệ thống phân tán thời gian thực phức tạp, bạn có thể cần gắn bó với ntpd.
Để sử dụng timesyncd, trước tiên ta phải gỡ cài đặt ntpd:
- sudo apt purge ntp
Sau đó, khởi động dịch vụ timesyncd:
- sudo systemctl start systemd-timesyncd
Cuối cùng, hãy kiểm tra trạng thái của dịch vụ đảm bảo rằng nó đang chạy:
- sudo systemctl status systemd-timesyncd
Output● systemd-timesyncd.service - Network Time Synchronization Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/systemd-timesyncd.service.d └─disable-with-time-daemon.conf Active: active (running) since Tue 2018-09-04 16:14:23 EDT; 1s ago Docs: man:systemd-timesyncd.service(8) Main PID: 3399 (systemd-timesyn) Status: "Synchronized to time server 198.60.22.240:123 (0.debian.pool.ntp.org)." Tasks: 2 (limit: 4915) CGroup: /system.slice/systemd-timesyncd.service └─3399 /lib/systemd/systemd-timesyncd
Ta có thể sử dụng timedatectl
để in ra hiểu biết hiện tại của systemd về thời gian:
- timedatectl
Output Local time: Tue 2018-09-04 16:15:34 EDT Universal time: Tue 2018-09-04 20:15:34 UTC RTC time: Tue 2018-09-04 20:15:33 Time zone: America/New_York (EDT, -0400) Network time on: yes NTP synchronized: yes RTC in local TZ: no
Điều này in ra giờ local , giờ quốc tế (có thể giống với giờ local , nếu bạn không chuyển từ múi giờ UTC) và một số thông tin trạng thái giờ mạng. Network time on: yes
nghĩa là timesyncd được bật và NTP synchronized: yes
cho biết thời gian đã được đồng bộ hóa thành công.
Kết luận
Trong bài viết này, ta đã hướng dẫn cách xem giờ hệ thống, thay đổi múi giờ, làm việc với ntpd và chuyển sang dịch vụ timesyncd của systemd. Nếu bạn có nhu cầu chấm công phức tạp hơn những gì ta đã đề cập ở đây, bạn có thể tham khảo tài liệu chính thức của NTP và cũng có thể xem qua Dự án NTP Pool , một group tình nguyện viên global cung cấp nhiều cơ sở hạ tầng NTP trên thế giới.
Các tin liên quan