서버가 UPS 배터리로 작동 중일 때 감지


24

한 달 정도 전에 고용주로부터 구입 한 홈 서버 (HP Proliant ML310 G4)가 있습니다. 서버는 데비안 리눅스를 실행하고 거의 모든 것에 사용합니다. 내 요구가 그렇게 까다 롭지 않기 때문에이 작업을 수행하지 않아도되므로 서버는 주어진 시간에 부하가 거의 발생하지 않습니다. 이 서버에는 mdadm으로 관리되는 2TB RAID1 어레이 (핫 스페어 1 개)가 있으며 Samba를 통해 네트워크를 통한 파일 공유에 사용합니다. 어레이의 일부가 아닌 더 작은 하드 드라이브에서 OS를 실행하고 있습니다.

작은 255 와트 UPS를 통해 서버 전원을 공급받습니다. 전원이 끊기거나 정전으로 인해 갑자기 부정확 한 종료가 한 번 이미 발생한 RAID 어레이를 망칠 수 있기 때문에 이것은 매우 중요합니다.

정전이 발생하면 UPS의 전원이 10-15 분 밖에 걸리지 않을 것으로 예상합니다. 더있을 수도 있지만 자동으로 있다고 가정하고 싶지 않습니다. 몇 분 안에 지속되는 정전을 극복하기에 충분합니다. 그러나 몇 시간 동안 전원이 꺼지면 UPS 전원이 차단되기 전에 서버가 자동으로 종료되어야합니다. 이것은 그러한 상황에서 RAID 무결성이 방해받지 않기를 희망합니다.

이런 종류의 일은 내장 된 센서가 내장되어있어 배터리 전원으로 언제 작동하는지 확인할 수있는 랩탑 b / c에서는 쉽지만이 서버는 (내가 아는 한) 그렇지 않습니다. DSL 모뎀이 라우터와 분리 된 비정상적인 네트워크 설정이 있습니다. 라우터는 UPS에도 있으며, 이로 인해 랩탑을 통해 SSH를 연결하고 정전시 서버를 종료 할 수 있습니다. 불행히도, 내가 할 수있는 경우에만 작동합니다. 개입 여부에 관계없이 항상 작동하는 솔루션이 필요합니다.

DSL 모뎀이 UPS에 없으므로 전원이 공급되지 않으면 다른 모든 장치와 함께 작동하지 않습니다. 이 문제를 해결하는 방법에 대한 아이디어가 있기 때문에 의도적으로 그렇게 설정했습니다. google.com 또는 다른 고 트래픽 / 고 가용성 사이트를 핑하는 스크립트를 작성하려고했습니다. 핑이 성공적으로 완료되면 서버는 계속 실행됩니다. 핑이 실패하면 (모뎀이 꺼져 있기 때문에) 스크립트는 전원이 꺼져 있다고 생각하고 서버가 종료되도록 지시합니다. 스크립트를 Cron에 추가하고 5 분마다 실행하도록했습니다. 그러면 UPS의 전원이 완전히 소진되기 전에 서버를 종료 할 수있는 충분한 시간이 필요합니다.

스크립트를 작성하는 데 어려움을 겪기 전에 필요한 것을 수행하는 더 좋은 방법이 있는지 알고 싶습니다. 도움을 주셔서 감사합니다.


15
외부 사이트를 핑하지 말고 DSL 모뎀의 IP를 핑 (ping)해야합니다.
LawrenceC

1
@ultrasawblade ... 답변처럼 들리고 답장 냄새가납니다 ... 답변입니다!
Pureferret

1
@ultrasawblade가 언급했듯이 내부 설정을 위해 외부 소스에 의존하지 마십시오. 예를 들어, 인터넷이 갑자기 실패하면 연결이 끊어지고 서버가 다운됩니다. 어떤 이유로 든 Google.com에서 이름을 변경하기로 결정하면 서버가 다운됩니다. IP를 사용하여 핑을 수행하고 특정 서버 팜이 다운되면 서버도 다운됩니다. 이것은 외부 소스의 경우입니다. 다른 서버를 사용할 수있을 때만 서버가 켜져 있어야한다는 것을 100 % 확신하지 않으면 어떤 이유로 든 다른 서버에 의존하고 싶지 않습니다.
Nzall

이 답변들 중 어느 것도 당신에게 도움이되지 않습니까?
Dave

답변:


34

오래되었지만 입증 된 방법이 있습니다. 오래된 아날로그 모뎀을 사용하십시오. 방법은 다음과 같습니다

  • 직렬 포트 (예 : ttyS0)를 통해 모뎀을 서버에 연결
  • 모뎀의 전원 공급 장치를 UPS가 아니라 주 전원에 직접 연결하십시오.
  • 모뎀의 전화선에 아무것도 연결하지 마십시오

