مزامنة الوقت لأجهزة Windows الظاهرية في Azure

ينطبق على: ✔️ أجهزة Windows الظاهرية ✔️ مجموعات المقاييس المرنة ✔️ مجموعات المقاييس الموحدة

تعد مزامنة الوقت مهمة للأمان وربط الأحداث. في بعض الأحيان يتم استخدامه لتنفيذ المعاملات الموزعة. تتحقق دقة الوقت بين أنظمة الكمبيوتر المتعددة من خلال المزامنة. قد تتأثر المزامنة بعدة أشياء بما في ذلك عمليات إعادة التشغيل وحركة مرور الشبكة بين مصدر الوقت والكمبيوتر الذي يجلب الوقت.

نظرة عامة

يتم قياس دقة ساعة الكمبيوتر بناءً على مدى قرب ساعة الكمبيوتر من معيار التوقيت العالمي المتفق عليه (UTC). يتم تعريف التوقيت العالمي المتفق عليه بواسطة عينة متعددة الجنسيات من الساعات الذرية الدقيقة التي لا يمكن إيقاف تشغيلها إلا بمقدار ثانية واحدة خلال 300 عام. ولكن، تتطلب قراءة التوقيت العالمي المتفق عليه مباشرةً أجهزة متخصصة. بدلاً من ذلك، تتم مزامنة خوادم الوقت مع التوقيت العالمي المتفق عليه ويتم الوصول إليها من أجهزة كمبيوتر أخرى لتوفير قابلية التوسع والمتانة. تضم جميع أجهزة الكمبيوتر خدمة مزامنة الوقت قيد التشغيل والتي تعرف خوادم الوقت التي يجب استخدامها وتتحقق بشكلٍ دوري مما إذا كانت ساعة الكمبيوتر بحاجة إلى التصحيح وضبط الوقت إذا لزم الأمر.

تتم مزامنة مضيفي Azure مع خوادم وقت Microsoft الداخلية التي تستمد وقتها من أجهزة Stratum 1 المملوكة لشركة Microsoft، باستخدام هوائيات GPS. قد تعتمد الأجهزة الظاهرية في Azure إما على مضيفها لتمرير الوقت الدقيق (وقت المضيف) إلى الجهاز الظاهري أو يمكن للجهاز الظاهري الحصول على الوقت مباشرةً من خادم الوقت أو كليهما.

قد تؤثر تفاعلات الجهاز الظاهري مع المضيف على الساعة كذلك. أثناء صيانة الحفاظ على الذاكرة، يتم إيقاف الأجهزة الظاهرية مؤقتاً لمدة تصل إلى 30 ثانية. على سبيل المثال، قبل بدء الصيانة، تظهر ساعة الجهاز الظاهري 10:00:00 صباحاً وتستمر 28 ثانية. بعد استئناف تشغيل الجهاز الظاهري، ستظل الساعة على الجهاز الظاهري 10:00:00 صباحاً، والتي ستكون 28 ثانية من إيقاف التشغيل. لتصحيح ذلك، تراقب خدمة VMICTimeSync ما يحدث على المضيف وتطالب بإجراء تغييرات على الأجهزة الظاهرية للتعويض.

تعمل خدمة VMICTimeSync إما في وضع العينة أو المزامنة وستؤثر فقط على الساعة للأمام. في وضع العينة، الذي يتطلب تشغيل W32time، تقوم خدمة VMICTimeSync باستطلاع المضيف كل 5 ثوان وتوفر عينات الوقت إلى W32time. كل 30 ثانية تقريبا، تأخذ خدمة W32time أحدث عينة من الوقت وتستخدمها للتأثير على ساعة الضيف. يتم تنشيط وضع المزامنة إذا تم استئناف الضيف أو إذا انحرفت ساعة الضيف لأكثر من 5 ثوان عن ساعة المضيف. في الحالات التي تعمل فيها خدمة W32time بشكل صحيح، يجب ألا تحدث الحالة الأخيرة أبدا.

