Ở bài trước chúng ta đã biết được Chrony là một dịch vụ đồng bộ thời gian trên nhiều hệ điều hành khác nhau như Linux, FreeBSD, NetBSD, macOS, and Solaris. Tốc độ tốt hơn, nhiều ưu điểm hơn, quản trị và thao tác dễ dàng hơn. Bài viết sau sẽ hướng dẫn các bạn cấu hình Chrony trên Ubuntu 18.04

Mục lục


1. Mô hình chuẩn bị

2. Chuẩn bị trước khi cài đặt

3. Cài đặt Chrony trên cả 2 Server

4. Cấu hình Chrony làm NTP Server

5. Cấu hình Chrony Client

6. Tổng kết

1. Mô hình chuẩn bị

Sử dụng 2 Server cho mô hình:
– Ubuntu 18.04
– Có kết nối Internet
– Đăng nhập thao tác với user root hoặc có quyền quản trị sudo

2. Chuẩn bị trước khi cài đặt

Sau khi đổi tên Server cần đồng bộ cấu hình của hostname/etc/hosts tránh các lỗi phát sinh warning trong quá trình vận hành

Cấu hình timezone.

timedatectl set-timezone Asia/Ho_Chi_Minh

Kiểm tra timezone sau khi cài đặt.

timedatectl 

Mặc định trên Ubuntu 18.04 thì trình đồng bộ thời gian timesync đã được thiết lập sẵn trong OS từ lúc cài đặt. Nó hoạt động vẫn rất ổn định nhưng đối với các ứng dụng cần độ nhạy về thời gian yêu cầu cao hơn thì nó sẽ yêu cầu sử dụng các kỹ thuật phức tạp hơn để có thể đồng bộ liên tục và giữ đồng bộ thời gian hệ thống.

Tiến hành stop dịch vụ timesync

timedatectl set-ntp no

Kiểm tra bằng timedatectl lại chắc chắn timesync đã tắt

Cấu hình firewall ufw

sudo ufw allow ntp 

3. Cài đặt Chrony trên cả 2 Server

Truy cập SSH vào cả 2 Server. Sau đó chúng ta tiến hành cài đặt Chrony.

apt-get install -y chrony

Sau khi cài đặt chúng ta tiến hành start Chrony và cho phép khởi động cùng hệ thống.

systemctl enable --now chrony

Kiểm tra  dịch vụ đang hoạt động.

systemctl status chrony

Kết quả:

root@localhost:~# systemctl status chrony
 ● chrony.service - chrony, an NTP client/server
    Loaded: loaded (/lib/systemd/system/chrony.service; enabled; vendor preset: enabled)
    Active: active (running) since Tue 2019-08-13 00:01:51 +07; 3min 59s ago
      Docs: man:chronyd(8)
            man:chronyc(1)
            man:chrony.conf(5)
  Main PID: 3478 (chronyd)
     Tasks: 1 (limit: 2318)
    CGroup: /system.slice/chrony.service
            └─3478 /usr/sbin/chronyd
 Aug 13 00:01:51 localhost systemd[1]: Starting chrony, an NTP client/server…
 Aug 13 00:01:51 localhost chronyd[3478]: chronyd version 3.2 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SECHASH +
 Aug 13 00:01:51 localhost chronyd[3478]: Initial frequency -19.367 ppm
 Aug 13 00:01:51 localhost systemd[1]: Started chrony, an NTP client/server.
 Aug 13 00:02:01 localhost chronyd[3478]: Selected source 91.189.89.199
 Aug 13 00:02:01 localhost chronyd[3478]: Received KoD RATE from 210.245.100.39
 Aug 13 00:02:10 localhost chronyd[3478]: Source 2001:418:3ff::1:53 replaced with 103.97.125.133

Mặc định trên Ubuntu file cấu hình của Chrony nằm ở /etc/chrony/chrony.conf, tiến hành kiểm tra file cấu hình.

cat /etc/chrony/chrony.conf | egrep -v '^$|^#'

Trong đó:

  • server Xác định các NTP Server bạn muốn sử dụng.
  • prefer Đối với nhiều NTP Server chúng ta có thể chỉ đinh ưu tiên kết nối từ NTP Server nào trước thay vì để hệ thống tự lựa chọn VD: server 2.centos.pool.ntp.orf iburst prefer
  • driftfile  File lưu trữ  tốc độ mà đồng hồ hệ thống tăng / giảm thời gian.
  • makestep Cho phép đồng hồ hệ thống không cập nhật trong 3 bản cập nhật đầu tiên nếu độ lệch của nó nó lơn hơn 1s.
  • rtcsync Cho phép đồng bộ hóa kernel của đồng hồ thời gian thực (RTC).
  • maxupdateskew Ngăn chặn việc thay đổi đột ngột nhiều lần làm ảnh hưởng hệ thống
  • logdir Vị trí file log

