PowerScale:OneFS:叢集上的時間未與 Active Directory 同步
Summary: 叢集上的時間未與 Active Directory 網域控制站同步。這可能會導致用戶端驗證錯誤。
Symptoms
如果 Active Directory 時間與叢集時間相差超過四分鐘,用戶端可能無法進行驗證。加入 AD 網域的叢集必須與網域控制站的時間緊密相符。節點時鐘可能會相差幾秒鐘或最多一分鐘,但四分鐘或更長時間的差異可能會導致下列症狀:
- Windows 用戶端無法通過叢集驗證。
- 發送有關時間同步錯誤的警報。
- 可使用
/var/log/messages檔案包含類似以下內容的項目:
2014-04-07T04:15:01-03:00 <4.5> example-1(id1) lsass[60726]: GSSAPI Error: Unspecified GSS failure. Minor code may provide more information (Clock skew too great) 2014-04-07T07:41:28-03:00 <30.3> example-3(id3) lsass[59264]: [lsass] Resetting schannel due to status STATUS_TIME_DIFFERENCE_AT_DC (0xc0000133) while authenticating user 'LAB\jdoe' 2014-04-07T07:41:28-03:00 <30.3> example-3(id3) lsass[59264]: [lsass] AD_NetrlogonOpenSchannel(dc1.example.com) failed with 3221225779 (0xc0000133) (symbol: 'STATUS_TIME_DIFFERENCE_AT_DC') 2014-04-07T07:41:28-03:00 <30.3> example-3(id3) lsass[59264]: [lsass] Network error connecting to EXAMPLE.COM. Error code: 40134 (symbol: LW_ERROR_RPC_ERROR) 2014-04-07T07:41:28-03:00 <30.5> example-3(id3) lsass[59264]: [lsass] Domain 'example.com' is now offline
Cause
在 OneFS 中,時間同步以兩種方式管理:
-
內部時間同步 (叢集節點內)
- 外部時間同步 (叢集外)
當集群加入 AD 域時,默認情況下它會使用 Server Messenger 塊 (SMB) 進行外部時間同步,精確到秒。在內部,網路時間協定 (NTP) 以毫秒精度管理時間同步。
若要防止在與 AD 域控制器同步時出現大量時間更正,請將控制器配置為使用 NTP 而不是 SMB 以提高精度。重大調整可能會導致性能問題,例如 Kerberos 票證顯示已過期並觸發身份驗證錯誤。
Resolution
確認叢集與網域之間的時間偏差:
# isi_for_array -s date
# isi_for_array -s /usr/likewise/bin/lw-get-dc-time <domain_name>
確認已正確設定時間同步:
執行下列所有步驟,以設定 AD 網域控制站,並確保叢集與 AD 控制器正確同步。
在 Active Directory 伺服器上配置 NTP:
若為 Windows 2003 - 2012 Server,請設定 NTP 以參照您的 NTP 伺服器。如需詳細資訊,請參閱 Microsoft TechNet 網站上的 Windows 時間服務工具與設定
頁面。
便條:
如果無法連接兩個 AD 網域控制站,請確定有兩個 AD 網域控制站可供冗餘。時間必須遵循準確的層次結構,無論是來自公共 NTP 伺服器還是內部來源(例如配備 GPS 的系統)。
確認 AD 網域控制站支援 NTP,且防火牆或其他設定未封鎖 NTP:
- 在叢集的任何節點上開啟 SSH 連線,然後使用「root」帳戶登入。
- 執行下列命令,其中
<ipaddr1>和<ipaddr2>是第一個和第二個 AD 域控制器的 IP 位址:
ntpdate -q -u <ipaddr1> ntpdate -q -u <ipaddr2>
如果 AD 域控制器支援 NTP,則每個命令的輸出類似於以下內容:
server <ipaddr1>, stratum 1, offset 0.427215, delay 0.04138
11 May 15:45:46 ntpdate[79498]: adjust time server <ipaddr1> offset 0.427215 sec
如果 AD 域控制器不支援 NTP,則輸出類似於以下內容,在這種情況下,應與域管理員聯繫以獲取説明。
b5-10-3: 11 May 15:49:40 ntpdate[79741]: no server suitable for synchronization found
設定叢集上的時間,以符合 AD 網域控制站上的時間:
- 在叢集的任何節點上開啟 SSH 連線,然後使用「root」帳戶登入。
- 執行下列命令,其中
<ippaddr1>是您希望群集與之同步的 AD 域控制器的 IP 位址:isi_for_array -s "ntpdate -u -b <ipaddr1>"
輸出結果類似於以下內容:
example-1: 11 May 15:49:48 ntpdate[79756]: step time server <ipaddr1> offset 0.541754 sec
example-2: 11 May 15:49:48 ntpdate[99580]: step time server <ipaddr1> offset 0.541843 sec
example-3: 11 May 15:49:48 ntpdate[63251]: step time server <ipaddr1> offset 0.480573 sec
刪除 ntp.drift 檔案:
可使用 ntp.drift 檔是系統時鐘的時鐘漂移的記錄。系統在積累足夠的數據后重新創建此檔。
-
在叢集的任何節點上開啟 SSH 連線,然後使用「root」帳戶登入。
-
根據您執行的 OneFS 版本,從命令列執行下列其中一個命令:
isi_for_array -sX "rm -fv /var/crash/ntp.drift"
將叢集設定為使用 AD 網域控制站作為 NTP 伺服器:
-
開啟 OneFS Web 管理介面,並執行下列其中一項動作:
-
在 OneFS WebUI 中,按一下叢集管理 > 一般設定 > NTP 標籤。
-
針對每個 AD 網域控制站,在 伺服器 IP 或主機名稱 方塊中輸入 IP 位址,然後按一下 新增。
-
按一下提交。
或者,您可以從命令提示符完成此任務:
-
在叢集的任何節點上開啟 SSH 連線,然後使用「root」帳戶登入。
-
執行下列命令,其中
<ipaddr1>和<ipaddr2>是第一個和第二個 AD 域控制器的 IP 位址:isi_ntp_config add server <ipaddr1> isi_ntp_config add server <ipaddr2>
便條
新的 NTP 設定可能需要 23 小時才能傳播到叢集中的所有節點。嵌合體節點將其時間同步到 AD 域控制器,群集中的節點將其時間同步到嵌合器節點。