بدون عمل مزامنة الوقت، سوف تتراكم الأخطاء على مدار الساعة على الجهاز الظاهري. عندما يكون هناك جهاز ظاهري واحد فقط، قد لا يكون التأثير مهما ما لم يتطلب حمل العمل ضبطا دقيقا للغاية للوقت. ولكن في معظم الحالات، لدينا أجهزة ظاهرية متعددة ومترابطة تستخدم الوقت لتتبع المعاملات ويجب أن يكون الوقت متسقاً طوال عملية النشر بأكملها. عندما يختلف الوقت بين الأجهزة الظاهرية، يمكنك رؤية التأثيرات التالية:

  • فشل المصادقة. تعتمد بروتوكولات الأمان مثل Kerberos أو التكنولوجيا المعتمدة على الشهادات على الوقت المتسق عبر الأنظمة.
  • من الصعب جدا معرفة ما حدث في النظام إذا كانت السجلات (أو البيانات الأخرى) لا تتفق في الوقت المحدد. سيبدو نفس الحدث وكأنه حدث في أوقات مختلفة، ما يجعل الارتباط صعباً.
  • في حالة إيقاف تشغيل الساعة، قد يتم حساب الفوترة بشكل غير صحيح.

يتم تحقيق أفضل النتائج لتوزيعات Windows باستخدام Windows Server 2016 كنظام تشغيل ضيف، ما يضمن إمكانية استخدام أحدث التحسينات في مزامنة الوقت.

خيارات الإعداد

هناك ثلاثة خيارات لتكوين مزامنة الوقت لأجهزة Windows الظاهرية المستضافة في Azure:

استخدام الإعداد الافتراضي

بشكل افتراضي، يتم تكوين صور Windows OS VM ل w32time للمزامنة من مصدرين:

  • موفر NtpClient، الذي يحصل على معلومات من time.windows.com.
  • خدمة VMICTimeSync، تستخدم لتوصيل وقت المضيف إلى الأجهزة الظاهرية وإجراء التصحيحات بعد إيقاف الجهاز الظاهري مؤقتا للصيانة. يستخدم مضيفو Azure أجهزة Stratum 1 المملوكة من Microsoft للحفاظ على الوقت الدقيق.

سيفضل w32time موفر الوقت بالترتيب التالي للأولوية: مستوى الستراتوم، وتأخير الجذر، وتشتت الجذر، وإزاحة الوقت. في معظم الحالات، يفضل w32time على جهاز Azure الظاهري وقت المضيف بسبب التقييم الذي سيقوم به لمقارنة كلا مصدري الوقت.

بالنسبة للأجهزة المنضمة إلى المجال، ينشئ المجال نفسه تسلسلا هرميا لمزامنة الوقت، ولكن جذر الغابة لا يزال بحاجة إلى أخذ الوقت من مكان ما وستظل الاعتبارات التالية صحيحة.

المضيف فقط

نظرا لأن time.windows.com هو خادم NTP عام، فإن مزامنة الوقت معه تتطلب إرسال نسبة استخدام الشبكة عبر الإنترنت، يمكن أن تؤثر تأخيرات الحزم المختلفة سلبا على جودة مزامنة الوقت. يمكن أن تؤدي إزالة time.windows.com عن طريق التبديل إلى مزامنة المضيف فقط في بعض الأحيان إلى تحسين نتائج مزامنة الوقت.

يكون التبديل إلى مزامنة الوقت المضيف فقط منطقيا إذا واجهت مشكلات في مزامنة الوقت باستخدام التكوين الافتراضي. جرب مزامنة المضيف فقط لمعرفة ما إذا كان ذلك من شأنه تحسين مزامنة الوقت على الجهاز الظاهري.

خادم الوقت الخارجي

إذا كانت لديك متطلبات مزامنة زمنية محددة، فهناك أيضا خيار استخدام خوادم الوقت الخارجية. يمكن أن توفر خوادم الوقت الخارجي وقتا محددا، والذي يمكن أن يكون مفيدا لسيناريوهات الاختبار، أو ضمان تماثل الوقت مع الأجهزة المستضافة في مراكز بيانات غير تابعة ل Microsoft، أو التعامل مع الثوان الكبسة بطريقة خاصة.

يمكنك دمج الخوادم الخارجية مع خدمة VMICTimeSync وVMICTimeProvider لتوفير نتائج مشابهة للتكوين الافتراضي.

التحقق من التكوين الخاص بك

تحقق مما إذا تم تكوين موفر وقت NtpClient لاستخدام خوادم NTP الصريحة (NTP) أو مزامنة وقت المجال (NT5DS).

w32tm /dumpreg /subkey:Parameters | findstr /i "type"

إذا كان الجهاز الظاهري يستخدم NTP، فسترى الإخراج التالي:

Value Name                 Value Type          Value Data
Type                       REG_SZ              NTP

