Визначення, коли сервер працює від батареї ДБЖ


24

У мене є домашній сервер (HP Proliant ML310 G4), який я придбав у свого роботодавця місяць або близько того. Сервер працює під управлінням Debian Linux, і я використовую його практично для всього. Я можу піти з цього, тому що мої потреби не настільки вимогливі, тому сервер рідко піддається великим навантаженням у будь-який момент часу. Цей сервер має масив RAID1 на 2 ТБ (з однією гарячою запасною), керований mdadm, який я використовую для обміну файлами через свою мережу через Samba. Я запускаю ОС на меншому жорсткому диску, який не є частиною масиву.

У мене сервер працює через невеликий 255-ватний ДБЖ, тому що мені це потрібно, щоб витримувати незначні коливання потужності, не знижуючись. Це дуже важливо, тому що раптове нечисте вимкнення (спричинене падінням електроенергії або відключенням) може викрутити масив RAID, що вже відбулося одного разу.

У разі відключення електроживлення, я вважаю, що джерело живлення має лише 10-15 хвилин живлення. Може бути більше, але я не хочу автоматично припускати, що є. Цього достатньо, щоб пройти через відключення, які тривають кілька хвилин або менше. Однак, якщо живлення відключається протягом декількох годин, мені потрібен сервер, щоб він автоматично автоматично відключився до виходу з ладу ДБЖ. Це, сподіваємось, убереже цілісність RAID від замикання в таких ситуаціях.

На ноутбуці з к / с подібними речами легко вбудувати вбудовані датчики, щоб визначити, коли він працює від акумулятора, але цей сервер цього не робить (наскільки я знаю). У мене незвичайні налаштування мережі, де мій DSL-модем відокремлений від мого маршрутизатора. Маршрутизатор також знаходиться на ДБЖ, що дозволяє мені пройти SSH через ноутбук і вимкнути сервер у разі відключення живлення. На жаль, це працює лише в тому випадку, якщо я там в той час, щоб це зробити. Мені потрібно рішення, яке завжди спрацьовує, втручаюся я чи ні.

Оскільки мій DSL-модем не знаходиться на ДБЖ, він би впав з усіма іншими, якщо живлення вийде з ладу. Я налаштував це навмисно, тому що маю уявлення про те, як вирішити цю проблему: я думав написати сценарій, який би ping google.com чи інший сайт з високим трафіком / високою доступністю. Якщо ping завершиться успішно, сервер продовжуватиме працювати. Якщо ping не вдасться (оскільки модем вимкнено), сценарій вважає, що живлення вимкнено, і попросить сервер закритись. Я додав би сценарій до Cron і мав би його виконувати кожні 5 хвилин. Це, сподіваємось, дасть серверу достатньо часу для вимкнення, перш ніж у ІБП не закінчиться живлення.

Перш ніж перейти до проблеми написання сценарію, я хотів би знати, чи є кращий спосіб зробити те, що мені потрібно. Заздалегідь дякую за будь-яку допомогу.


15
Ви не повинні пінг-код зовнішнього сайту, але пінг-код IP вашого модему DSL.
LawrenceC

1
@ultrasawblade ... звучить як відповідь, пахне відповіддю ... це відповідь!
Pureferret

1
Як згадує @ultrasawblade, НІКОЛИ не покладайтеся на зовнішні джерела для внутрішнього налаштування. Наприклад, якщо ваш Інтернет раптово виходить з ладу, ви втрачаєте зв’язок і ваш сервер виходить з ладу. Якщо Google.com вирішить змінити своє ім’я з будь-якої причини, ваш сервер вийде з ладу. Якщо ви відстежуєте їх за допомогою IP-адреси, і ця ферма серверів знижується, ваш сервер також знижується. це стосується будь-якого зовнішнього джерела. Якщо ви не впевнені на 100%, що ваш сервер ОБОВ'ЯЗКОВО повинен бути увімкненим, коли цей сервер доступний, ви не хочете покладатися на цей інший сервер з будь-якої причини.
Nzall

Чи жодна з цих відповідей не працює для вас?
Дейв

Відповіді:


34

Є старий, але перевірений спосіб: Використовуйте старий аналоговий модем. Ось як

  • Підключіть модем до сервера через послідовний порт (наприклад, ttyS0)
  • Підключіть джерело живлення модему не до ДБЖ, а безпосередньо до електромережі
  • НЕ підключайте нічого до телефонної лінії модему

