Cách thiết lập đồng bộ hóa thời gian trên Debian 10
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 10 tích hợp sẵn đồ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 10 với user không phải root, sudo
-enabled, như được mô tả trong hướng dẫn cài đặt server Debian 10 này .
Bước 1 - Đ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
OutputWed 31 Jul 2019 06:03:19 PM UTC
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
OutputWed 31 Jul 2019 02:08:43 PM EDT
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.
Bước 2 - Kiểm tra trạng thái của ntpd
Theo mặc định, Debian 10 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 một 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 - Network Time Service Loaded: loaded (/lib/systemd/system/ntp.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2019-07-31 13:57:08 EDT; 17min ago Docs: man:ntpd(8) Main PID: 429 (ntpd) Tasks: 2 (limit: 1168) Memory: 2.1M CGroup: /system.slice/ntp.service └─429 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 106:112 . . .
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 +208.67.72.50 152.2.133.55 2 u 12 64 377 39.381 1.696 0.674 +198.46.223.227 204.9.54.119 2 u 6 64 377 22.671 3.536 1.818 -zinc.frizzen.ne 108.61.56.35 3 u 43 64 377 12.012 1.268 2.553 -pyramid.latt.ne 204.123.2.72 2 u 11 64 377 69.922 2.858 0.604 +nu.binary.net 128.252.19.1 2 u 10 64 377 35.362 3.148 0.587 #107.155.79.108 129.7.1.66 2 u 65 64 377 42.380 1.638 1.014 +t1.time.bf1.yah 98.139.133.62 2 u 6 64 377 11.233 3.305 1.118 *sombrero.spider 129.6.15.30 2 u 47 64 377 1.304 2.941 0.889 +hydrogen.consta 209.51.161.238 2 u 45 64 377 1.830 2.280 1.026 -4.53.160.75 142.66.101.13 2 u 42 64 377 29.077 2.997 0.789 #horp-bsd01.horp 146.186.222.14 2 u 39 64 377 16.165 4.189 0.717 -ntpool1.603.new 204.9.54.119 2 u 46 64 377 27.914 3.717 0.939
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.
Bước 3 - 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ữ đồng bộ thời gian hệ thống của bạn. 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: /usr/lib/systemd/system/systemd-timesyncd.service.d └─disable-with-time-daemon.conf Active: active (running) since Wed 2019-07-31 14:21:37 EDT; 6s ago Docs: man:systemd-timesyncd.service(8) Main PID: 1681 (systemd-timesyn) Status: "Synchronized to time server for the first time 96.245.170.99:123 (0.debian.pool.ntp.org)." Tasks: 2 (limit: 1168) Memory: 1.3M CGroup: /system.slice/systemd-timesyncd.service └─1681 /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: Wed 2019-07-31 14:22:15 EDT Universal time: Wed 2019-07-31 18:22:15 UTC RTC time: n/a Time zone: America/New_York (EDT, -0400) System clock synchronized: yes NTP service: active 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. System clock synchronized: yes
nghĩa là thời gian đã được đồng bộ hóa thành công và NTP service: active
nghĩa là đồng bộ hóa thời gian được bật và đang chạy.
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