لمعرفة خادم الوقت الذي يستخدمه موفر الوقت NtpClient، في نوع موجه أوامر غير مقيد:

w32tm /dumpreg /subkey:Parameters | findstr /i "ntpserver"

إذا كان الجهاز الظاهري يستخدم الافتراضي، فسيبدو الإخراج كما يلي:

NtpServer                  REG_SZ              time.windows.com,0x8

لمعرفة موفر الوقت المستخدم حاليا.

w32tm /query /source

فيما يلي الإخراج الذي يمكنك رؤيته وما يعنيه:

  • time.windows.com - في التكوين الافتراضي، سيحصل w32time على الوقت من time.windows.com. تعتمد جودة مزامنة الوقت على اتصال الإنترنت بها وتتأثر بتأخير الحزمة. هذا هو الإخراج المعتاد الذي ستحصل عليه على جهاز فعلي.
  • موفر مزامنة وقت VM IC - يقوم الجهاز الظاهري بمزامنة الوقت من المضيف. هذا هو الإخراج المعتاد الذي ستحصل عليه على جهاز ظاهري يعمل على Azure.
  • خادم المجال الخاص بك - الجهاز الحالي في مجال ويحدد المجال التسلسل الهرمي لمزامنة الوقت.
  • تم تكوين بعض الخوادم الأخرى - w32time بشكل صريح للحصول على الوقت من ذلك الخادم الآخر. تعتمد جودة مزامنة الوقت على جودة خادم الوقت هذه.
  • ساعة CMOS المحلية - الساعة غير متزامنة. يمكنك الحصول على هذا الإخراج إذا لم يكن لدى w32time وقت كاف للبدء بعد إعادة التشغيل أو عندما لا تتوفر جميع مصادر الوقت المكونة.

الاشتراك في مزامنة وقت المضيف فقط

يعمل Azure باستمرار على تحسين مزامنة الوقت على المضيفين ويمكن أن يضمن تجميع جميع البنية الأساسية للمزامنة الزمنية في مراكز البيانات المملوكة ل Microsoft. إذا كانت لديك مشكلات في مزامنة الوقت مع الإعداد الافتراضي الذي يفضل استخدام time.windows.com كمصدر الوقت الأساسي، يمكنك استخدام الأوامر التالية للاشتراك في مزامنة الوقت المضيف فقط.

وضع علامة على موفر VMIC على أنه ممكن.

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\TimeProviders\VMICTimeProvider /v Enabled /t REG_DWORD /d 1 /f

وضع علامة على موفر NTPClient على أنه معطل.

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\TimeProviders\NtpClient /v Enabled /t REG_DWORD /d 0 /f

أعد تشغيل خدمة w32time.

net stop w32time && net start w32time

الأجهزة الظاهرية ل Windows Server 2012 وR2

يحتوي Windows Server 2012 وWindows Server 2012 R2 على إعدادات افتراضية مختلفة للمزامنة الزمنية. يتم تكوين w32time بشكل افتراضي بطريقة تفضل الحمل المنخفض للخدمة على مدار وقت دقيق.

إذا كنت تريد نقل عمليات نشر Windows Server 2012 و2012 R2 لاستخدام الإعدادات الافتراضية الأحدث التي تفضل الوقت الدقيق، يمكنك تطبيق الإعدادات التالية.

قم بتحديث استقصاء w32time وتحديث الفواصل الزمنية لمطابقة إعدادات Windows Server 2016.

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\Config /v MinPollInterval /t REG_DWORD /d 6 /f
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\Config /v MaxPollInterval /t REG_DWORD /d 10 /f
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\Config /v UpdateInterval /t REG_DWORD /d 100 /f
w32tm /config /update

w32time لكي تتمكن من استخدام فواصل الاستقصاء الجديدة، يجب وضع علامة على NtpServers على أنها تستخدمها. إذا كانت الخوادم مشروحة بقناع 0x1 bitflag، فإن ذلك سيتجاوز هذه الآلية ويستخدم w32timeSpecialPollInterval بدلا من ذلك. تأكد من أن خوادم NTP المحددة إما تستخدم العلامة 0x8 أو لا توجد علامة على الإطلاق:

تحقق من العلامات المستخدمة لخوادم NTP.

w32tm /dumpreg /subkey:Parameters | findstr /i "ntpserver"

الخطوات التالية

فيما يلي روابط للحصول على مزيدٍ من التفاصيل حول مزامنة الوقت: