การตรวจจับเมื่อเซิร์ฟเวอร์ทำงานบนแบตเตอรี่ของ UPS


24

ฉันมีเซิร์ฟเวอร์ที่บ้าน (HP Proliant ML310 G4) ที่ฉันซื้อจากนายจ้างเมื่อเดือนก่อน เซิร์ฟเวอร์รัน Debian Linux และฉันใช้เพื่อทุกสิ่ง ฉันสามารถหลีกเลี่ยงการทำสิ่งนี้ได้เพราะความต้องการของฉันไม่ได้เป็นที่ต้องการอย่างมากดังนั้นเซิร์ฟเวอร์จึงไม่ค่อยมีภาระมากในเวลาใดก็ตาม เซิร์ฟเวอร์นี้มีอาร์เรย์ RAID1 2 TB (พร้อมหนึ่ง hot spare) ที่จัดการโดย mdadm ที่ฉันใช้สำหรับการแชร์ไฟล์ผ่านเครือข่ายของฉันผ่าน Samba ฉันใช้ระบบปฏิบัติการกับฮาร์ดไดรฟ์ขนาดเล็กที่ไม่ได้เป็นส่วนหนึ่งของอาร์เรย์

ฉันมีเซิร์ฟเวอร์ที่ขับเคลื่อนด้วย UPS ขนาด 255 วัตต์เล็ก ๆ น้อย ๆ เพราะฉันต้องการให้มันทนต่อความผันผวนของพลังงานเพียงเล็กน้อยโดยไม่ต้องลงมา สิ่งนี้สำคัญมากเพราะการปิดระบบที่ไม่สะอาดอย่างกะทันหัน (เกิดจากพลังงานตกหรือมืดมน) สามารถทำให้อาร์เรย์ RAID ซึ่งเกิดขึ้นได้ในครั้งเดียว

ในกรณีที่ไฟฟ้าขัดข้องฉันประเมินว่า UPS มีพลังงานอยู่เพียง 10-15 นาทีเท่านั้น อาจมีมากกว่านี้ แต่ฉันไม่ต้องการคิดโดยอัตโนมัติว่ามี แค่นี้ก็เพียงพอแล้วที่จะผ่านหน้ามืดไปได้ไม่กี่นาที อย่างไรก็ตามหากไฟฟ้าดับเป็นเวลาหลายชั่วโมงฉันต้องการเซิร์ฟเวอร์เพื่อปิดตัวเองอย่างถูกต้องโดยอัตโนมัติก่อนที่ไฟของ UPS จะล้มเหลว หวังว่านี่จะช่วยป้องกันความสมบูรณ์ของ RAID ในการหลบซ่อนตัวอยู่ในสถานการณ์เหล่านั้น

สิ่งนี้เป็นเรื่องง่ายในแล็ปท็อป b / c มันมีเซ็นเซอร์ในตัวเพื่อตรวจสอบว่ากำลังทำงานเมื่อใช้พลังงานแบตเตอรี่ แต่เซิร์ฟเวอร์นี้ไม่ (เท่าที่ฉันรู้) ฉันมีการตั้งค่าเครือข่ายที่ผิดปกติที่โมเด็ม DSL แยกจากเราเตอร์ของฉัน เราเตอร์ยังอยู่ใน UPS ซึ่งช่วยให้ฉันสามารถ SSH ผ่านแล็ปท็อปของฉันและปิดเซิร์ฟเวอร์ในกรณีที่ไฟฟ้าขัดข้อง น่าเสียดายที่มันใช้งานได้ก็ต่อเมื่อฉันมีเวลาทำ ฉันต้องการวิธีแก้ปัญหาที่ใช้งานได้เสมอไม่ว่าฉันจะอยู่ที่นั่นเพื่อแทรกแซงหรือไม่

เนื่องจากโมเด็ม DSL ของฉันไม่ได้อยู่ใน UPS มันจะลงไปด้วยทุกอย่างถ้าไฟดับ ฉันตั้งค่าแบบนั้นโดยเจตนาเพราะฉันมีความคิดเกี่ยวกับวิธีแก้ปัญหานี้: ฉันกำลังคิดว่าจะเขียนสคริปต์ที่จะ ping google.com หรือเว็บไซต์ที่มีอัตราการเข้าชมสูง / อื่น ๆ หากการ ping เสร็จสมบูรณ์เซิร์ฟเวอร์จะยังคงทำงานต่อไป หากการ ping ล้มเหลว (เนื่องจากโมเด็มปิดอยู่) สคริปต์จะคิดว่ากำลังปิดอยู่และจะบอกให้เซิร์ฟเวอร์ปิดการทำงาน ฉันจะเพิ่มสคริปต์ใน Cron และให้มันทำงานทุก 5 นาที หวังว่าจะทำให้เซิร์ฟเวอร์มีเวลามากพอที่จะปิดตัวลงก่อนที่ UPS จะหมดพลังงาน

