Amazon Elastic Compute Cloud
Linux 執行個體使用者指南

設定您 Linux 執行個體的時間

對許多伺服器任務和程序而言,一致且精準的時間參考很重要。大部分系統日誌包含的時間戳記可用來判斷問題發生在何時,以及事件發生的順序。如果您使用 AWS CLI 或 AWS 開發套件從您的執行個體提出請求,這些工具會代您簽署請求。如果您執行個體的日期和時間未正確設定,簽章中的日期可能與請求的日期不符,AWS 會拒絕該請求。

您可從自己的執行個體存取 Amazon 提供的 Amazon Time Sync Service。此服務使用衛星連線的佇列和每個區域的原子參考時鐘,透過網路時間協定 (NTP) 提供精準的國際標準時間 (UTC) 全球標準目前時間讀數。Amazon Time Sync Service 會自動消除新增至 UTC 的任何閏秒。

任何在 VPC 中執行的執行個體均可透過 NTP 在 169.254.169.123 IP 地址取得 Amazon Time Sync Service。您的執行個體不必存取網際網路,您也不必設定安全群組規則或網路 ACL 規則允許存取。使用 chrony 用戶端,利用下列程序在您的執行個體上設定 Amazon Time Sync Service。

或者,您也可以使用外部 NTP 來源。如需 NTP 和公有時間來源的詳細資訊,請參閱 http://www.ntp.org/。執行個體需要存取網際網路才能讓外部 NTP 時間來源運作。

在 Amazon Linux AMI 上設定 Amazon Time Sync Service

注意

在 Amazon Linux 2 上,預設的 chrony 組態已設定使用 Amazon Time Sync Service IP 地址。

您必須使用 Amazon Linux AMI,編輯 chrony 組態檔,以新增 Amazon Time Sync Service 的伺服器項目。

設定您的執行個體使用 Amazon Time Sync Service

  1. 連線到您的執行個體,然後解除安裝 NTP 服務。

    [ec2-user ~]$ sudo yum erase 'ntp*'
  2. 安裝 chrony 套裝服務。

    [ec2-user ~]$ sudo yum install chrony
  3. 使用文字編輯器 (例如 vimnano) 開啟 /etc/chrony.conf 檔案。確認檔案是否包含下列程式碼行:

    server 169.254.169.123 prefer iburst

    如有此程式碼,則 Amazon Time Sync Service 已設定,您可前往下一個步驟。如果沒有,請將該行程式碼新增在檔案中已有之任何其他 serverpool 陳述式之後,然後儲存您的變更。

  4. 啟動 chrony 協助程式 (chronyd)。

    [ec2-user ~]$ sudo service chronyd start
    Starting chronyd: [ OK ]

    注意

    在 RHEL 和 CentOS (最新為 6 版) 上,服務名稱為 chrony,而不是 chronyd

  5. 使用 chkconfig 命令設定 chronyd 在每次系統開機時啟動。

    [ec2-user ~]$ sudo chkconfig chronyd on
  6. 確認 chrony 是否使用 169.254.169.123 IP 地址來同步時間。

    [ec2-user ~]$ chronyc sources -v
    210 Number of sources = 7 .-- Source mode '^' = server, '=' = peer, '#' = local clock. / .- Source state '*' = current synced, '+' = combined , '-' = not combined, | / '?' = unreachable, 'x' = time may be in error, '~' = time too variable. || .- xxxx [ yyyy ] +/- zzzz || Reachability register (octal) -. | xxxx = adjusted offset, || Log2(Polling interval) --. | | yyyy = measured offset, || \ | | zzzz = estimated error. || | | \ MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* 169.254.169.123 3 6 17 43 -30us[ -226us] +/- 287us ^- ec2-12-34-231-12.eu-west> 2 6 17 43 -388us[ -388us] +/- 11ms ^- tshirt.heanet.ie 1 6 17 44 +178us[ +25us] +/- 1959us ^? tbag.heanet.ie 0 6 0 - +0ns[ +0ns] +/- 0ns ^? bray.walcz.net 0 6 0 - +0ns[ +0ns] +/- 0ns ^? 2a05:d018:c43:e312:ce77:> 0 6 0 - +0ns[ +0ns] +/- 0ns ^? 2a05:d018:dab:2701:b70:b> 0 6 0 - +0ns[ +0ns] +/- 0ns

    在傳回的輸出中,^* 表示偏好的時間來源。

  7. 確認時間同步指標是否由 chrony 回報。

    [ec2-user ~]$ chronyc tracking
    Reference ID : A9FEA97B (169.254.169.123) Stratum : 4 Ref time (UTC) : Wed Nov 22 13:18:34 2017 System time : 0.000000626 seconds slow of NTP time Last offset : +0.002852759 seconds RMS offset : 0.002852759 seconds Frequency : 1.187 ppm fast Residual freq : +0.020 ppm Skew : 24.388 ppm Root delay : 0.000504752 seconds Root dispersion : 0.001112565 seconds Update interval : 64.4 seconds Leap status : Normal

在 Ubuntu 上設定 Amazon Time Sync Service

您必須編輯 chrony 組態檔,新增 Amazon Time Sync Service 的伺服器項目。