Các cấu hình bổ sung:

  • hwtimestamp Cho phép đánh dấu thời gian phần cứng trên tất cả các interface hỗ trợ nó.
  • minsources Tăng số lượng tối thiểu các nguồn có thể chọn cần thiết để điều chỉnh đồng hồ hệ thống
  • allow Cho phép Client truy cập NTP từ mạng cục bộ.
  • keyfile Tệp có chứa mật khẩu để xác thực kết nối giữa Client và Server cho phép chronyc đăng nhập vào chronyd và thông báo cho chronyd về sự hiện diện của liên kết với Internet.
  • generatecommandkey Tạo mật khẩu ngẫu nhiên tự động khi bắt đầu chronyd đầu tiên. VD: keyfile /etc/chrony.keys generatecommandkey
  • log Log file

4. Cấu hình Chrony làm NTP Server

Chúng ta sẽ cấu hình Chrony thành 1 Server làm NTP Server Local và các máy còn lại sẽ đồng bộ thời gian từ NTP Server này về.

Để lựa chọn pool đồng bộ thời gian chúng ta có thể truy cập vào NTP Pool để lựa chọn NTP Server. Ở đây chúng ta giữ nguyên đồng bộ từ ntp.ubuntu.com.

Tại Server 10.10.11.66 là Server sẽ làm NTP Server.  Chúng ta sẽ cấu hình bổ sung cấu hình cho phép các máy Client 10.10.11.0/24 phía trong có thể đồng bộ thời gian từ Server này.

echo "allow 10.10.11.0/24" >> /etc/chrony/chrony.conf
  • Trong đó 10.10.11.0/24 chính là dải IP Local mà chúng ta cho phép các Client kết nối vào NTP Server này để đồng bộ thời gian.

Kiểm tra lại file cấu hình.

Restart lại dịch vụ để cập nhật cấu hình.

systemctl restart chrony

Sử dụng chronyc để kiểm tra đồng bộ.

Kiểm tra đồng bộ sử dụng timedatectl.

Set đồng bộ thời gian cho đồng hồ của BIOS (Đồng hồ phần cứng) hwclock.

hwclock --systohc

Kiểm tra đồng bộ của datehwclock đảm bảo đồng bộ

5. Cấu hình Chrony Client

Thực chất sau khi cài đặt và khởi động Chrony thì Server này đã tự động đồng bộ thời gian về từ một trong những NTP Server thuộc pool ntp.ubuntu.com

Bây giờ thay vì đồng bộ thời gian từ Internet chúng ta sẽ đồng bộ từ NTP Server chúng ta cấu hình phía trên.

Tại Server 10.10.11.62 chỉnh sửa cấu hình chrony.

sed -i 's|pool ntp.ubuntu.com        iburst maxsources 4|server 10.10.11.66 iburst maxsources 1|g' /etc/chrony/chrony.conf
 sed -i 's|pool 0.ubuntu.pool.ntp.org iburst maxsources 1|#|g' /etc/chrony/chrony.conf
 sed -i 's|pool 1.ubuntu.pool.ntp.org iburst maxsources 1|#|g' /etc/chrony/chrony.conf
 sed -i 's|pool 2.ubuntu.pool.ntp.org iburst maxsources 2|#|g' /etc/chrony/chrony.conf

Kiểm tra cấu hình

cat /etc/chrony/chrony.conf | egrep -v '^$|^#'

Khởi động lại Chrony để cập nhật cấu hình.

systemctl restart chrony

Sử dụng chronyc kiểm tra đồng bộ.

Kiểm tra đồng bộ sử dụng timedatectl.

Set đồng bộ thời gian cho đồng hồ của BIOS (Đồng hồ phần cứng) hwclock.

hwclock --systohc

Kiểm tra đồng bộ của datehwclock đảm bảo đồng bộ.

6. Tổng kết

Bài viết đã hướng dẫn cơ bản các bạn cài đặt cấu hình đồng bộ thời gian trên Ubuntu 18.04 sử dụng Chrony. Trên các phiên bản Ubuntu khác hoàn toàn có thể sử dụng Chrony để đồng bộ thời gian.

Các bài viết liên quan:

Chronyd dịch vụ thay thế NTPD trên Unix
Cài đặt Chrony trên CentOS/RHEL 7