ก่อนที่ฉันจะไปพบปัญหาในการเขียนสคริปต์ฉันต้องการทราบว่ามีวิธีที่ดีกว่าในการทำสิ่งที่ฉันต้องการหรือไม่ ขอบคุณล่วงหน้าสำหรับความช่วยเหลือใด ๆ


15
คุณไม่ควรทำการปิงไซต์ภายนอก แต่ทำการ ping IP ของโมเด็ม DSL
LawrenceC

1
@ultrasawblade ... ดูเหมือนคำตอบมีกลิ่นเหมือนคำตอบ ... มันเป็นคำตอบ!
Pureferret

1
@ultrasawblade กล่าวถึงไม่ต้องพึ่งพาแหล่งภายนอกสำหรับการตั้งค่าภายใน ตัวอย่างเช่นหากอินเทอร์เน็ตของคุณล้มเหลวอย่างกระทันหันคุณจะสูญเสียการเชื่อมต่อและเซิร์ฟเวอร์ของคุณหยุดทำงาน หาก Google.com ตัดสินใจเปลี่ยนชื่อไม่ว่าด้วยเหตุผลใดเซิร์ฟเวอร์ของคุณจะไม่ทำงาน หากคุณ ping พวกเขาโดยใช้ IP และเซิร์ฟเวอร์ฟาร์มที่เฉพาะเจาะจงลงไปเซิร์ฟเวอร์ของคุณก็จะลงเช่นกัน นี่เป็นกรณีที่มีแหล่งภายนอก ถ้าคุณไม่แน่ใจ 100% ว่าเซิร์ฟเวอร์ของคุณจะต้องเปิดเมื่อเซิร์ฟเวอร์อื่นนั้นพร้อมใช้งานเท่านั้นคุณไม่ต้องการใช้เซิร์ฟเวอร์อื่นนั้นด้วยเหตุผลใดก็ตาม
Nzall

คำตอบเหล่านี้ไม่เหมาะกับคุณใช่ไหม
Dave

คำตอบ:


34

มีวิธีเก่า แต่ได้รับการพิสูจน์แล้ว: ใช้โมเด็มอะนาล็อกเก่า นี่คือวิธี

  • เชื่อมต่อโมเด็มกับเซิร์ฟเวอร์ผ่านพอร์ตอนุกรม (เช่น ttyS0)
  • เสียบปลั๊กของโมเด็มไม่เข้ากับ UPS แต่จ่ายไฟโดยตรง
  • อย่าเสียบอะไรเข้าไปในสายโทรศัพท์ของโมเด็ม

ตอนนี้ทำการสำรวจATZ[Enter]และส่งโมเด็มทุกสองสามวินาทีOK[Enter]หากโมเด็มไม่ตอบรับคุณอาจสันนิษฐานได้ว่ามันไม่มีพลังงานหมายความว่า UPS ใช้พลังงานจากแบตเตอรี่

แก้ไข

ประเด็นหลักคือว่าหากการเชื่อมต่ออินเทอร์เน็ตของคุณลดลงด้วยเหตุผลอื่น ๆ เซิร์ฟเวอร์จะไม่ปิดตัวลงตามที่ควรจะเป็น

แก้ไข 2

จากความคิดเห็นที่:

  • แน่นอนคุณควรให้บางรัฐจากการตรวจสอบหนึ่งไปยังถัดไปเพียงปิดลงหลังจากตรวจสอบ N ล้มเหลว ฉันไม่ได้พูดถึงเรื่องนี้เพราะมันถือเป็นจริงสำหรับการตรวจสอบที่เป็นไปได้ทั้งหมดไม่เพียง แต่โมเด็ม
  • ความแตกต่างระหว่างการใช้โมเด็มและการใช้สิ่งที่เกี่ยวข้องกับเครือข่ายคือการสูญเสียการเชื่อมต่อเครือข่ายแบบชั่วคราวนั้นจะเกิดขึ้น: คุณไม่ต้องการถูกรบกวนด้วย "การเข้าสู่ระบบถูกปิดใช้งานเซิร์ฟเวอร์ใน USV" หากคุณรีบูตสวิตช์ หรือกำหนดค่า VLAN อีกครั้ง จากประสบการณ์ของฉันสายอนุกรมนั้นแข็งแกร่งพอที่จะรับได้

1
คำตอบที่ดี แต่ฉันขอแนะนำให้เพิ่มความปลอดภัยซึ่งจะตรวจสอบสองสามครั้งก่อนที่มันจะหยุดทำงานจริง (ดังนั้นคุณไม่จำเป็นต้องปิดเครื่องในช่วงเวลา 5 นาทีสีน้ำตาล) และฉันคิดว่าการกระตุกอย่างรวดเร็วจะพอเพียง (ไม่มีอะไรนอกเครือข่ายของคุณ)
HTDutchy

@HTDutchy ดูการแก้ไขของฉัน!
Eugen Rieck