設定您的執行個體使用 Amazon Time Sync Service

  1. 連線至您的執行個體,然後使用 apt 來安裝 chrony 套件。

    ubuntu:~$ sudo apt install chrony

    注意

    如有必要,請執行 sudo apt update 先更新您的執行個體。

  2. 使用文字編輯器 (例如 vimnano) 開啟 /etc/chrony/chrony.conf 檔案。將下列程式碼新增在檔案中已有之任何其他 serverpool 的陳述式之前,然後儲存您的變更:

    server 169.254.169.123 prefer iburst
  3. 重新啟動 chrony 服務。

    ubuntu:~$ sudo /etc/init.d/chrony restart
    [ ok ] Restarting chrony (via systemctl): chrony.service.
  4. 確認 chrony 是否使用 169.254.169.123 IP 地址來同步時間。

    ubuntu:~$ chronyc sources -v
    210 Number of sources = 7 .-- Source mode '^' = server, '=' = peer, '#' = local clock. / .- Source state '*' = current synced, '+' = combined , '-' = not combined, | / '?' = unreachable, 'x' = time may be in error, '~' = time too variable. || .- xxxx [ yyyy ] +/- zzzz || Reachability register (octal) -. | xxxx = adjusted offset, || Log2(Polling interval) --. | | yyyy = measured offset, || \ | | zzzz = estimated error. || | | \ MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* 169.254.169.123 3 6 17 12 +15us[ +57us] +/- 320us ^- tbag.heanet.ie 1 6 17 13 -3488us[-3446us] +/- 1779us ^- ec2-12-34-231-12.eu-west- 2 6 17 13 +893us[ +935us] +/- 7710us ^? 2a05:d018:c43:e312:ce77:6 0 6 0 10y +0ns[ +0ns] +/- 0ns ^? 2a05:d018:d34:9000:d8c6:5 0 6 0 10y +0ns[ +0ns] +/- 0ns ^? tshirt.heanet.ie 0 6 0 10y +0ns[ +0ns] +/- 0ns ^? bray.walcz.net 0 6 0 10y +0ns[ +0ns] +/- 0ns

    在傳回的輸出中,^* 表示偏好的時間來源。

  5. 確認時間同步指標是否由 chrony 回報。

    ubuntu:~$ chronyc tracking
    Reference ID : 169.254.169.123 (169.254.169.123) Stratum : 4 Ref time (UTC) : Wed Nov 29 07:41:57 2017 System time : 0.000000011 seconds slow of NTP time Last offset : +0.000041659 seconds RMS offset : 0.000041659 seconds Frequency : 10.141 ppm slow Residual freq : +7.557 ppm Skew : 2.329 ppm Root delay : 0.000544 seconds Root dispersion : 0.000631 seconds Update interval : 2.0 seconds Leap status : Normal

在 SUSE Linux 上設定 Amazon Time Sync Service

https://software.opensuse.org/package/chrony 安裝 chrony。

使用文字編輯器 (例如 vimnano) 開啟 /etc/chrony.conf 檔案。確認檔案是否包含下列程式碼行:

server 169.254.169.123 prefer iburst

如果此程式碼不存在,請新增它。將任何其他伺服器或集區的程式碼行變更為註解。開啟 yast 並啟用 chrony 服務。

變更 Amazon Linux 的時區

根據預設,Amazon Linux 執行個體設定為 UTC (國際標準時間) 時區,但您可能想把執行個體的時間變更為當地時間或您網路的其他時區。

重要

這些程序專用於 Amazon Linux。如需其他分發的詳細資訊,請參閱其特定文件。

變更執行個體的時區

  1. 找出執行個體使用的時區。/usr/share/zoneinfo 目錄包含時區資料檔案的階層。瀏覽該位置的目錄結構尋找您時區的檔案。

    [ec2-user ~]$ ls /usr/share/zoneinfo Africa Chile GB Indian Mideast posixrules US America CST6CDT GB-Eire Iran MST PRC UTC Antarctica Cuba GMT iso3166.tab MST7MDT PST8PDT WET Arctic EET GMT0 Israel Navajo right W-SU ...

    此位置有些項目是目錄 (例如 America),這些目錄包含特定城市的時區檔案。找出用於執行個體的所在城市 (或所在時區的城市)。在本範例中,您可以使用洛杉磯的時區檔案 /usr/share/zoneinfo/America/Los_Angeles

  2. 使用新的時區更新 /etc/sysconfig/clock 檔案。

    1. 使用您喜愛的文字編輯器 (例如 vimnano) 開啟 /etc/sysconfig/clock 檔案。您需要使用 sudo 搭配編輯器命令,因為 /etc/sysconfig/clock 的擁有者是 root

    2. 找到 ZONE 項目,將它變更為時區檔案 (省略路徑的 /usr/share/zoneinfo 區段)。例如,若要變更至洛杉磯,請將 ZONE 項目變更成:

      ZONE="America/Los_Angeles"

      注意

      UTC=true 項目不要變更成其他值。此項目用於硬體時鐘,當您在執行個體上設定不同時區時不需要調整。

    3. 儲存檔案,然後結束文字編輯器。

  3. 建立 /etc/localtime 和您時區檔案之間的符號連結,以便執行個體參考本機時間資訊時尋找時間檔案。

    [ec2-user ~]$ sudo ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime
  4. 重新開機系統以在所有服務和應用程式中挑選新的時區資訊。

    [ec2-user ~]$ sudo reboot