เซิร์ฟเวอร์หนึ่งตัว, APC UPS สองตัวบนอุปกรณ์จ่ายไฟสำรอง: จะทริกเกอร์การปิดเครื่องได้อย่างไร


10

ฉันติดตั้งเซิร์ฟเวอร์และอุปกรณ์จ่ายไฟสำรองใน APC Smart-UPS 3000 XLM สองเครื่อง UPS แต่ละเครื่องเชื่อมต่อกับแหล่งจ่ายไฟหลักสองแหล่ง

apcupsd อินสแตนซ์สองตัวกำลังทำงานอยู่แต่ละตัวเชื่อมต่อกับ UPS ของตัวเอง ทั้งคู่สามารถตรวจจับได้เมื่อ UPS ใช้แบตเตอรี่และแต่ละ UPS สามารถทริกเกอร์การปิดระบบบนเซิร์ฟเวอร์

คำถามคือจะไม่ปิดหาก UPS เพียงก้อนเดียวหมด

หมายเหตุ: Smart-UPS 3000 XLM มีฟังก์ชั่น "Power Sync" ที่สามารถเชื่อมต่อกับเพื่อนและตรวจสอบสถานะได้ แต่เมื่อฉันดึงปลั๊กออกมาจากหนึ่งในนั้นคำสั่งปิดเครื่องถูกส่งไปแล้ว ฉันกำลังคิดเกี่ยวกับการปรับเปลี่ยนสคริปต์การปิดระบบเพื่อตรวจสอบด้วย "apcaccess" หากรายการอื่น ๆ หยุดทำงาน ประสบการณ์ใด ๆ เกี่ยวกับเรื่องนี้จะได้รับการชื่นชม!

คำตอบ:


13

ปัจจุบันเมื่อหนึ่งในสองของยูพีเอสตายที่doshutdownเหตุการณ์จะถูกเรียกและรันสคริปต์เริ่มต้นผ่านapccontrol doshutdownสคริปต์ละเว้น UPS ที่สองขณะที่พวกเขาไม่ได้เป็นเหตุการณ์ที่เชื่อมต่อและดำเนินการตามปกติที่มีการปิด

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

คุณสมบัติหลักของ ups แรกใน /etc/apcupsd/apcupsd.ups0.conf

SCRIPTDIR /etc/apcupsd/ups0
UPSNAME ups0
DEVICE /dev/ups0
PWRFAILDIR /etc/apcupsd/ups0
NOLOGINDIR /etc/apcupsd/ups0
NISPORT 3551
EVENTSFILE /var/log/apcupsd.0.events

และสำหรับ ups1, ใน /etc/apcupsd/apcupsd.ups1.conf

SCRIPTDIR /etc/apcupsd/ups1
UPSNAME ups1
DEVICE /dev/ups1
PWRFAILDIR /etc/apcupsd/ups1
NOLOGINDIR /etc/apcupsd/ups1
NISPORT 3552
EVENTSFILE /var/log/apcupsd.1.events

แต่ละสคริปต์ควรได้รับสำเนาของสคริปต์เริ่มต้น
เราต้องการปรับแต่งสคริปต์doshutdownซึ่งจะไม่ปิดเครื่องโดยตรง แต่ต้องตรวจสอบว่า UPS เครื่องอื่นยังทำงานอยู่หรือไม่หรืออยู่ในโหมดปิดเครื่อง

ที่ด้านบนของสคริปต์doshutdownเราสามารถเพิ่มสิ่งที่ชอบ

สำหรับ ups0

if [ ! -f /tmp/ups1.is.down ]
then
  touch /tmp/ups0.is.down
  exit 99
fi

สำหรับ ups1

if [ ! -f /tmp/ups0.is.down ]
then
  touch /tmp/ups1.is.down
  exit 99
fi

สถานะ 99 มีความหมายพิเศษซึ่งจะบอกให้apccontrolหยุดการกระทำที่กำลังดำเนินอยู่ ห้าบรรทัดตรวจสอบว่ามีการสร้างไฟล์ UPS อื่น ๆ หรือไม่ หากไม่มีไฟล์ดาวน์จะถูกสร้างขึ้นสำหรับการอัพดาวน์และออก ถ้าใช่หมายถึง UPS อื่น ๆ หยุดทำงานอันนี้กำลังลงเช่นกันดังนั้นสคริปต์ควรดำเนินการต่อและปิดเครื่อง

ไฟล์/tmp/usp[01].is.downระบุว่า ups [01] ไม่ทำงานหรือไม่

สำคัญ: สคริปต์เริ่มต้น init.d ของ apcupsd ควรลบไฟล์เหล่านี้หากสร้างขึ้นในเซสชันก่อนหน้า:

rm -f /tmp/usp[01].is.down

ในที่สุดไดเรกทอรีที่สร้างขึ้นข้างต้น / etc / apcupsd / ups [01] ควรได้รับการเข้าถึงผู้ใช้apcupsd (หรือผู้ใช้ที่เกี่ยวข้องที่ทำงานอินสแตนซ์)

chown -R apcupsd /etc/apcupsd/ups[01]

โปรดดูได้ที่เป็นเอกสารรายละเอียด

แก้ไขการแก้ไข/tmp/ups[01].is.downชื่อที่.isขาดหายไป


1
และผู้ใช้ทั่วไปสามารถหยุดเซิร์ฟเวอร์ของคุณด้วย touch /tmp/ups1.is.down; touch /tmp/ups0.is.down: D ดังนั้นจะเป็นการดีกว่าถ้าใช้ / var / run Btw หากมีคนตัดและวางวิธีแก้ปัญหา rm -f /tmp/usputy01 เหมือนกัน isis เป็นตัวพิมพ์ผิด และโดยวิธีการที่คุณควรลบ /tmp/ups [01] 01...do จากกรณี offbattery ของ apccontrol เมื่อพลังงานกลับมา
Harka Gyozo

1
ฉันขอแนะนำให้คุณสัมผัสไฟล์ is.down ของคุณเองก่อนที่จะตรวจสอบอีกไฟล์หนึ่ง - อย่างที่เป็นอยู่ตอนนี้ฉันคิดว่ามีหน้าต่างเงื่อนไขการแข่งขันขนาดเล็กหากทั้งสองเครื่องออกไปพร้อมกัน
Michael Kohne

4

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

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