ฉันรู้ แต่เนื่องจากเขาอาจไม่มีการเชื่อมต่อแบบอนุกรมหรือโมเด็มเก่าที่แขวนอยู่รอบ ๆ ฮาร์ดแวร์ในบ้านจะเป็นสิ่งที่ดีที่สุดถัดไป และถ้าสวิตช์หยุดทำงานเซิร์ฟเวอร์ก็จะปรากฏขึ้นต่อไป
HTDutchy

22

มักจะมาพร้อมกับตัวเชื่อมต่อ USB หรือ COM1 เมื่อคุณเชื่อมต่อสิ่งนี้กับเซิร์ฟเวอร์ของคุณคุณจะสามารถเริ่มตรวจสอบ UPS ได้

ในสภาพแวดล้อมแบบ windows โดยไม่ต้องติดตั้งซอฟต์แวร์ข้อความจะถูกลงทะเบียนแล้วและมันจะปิดเซิร์ฟเวอร์สำหรับคุณ ฉันไม่รู้ว่ามันทำงานอย่างไรบน linux แต่ฉันคิดว่ามีบางแพ็คเกจซอฟต์แวร์ที่สามารถเชื่อมต่อกับ UPS ของคุณได้


ฉันเพิ่งตรวจสอบ UPS ของฉันและโชคไม่ดีที่มันไม่มีอะไรแบบนั้น มันมีเพียงปลั๊กไฟ 8 ตัว (4 ตัวบนแบตเตอรี่และ 4 ตัวโดยไม่มี) และแจ็คไลน์อินและแจ็คเอาท์พุทสำหรับสายโทรศัพท์
Will Kraft

27
จากนั้นรับ UPS ที่สามารถสื่อสารกับคอมพิวเตอร์ได้
Ramhound

@ แรมฮาวด์นั่นอาจไม่ใช่ตัวเลือก UPS อาจมีราคาแพงและมีวิธีที่ถูกกว่า
Vality

ฉันไม่เห็นด้วยมีวิธีอื่น ๆ ในการตรวจสอบว่าคุณกำลังใช้แบตเตอรี่ที่ไม่สามารถตรวจจับได้แม้ในระดับที่เป็น
Ramhound

1

หากคุณใช้ Debian ให้ลองค้นหาโดยใช้ NUT (เครื่องมือ UPS ของเครือข่าย) ฉันใช้ NUT เพื่อทำสิ่งที่คุณอธิบายบน Synology NAS ของฉัน (ซึ่งใช้งาน busybox) และบนเว็บเซิร์ฟเวอร์ที่ใช้ Ubuntu 12.04 LTS ฉันได้เสียบ NAS ผ่าน USB เข้ากับ UPS ด้วยเหตุผลเดียวกับคุณการสูญเสียไฟล์ทั้งหมดของฉันอาจเป็นไปได้

ฉันเชื่อว่า nut daemon จะค้นหา UPS ทุกวินาทีเพื่อตรวจสอบสถานะ เมื่อ UPS อยู่ในโหมดแบตเตอรี่สามารถกำหนดค่าให้ปิดได้อย่างเรียบร้อยหรือรอ X นาทีก่อนเป็นต้นนอกจากนี้คุณยังสามารถตั้งค่าไคลเอนต์จำนวนมากเพื่อเชื่อมต่อกับภูตภูตที่คุณทำงานบนเซิร์ฟเวอร์ของคุณ ดังนั้นเซิร์ฟเวอร์ของคุณสามารถบอกพีซีหลาย ๆ เครื่องบนเครือข่ายของคุณให้ปิดระบบได้อย่างสวยงามเช่นกัน สำหรับการดำเนินการปิดระบบคุณสามารถส่งสคริปต์ของคุณเองไปยังบริการปิดระบบในวิธีที่เฉพาะเจาะจงหรือคุณสามารถใช้สคริปต์ในตัวที่เพิ่งเรียกการปิดระบบ -h ถ้าฉันจำได้อย่างถูกต้อง

เว็บไซต์ NUT

มีเว็บไซต์ที่ดีกว่าในการค้นหาข้อมูล แต่ฉันจำไม่ได้ในตอนนี้ การกำหนดค่าอาจเป็นเรื่องที่เจ็บปวด แต่ถ้าคุณกำลังพูดถึงการสูญเสีย RAID ของคุณลองเข้าไปดูสิ ขึ้นอยู่กับความต้องการของคุณคุณอาจไม่ต้องการชุด NUT ทั้งหมดคุณอาจได้รับเพียงแค่ส่วนของ UPSMON ฉันคิดว่าคุณสามารถรับได้ในแพ็คเกจอูบุนตู "nut-client"

นอกจากนี้ยังมีไคลเอ็นต์ NUT สำหรับ Windows แต่สำหรับ Windows คุณอาจใช้งานได้ดีกว่าเช่น PowerChute หรือคล้ายกัน


อย่างที่กล่าวไว้ก่อนหน้านี้ดูเหมือนว่า UPS ของ OP จะไม่มีวิธีสื่อสารกับคอมพิวเตอร์ไม่มี USB หรือเครือข่าย
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.