PowerScale:叢集上的時間未與 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 Time S 服務工具與設定 」頁面。
便條
如果無法連接兩個 AD 網域控制站,請確定有兩個 AD 網域控制站可供冗餘。時間必須遵循準確的層次結構,無論是來自公共 NTP 伺服器還是內部來源(例如配備 GPS 的系統)。
確認 AD 網域控制站支援 NTP,且防火牆或其他設定未封鎖 NTP:
-
在叢集的任何節點上開啟 SSH 連線,然後使用「root」帳戶登入。
-
執行下列命令,其中
<ipaddr1>和<ipaddr2>是第一個和第二個 AD 域控制器的 IP 位址:
ntpdate -q -u <ipaddr1>
ntpdate -q -u <ipaddr2>
如果 AD 域控制器支援 NTP,則每個命令的輸出類似於以下內容:
伺服器 <ipaddr1>,層 1,偏移 0.427215,延遲 0.04138
11 May 15:45:46 ntpdate[79498]:調整時間 <伺服器 ipaddr1> 偏移 0.427215 秒
如果 AD 域控制器不支援 NTP,則輸出類似於以下內容,在這種情況下,應與域管理員聯繫以獲取説明。
B5-10-3:11 May 15:49:40 ntpdate[79741]:找不到適合同步的伺服器
設定叢集上的時間,以符合 AD 網域控制站上的時間:
- 在叢集的任何節點上開啟 SSH 連線,然後使用「root」帳戶登入。
- 執行下列命令,其中
<ippaddr1>是您希望群集與之同步的 AD 域控制器的 IP 位址:
isi_for_array-s “ntpdate -u -b <ipaddr1>”
輸出結果類似於以下內容:
範例-1:11 May 15:49:48 ntpdate[79756]:步驟時間 <伺服器 ipaddr1> 偏移 0.541754 秒
示例 2:11 May 15:49:48 ntpdate[99580]:步驟時間伺服器 <ipaddr1> 偏移 0.541843 秒
示例 3:11 May 15:49:48 ntpdate[63251]:步驟時間伺服器 <ipaddr1> 偏移 0.480573 秒
刪除 ntp.drift 檔案:
可使用 ntp.drift 檔是系統時鐘的時鐘漂移的記錄。系統在積累足夠的數據后重新創建此檔。
-
在叢集的任何節點上開啟 SSH 連線,然後使用 root 帳戶登入。
-
根據您執行的 OneFS 版本,從命令列執行下列其中一個命令:
isi_for_array-sX “rm -fv /var/crash/ntp.drift”
將叢集設定為使用 AD 網域控制站作為 NTP 伺服器:
-
開啟 OneFS Web 管理介面,並執行下列其中一項動作:
-
在 OneFS 7.0 及更新版本中,按一下 叢集管理 > 一般設定 > NTP 標籤。
-
針對每個 AD 網域控制站,在 伺服器 IP 或主機名稱 方塊中輸入 IP 位址,然後按一下 新增。
-
按一下提交。
或者,您可以從命令提示符完成此任務:
-
在叢集的任何節點上開啟 SSH 連線,然後使用「root」帳戶登入。
-
執行下列命令,其中
<ipaddr1>和<ipaddr2>是第一個和第二個 AD 域控制器的 IP 位址:
isi_ntp_config新增伺服器 <ipaddr1>
isi_ntp_config新增伺服器 <ipaddr2>
便條
新的 NTP 設定可能需要 23 小時才能傳播到叢集中的所有節點。嵌合體節點將其時間同步到 AD 域控制器,群集中的節點將其時間同步到嵌合器節點。