إيقاف التشغيل الصحيح لبرنامج Hypervisor VMWare ESXi عندما يكون مستوى شحن بطارية APC UPS أمرًا بالغ الأهمية

هناك العديد من المقالات حول كيفية تكوين PowerChute Business Edition وكيفية الاتصال ببرنامج VMWare من PowerShell، ولكن بطريقة ما لم أتمكن من العثور على كل هذا في مكان واحد، مع وصف للنقاط الدقيقة. لكنهم موجودون.

1. دخول

على الرغم من أن لدينا بعض الارتباط بالطاقة، إلا أن مشاكل الكهرباء تنشأ أحيانًا. وهنا يأتي دور UPS، لكن بطارياتها، للأسف، لا تدوم طويلاً. ما يجب القيام به؟ أطفأ!

على الرغم من أن جميع الخوادم كانت فعلية، إلا أن الأمور كانت تسير على ما يرام، وقد ساعدنا PowerChute Business Edition. مجانًا، لخمسة خوادم، وهو ما يكفي تمامًا. تم تثبيت الوكيل والخادم ووحدة التحكم على جهاز واحد. ومع اقتراب النهاية، قام العميل ببساطة بتنفيذ ملف أوامر أرسل Shutdown.exe /s /m إلى الخوادم المجاورة، ثم قام بإيقاف تشغيل نظام التشغيل الخاص به. الجميع على قيد الحياة.
ثم حان الوقت للأجهزة الافتراضية.

2. الخلفية والتأملات

اذن ماذا عندنا؟ لا شيء على الإطلاق - خادم فعلي واحد يعمل بنظام التشغيل Windows Server 2008 R2 وبرنامج Hypervisor واحد مزود بالعديد من الأجهزة الافتراضية، بما في ذلك Windows Server 2019 وWindows Server 2003 وCentOS. و UPS آخر - APC Smart-UPS.

لقد سمعنا عن NUT، لكننا لم نقم بدراسته بعد؛ لقد استخدمنا فقط ما كان في متناول أيدينا، وهو PowerChute Business Edition.

يستطيع برنامج Hypervisor إيقاف تشغيل أجهزته الافتراضية بنفسه، وكل ما يتبقى هو إخباره بأن الوقت قد حان. يوجد شيء مفيد مثل VMWare.PowerCLI، وهو امتداد لـ Windows Powershell الذي يسمح لك بالاتصال ببرنامج Hypervisor وإخباره بكل ما تحتاجه. هناك أيضًا العديد من المقالات حول إعدادات PowerCLI.

3. العملية

تم توصيل UPS فعليًا بمنفذ com الخاص بخادم 2008، ولحسن الحظ كان هناك. على الرغم من أن هذا ليس مهمًا - إلا أنه كان من الممكن الاتصال عبر محول الواجهة (MOXA) بأي خادم Windows افتراضي. علاوة على ذلك، يتم تنفيذ جميع الإجراءات على الجهاز المتصل به UPS - Windows Server 2008، ما لم يُنص صراحةً على خلاف ذلك. تم تثبيت وكيل PowerChute Business Edition عليه. هذه هي النقطة الدقيقة الأولى: يجب إطلاق خدمة الوكيل ليس من النظام، ولكن من المستخدم، وإلا فلن يتمكن الوكيل من تنفيذ ملف cmd.

بعد ذلك قمنا بتثبيت .Net Framework 4.7. مطلوب إعادة التشغيل هنا، حتى لو لم يطلب إطار العمل ذلك صراحةً بعد التثبيت، وإلا فلن يذهب أبعد من ذلك. بعد ذلك، قد تستمر التحديثات في الوصول، والتي تحتاج أيضًا إلى التثبيت.

بعد ذلك قمنا بتثبيت PowerShell 5.1. يتطلب أيضًا إعادة التشغيل، حتى لو لم يسأل.
بعد ذلك، قم بتثبيت PowerCLI 11.5. إصدار حديث تمامًا، وبالتالي المتطلبات السابقة. يمكنك القيام بذلك عبر الإنترنت، هناك العديد من المقالات حول هذا الموضوع، لكننا قمنا بتنزيله بالفعل، لذلك قمنا للتو بنسخ جميع الملفات إلى مجلد الوحدات.

التحقق:

Get-Module -ListAvailable

حسنًا، نرى أننا قمنا بتثبيت:

Import-Module VMWare.PowerCLI

نعم، يتم بالطبع تشغيل وحدة تحكم Powershell كمسؤول.

إعدادات بوويرشيل.

  • السماح بتنفيذ أي نصوص برمجية:

Set-ExecutionPolicy Unrestricted

  • أو يمكنك السماح فقط بتجاهل شهادات البرامج النصية:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 

  • السماح لـ PowerCLI بالاتصال بالخوادم ذات الشهادات غير الصالحة (منتهية الصلاحية):

Set-PowerCLIConfiguration -InvalidCertificateAction ignore -confirm:$false

  • منع إخراج رسالة PowerCLI حول الانضمام إلى برنامج تبادل الخبرات، وإلا سيكون هناك الكثير من المعلومات غير الضرورية في السجل:

Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false

  • احفظ بيانات اعتماد المستخدم لتسجيل الدخول إلى مضيف VMWare حتى لا تظهرها بشكل صريح في البرنامج النصي:

New-VICredentialStoreItem -Host address -User user -Password 'password'

سيُظهر التحقق من قمنا بحفظه:

Get-VICredentialStoreItem

يمكنك أيضًا التحقق من الاتصال: عنوان Connect-VIServer.

البرنامج النصي نفسه، على سبيل المثال: متصل، متوقف عن التشغيل، منفصل فقط في حالة وجود الخيارات التالية:


    Connect-VIserver -Server $vmhost 
    Stop-VMHost $vmhost -force -Confirm:$false 
    Disconnect-VIserver $vmhost -Confirm:$false

4. الافتراضي.cmd

نفس الملف الدفعي الذي يتم تشغيله بواسطة وكيل APC. وهو موجود في "C:Program Files[(x86)]APCPowerChute Business Editionagentcmdfiles"، وداخل:

"C:Windowssystem32WindowsPowerShellv1.0powershell.exe" -الملف "C:...shutdown_hosts.ps1"
يبدو أنه تم تكوين كل شيء وفحصه، حتى أننا أطلقنا cmd - وهو يعمل بشكل صحيح، ويتم إيقاف تشغيله.

نقوم بإجراء اختبار ملف الأوامر من وحدة تحكم APC (يوجد زر اختبار هناك) - لا يعمل.

ها هي تلك اللحظة المحرجة عندما لم يؤد كل العمل المنجز إلى أي شيء.

5. التنفيس

نحن ننظر إلى مدير المهام، ونرى ومضات cmd، ومضات بوويرشيل. دعونا نلقي نظرة فاحصة - cmd *32، وبالتالي، Powershell *32. نحن نفهم ذلك خدمة وكيل APC هي 32 بت، مما يعني أنها تقوم بتشغيل وحدة التحكم المقابلة.

نقوم بتشغيل Powershell x86 كمسؤول، ونقوم بتثبيت PowerCLI وتكوينه من الخطوة 3 مرة أخرى.

حسنًا، فلنغير خط اتصال بوويرشيل:

"C:Windows<b>SysWOW64</b>WindowsPowerShellv1.0powershell.exe…

6. نهاية سعيدة!

المصدر: www.habr.com

إضافة تعليق