Тепер опитуйте модем кожні кілька секунд надсилаючи ATZ[Enter]та очікуйте OK[Enter]- якщо модем не відповідає, ви можете припустити, що він не має живлення, тобто ІБП працює від акумулятора.

Редагувати

Головне, що якщо ваше інтернет-з'єднання припиниться з якоїсь іншої причини, сервер не вимкнеться, як це має бути.

Редагувати 2

З коментарів:

  • Звичайно, ви повинні зберігати деякий стан від однієї чеки до іншої, і вимикатися лише після того, як N перевірок не вдалося. Я не згадував про це, оскільки це справедливо для всіх можливих перевірок, не тільки модему
  • Різниця між використанням модему та використанням всього, що має відношення до мережі, полягає в тому, що відбудеться тимчасова втрата підключення до мережі: Ви не хочете, щоб вас турбували "Вхід відключений, сервер на USV", якщо ви перезавантажите комутатор або переконфігуруйте мережу VLAN. На мій досвід, серійний рядок настільки ж надійний, як і його.

1
Хороша відповідь, але я б запропонував додати безпеку там, де вона перевіряється кілька разів, перш ніж вона фактично вимикається. (тож вам не доведеться вимикатись протягом 5 хвилин коричневого кольору) І я думаю, що пінггінг swich також буде достатнім (просто нічого поза вашою мережею).
HTDutchy

@HTDutchy Дивіться мою редакцію!
Євген Рік

Я знаю, але оскільки він, можливо, не має послідовного зв’язку або старий модем, який висить навколо пінгування в апаратному забезпеченні будинку, буде наступною найкращою справою. і якщо комутатор перестане працювати, сервер все одно з’явиться вниз.
HTDutchy

22

Збійні елементи зазвичай поставляються з USB-роз'ємом або роз'ємом COM1. Підключивши це до свого сервера, ви можете розпочати моніторинг ДБЖ.

У середовищі Windows, не встановлюючи програмне забезпечення, повідомлення вже зареєстровані, і це вимкне сервер для вас. Я не знаю, як це працює на Linux, але я думаю, що є кілька програмних пакетів для взаємодії з вашим ДБЖ.


Я щойно перевірив свій ДБЖ і, на жаль, він не має нічого подібного. У ній є 8 штепселів живлення (4 на батареї та 4 без) та гніздо для входу та виходу ліній для телефонних шнурів.
Буде Крафт

27
Потім отримайте ДБЖ, який може спілкуватися з комп'ютером.
Рамхаунд

@Ramhound Це не може бути варіантом, ДБЖ може бути досить дорогим, а є і дешевші способи.
Vality

Я не погоджуюсь, є й інші способи виявити, що ти працюєш на батареї злетів, яких ти навіть не можеш виявити на рівні
Рамхаунд,

1

Якщо ви використовуєте Debian, спробуйте вивчити використання NUT (мережевих інструментів ДБЖ). Я використовую NUT, щоб робити саме те, що ви описуєте в моєму Synology NAS (який працює зайнятий) та на домашньому веб-сервері під керуванням Ubuntu 12.04 LTS. У мене NAS підключено через USB до UPS з тієї ж причини, що і ви, потенційна втрата всіх моїх файлів.

Я вважаю, що горіховий демон щосекунди запитує ДБЖ, щоб визначити статус. Коли ДБЖ знаходиться в режимі акумулятора, його можна налаштувати вимкнено, або спочатку чекати X хвилин і т. Д. Ви також можете встановити кілька клієнтів для підключення до гайкового демона, який ви запускаєте на своєму сервері. Таким чином ваш сервер може повідомити кілька комп'ютерів у вашій мережі також витончено відключитись. Для виконання вимкнення ви можете надати власний скрипт службам відключення певним чином, або ви можете використовувати вбудований скрипт, який просто викликає вимкнення -h, якщо я правильно пам'ятаю.

NUT веб-сайт

Були кращі сайти, щоб знайти інформацію, але я не можу їх зараз згадати. Конфігурація може бути болем, але якщо ви говорите про потенційну втрату RAID, перевірте це! Залежно від ваших потреб, вам може не знадобитися весь пакет NUT, можливо, ви зможете обійтись лише частиною UPSMON. Я думаю, ви можете отримати це в пакеті Ubuntu "горіх-клієнт".

Також є клієнт NUT для Windows, але в Windows вам може бути краще використовувати щось на зразок PowerChute або щось подібне.


Як було сказано раніше, схоже, що ІБП OP не має жодного способу спілкування з комп'ютером, ані USB, ані мережі.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.