การปิดระบบไฮเปอร์ไวเซอร์ VMWare ESXi อย่างสง่างามที่ระดับแบตเตอรี่วิกฤตของ APC UPS

มีบทความมากมายเกี่ยวกับวิธีกำหนดค่า PowerChute Business Edition และวิธีเชื่อมต่อกับ VMWare จาก PowerShell แต่อย่างไรก็ตาม ฉันไม่พบทั้งหมดนี้ในที่เดียว พร้อมด้วยคำอธิบายของประเด็นที่ละเอียดอ่อน แต่พวกเขามีอยู่จริง

1 การเข้า

แม้ว่าเราจะมีความเกี่ยวข้องกับพลังงานบ้าง แต่บางครั้งปัญหาเกี่ยวกับไฟฟ้าก็เกิดขึ้น นี่คือจุดที่ UPS เข้ามามีบทบาท แต่แบตเตอรี่ของมันใช้งานได้ไม่นาน จะทำอย่างไร? ปิด!

แม้ว่าเซิร์ฟเวอร์ทั้งหมดจะเป็นเซิร์ฟเวอร์จริง แต่สิ่งต่างๆ ดำเนินไปด้วยดี PowerChute Business Edition ช่วยเราในเรื่องนี้ ฟรีสำหรับ 5 เซิร์ฟเวอร์ ซึ่งก็เพียงพอแล้ว มีการติดตั้งเอเจนต์ เซิร์ฟเวอร์ และคอนโซลไว้ในเครื่องเดียว เมื่อใกล้ถึงจุดสิ้นสุด เอเจนต์เพียงเรียกใช้งานไฟล์คำสั่งที่ส่ง shutdown.exe /s /m ไปยังเซิร์ฟเวอร์ใกล้เคียง จากนั้นจึงปิดระบบปฏิบัติการ ทุกคนยังมีชีวิตอยู่
จากนั้นก็ถึงเวลาสำหรับเครื่องเสมือน

2. พื้นหลังและการสะท้อน

แล้วเรามีอะไรบ้าง? ไม่มีอะไรเลย - เซิร์ฟเวอร์จริงหนึ่งเครื่องพร้อม Windows Server 2008 R2 และไฮเปอร์ไวเซอร์หนึ่งเครื่องพร้อมเครื่องเสมือนหลายเครื่อง รวมถึง Windows Server 2019, Windows Server 2003 และ CentOS และ UPS อีกเครื่อง – APC Smart-UPS

เราได้ยินเกี่ยวกับ NUT แต่ยังไม่ได้ศึกษาเลย เราใช้เฉพาะสิ่งที่มีอยู่ในมือเท่านั้น นั่นคือ PowerChute Business Edition

ไฮเปอร์ไวเซอร์สามารถปิดเครื่องเสมือนของตัวเองได้ สิ่งที่เหลืออยู่คือการบอกว่าถึงเวลาแล้ว มีสิ่งที่มีประโยชน์เช่น VMWare.PowerCLI ซึ่งเป็นส่วนขยายสำหรับ Windows Powershell ที่ให้คุณเชื่อมต่อกับไฮเปอร์ไวเซอร์และบอกทุกสิ่งที่คุณต้องการ นอกจากนี้ยังมีบทความมากมายเกี่ยวกับการตั้งค่า 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 ค่อนข้างเป็นเวอร์ชันล่าสุด ดังนั้นข้อกำหนดก่อนหน้านี้ คุณสามารถทำได้ผ่านอินเทอร์เน็ตมีบทความมากมายเกี่ยวกับเรื่องนี้ แต่เราดาวน์โหลดไปแล้วดังนั้นเราจึงคัดลอกไฟล์ทั้งหมดไปยังโฟลเดอร์ Modules

ตรวจสอบแล้ว:

Get-Module -ListAvailable

ตกลง เราเห็นว่าเราได้ติดตั้งแล้ว:

Import-Module VMWare.PowerCLI

ใช่ แน่นอนว่าคอนโซล Powershell เปิดตัวในฐานะผู้ดูแลระบบ

การตั้งค่า 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. Default.cmd

แบตช์ไฟล์เดียวกับที่เอเจนต์ APC เรียกใช้ ซึ่งอยู่ใน “C:Program Files[ (x86)]APCPowerChute Business Editionagentcmdfiles” และภายใน:

"C:Windowssystem32WindowsPowerShellv1.0powershell.exe" - ไฟล์ "C:...shutdown_hosts.ps1"
ดูเหมือนว่าทุกอย่างได้รับการกำหนดค่าและตรวจสอบแล้ว เรายังเปิดตัว cmd อีกด้วย ซึ่งทำงานได้อย่างถูกต้อง ปิดการทำงาน

เรารันการทดสอบไฟล์คำสั่งจากคอนโซล APC (มีปุ่มทดสอบอยู่ที่นั่น) - มันไม่ทำงาน

นี่คือช่วงเวลาที่น่าอึดอัดใจเมื่องานที่ทำไปทั้งหมดไม่ได้ทำอะไรเลย

5. การระบาย

เราดูที่ตัวจัดการงาน เราเห็น cmd กะพริบ กะพริบ PowerShell มาดูกันดีกว่า - cmd *32 และตามด้วย powershell *32 เราเข้าใจสิ่งนั้น บริการตัวแทน APC เป็นแบบ 32 บิต ซึ่งหมายความว่าจะเรียกใช้คอนโซลที่เกี่ยวข้อง

เราเปิดตัว PowerShell x86 ในฐานะผู้ดูแลระบบ และติดตั้งและกำหนดค่า PowerCLI จากขั้นตอนที่ 3 อีกครั้ง

เรามาเปลี่ยนสายเรียก PowerShell กันดีกว่า:

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

6. จบอย่างมีความสุข!

ที่มา: will.com

เพิ่มความคิดเห็น