이제 전송 모뎀마다 몇 초를 폴링 ATZ[Enter]하고 기대 OK[Enter]- 모뎀이 응답하지 않는 경우에, 당신은 UPS가 배터리에 의미가 더 힘이 없습니다 asume 수 있습니다.

편집하다

요점은 다른 이유로 인터넷 연결이 끊어지면 서버가 정상적으로 종료 되지 않는다는 것입니다.

편집 2

의견에서 :

  • 물론 N 검사가 실패한 후에 만 ​​종료하고 한 검사에서 다음 검사로 상태를 유지해야합니다. 모뎀뿐만 아니라 가능한 모든 검사에 적용되므로 언급하지 않았습니다.
  • 모뎀 사용 과 네트워크와 관련된 모든 것을 사용하는 것의 차이점은 일시적인 네트워크 연결 손실이 발생한다는 것입니다. 또는 VLAN을 재구성하십시오. 내 경험상 직렬 회선은 견고합니다.

1
좋은 대답이지만 실제로 종료하기 전에 몇 번 검사하는 안전 장치를 추가하는 것이 좋습니다. (따라서 5 분 동안 브라운 아웃을하는 동안 시스템을 종료 할 필요가 없습니다.) 그리고 Swich를 핑하는 것만으로도 충분하다고 생각합니다.
HTDutchy

@HTDutchy 내 편집보기!
Eugen Rieck

알고 있지만, 직렬 연결이 없거나 집 하드웨어의 핑 (Ping) 주위에 낡은 모뎀이없는 것이 차선책 일 것입니다. 스위치가 작동을 멈 추면 서버는 계속 작동합니다.
HTDutchy

22

UPS는 일반적으로 USB 또는 COM1 커넥터와 함께 제공됩니다. 이것을 서버에 연결하면 UPS 모니터링을 시작할 수 있습니다.

Windows 환경에서 소프트웨어를 설치하지 않으면 메시지가 이미 등록되어 서버가 종료됩니다. 나는 이것이 리눅스에서 어떻게 작동하는지 모르겠지만 UPS와 인터페이스 할 수있는 소프트웨어 패키지가 있다고 확신합니다.


방금 UPS를 확인했는데 불행히도 그런 것이 없습니다. 전화 코드 용 전원 플러그 8 개 (배터리 4 개,없는 4 개)와 라인 입력 및 출력 잭이 있습니다.
Will Kraft

27
그런 다음 컴퓨터와 통신 할 수있는 UPS를 받으십시오.
Ramhound

@Ramhound 옵션이 아닐 수도 있고, UPS는 매우 비쌀 수 있으며, 더 저렴한 방법이 있습니다.
Vality

나는 당신이 심지어 레벨에서 감지 할 수없는 ups의 배터리에서 실행중인 것을 감지하는 다른 방법이 동의하지 않습니다
Ramhound

1

데비안을 사용하는 경우 NUT (네트워크 UPS 도구)를 사용해보십시오. NUT를 사용하여 Synology NAS (통화 상자를 실행)와 Ubuntu 12.04 LTS를 실행하는 홈 웹 서버에서 설명하는 내용을 정확하게 수행합니다. NAS가 귀하와 같은 이유로 USB를 통해 UPS에 연결되어있어 모든 파일이 손실 될 수 있습니다.

너트 데몬은 1 초마다 UPS에 쿼리하여 상태를 확인합니다. UPS가 배터리 모드 인 경우, 정상적으로 종료되거나 X 분 동안 기다리도록 구성 할 수 있습니다. 또한 여러 클라이언트가 서버에서 실행하는 너트 데몬에 연결되도록 설정할 수도 있습니다. 따라서 서버는 네트워크의 여러 PC에 정상적으로 종료되도록 지시 할 수 있습니다. 종료 실행의 경우 특정 방식으로 서비스를 종료하는 자체 스크립트를 제공하거나 올바르게 호출하면 shutdown -h를 호출하는 기본 제공 스크립트를 사용할 수 있습니다.

너트 웹 사이트

정보를 찾을 수있는 더 나은 사이트가 있었지만 지금은 기억할 수 없습니다. 구성이 어려울 수 있지만 잠재적으로 RAID를 잃을 가능성에 대해 이야기하고 있다면 확인하십시오! 필요에 따라 전체 NUT 제품군이 필요하지 않을 수 있으며 UPSMON 부분만으로도 얻을 수 있습니다. 우분투 패키지 "nut-client"에서 이것을 얻을 수 있다고 생각합니다.

Windows 용 NUT 클라이언트도 있지만 Windows에서는 PowerChute 또는 이와 유사한 것을 사용하는 것이 좋습니다.


앞서 말했듯이 OP의 UPS는 컴퓨터와 통신 할 수있는 방법이 없으며 USB 나 네트워크가 없습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.