USB를 통해 연결된 APC UPS에 의해 트리거되는 VMware ESXi 종료


18

ESXi 5.1 서버를 APC UPS를 통해 전원이 공급되는 원격 사무실로 배송하고 있습니다.

UPS가 연결된 서버의 종료를 트리거하도록하고 싶습니다. 그런 다음 ESXi 구성을 사용하여 호스트 된 VM의 종료 / 일시 중지를 처리합니다.

APC에 PowerChute Network Shutdown을 사용하여 문서화 된 솔루션이 있음을 알 수 있지만 여기에는 사무실 당 추가 서버를 설정하고 각 UPS에 네트워크 카드가 필요합니다. 일반적으로 네트워크 카드 (예 : Back-UPS Pro)없이 UPS를 사용하고 있습니다. USB 커넥터와 함께 제공되며 사무실이있는 위치에서 쉽게 사용할 수 있습니다.

USB를 통해 UPS를 ESXi 호스트에 연결 한 다음 ESXi가 정전을 감지 한 다음 그에 따라 조치를 취하려면 어떻게해야합니까? 누구 든지이 작업을 수행했습니다.


1
호스트 종료를 통해 VM 종료 프로세스 시간을 정했습니까? 그 기간 동안 배터리를 충분히 오래 사용할 수 있습니까?
ewwhite

이것을 지적 해 주셔서 감사합니다. 아직은 아닙니다.이 단계에서는 도메인 컨트롤러를 실행하기 위해 ESXi 서버를 배송하는 것뿐입니다. 일단 리소스가 확보되면 서버가 몇 대 더 추가되어 타이밍이 변경 될 수 있습니다.
dunxd

종료 정책은 기본적으로 매우 길다. 그러나 솔직히 말해서 ESXi 호스트 또는 클러스터에서 UPS 종료를 실행하지 않습니다. 반 직관적 인 것처럼 보이지만 결코 문제가되지 않았습니다.
ewwhite

그렇다면 왜 ESXi 호스트에 UPS를 설치해야합니까? 정전으로 인해 또는 배터리가 소진되어 전원이 공급되면 동일한 결과를 얻습니다.
dunxd

날씨가 짧은 경우 그러나 더 큰 규모의 사이트에서는 VMWare 클러스터, 스토리지 및 네트워킹에 2-4 시간의 UPS 전원을 사용할 수 있습니다.
ewwhite

답변:


5

APC에 따르면이 방법은 불가능하며 Powerchute 네트워크를 종료해야합니다. 우리는 USB로 이것을 여러 번 시도했지만 해결책을 찾지 못했습니다.

VMWare 는 APC 승인 솔루션 사용에 대한 정보를 제공합니다.

SmartUPS가 더 나은 선택이고 네트워크 카드에 적합하다고 생각할 것입니다. 당연히 더 많은 돈이지만 서버가 중요하다면 그 비용이 가치가 있습니다. 또한 원격 사이트에서 유용 할 수있는 더 많은 모니터링 및 경고 기능을 제공합니다. 또한 모든 VM이 호스트를 완전히 종료 한 다음 종료 할 수 있도록 충분한 런타임을 보장해야합니다.


1
이것은 두 벤더 모두가 지원하는 가장 합리적인 대답처럼 보입니다. 불행히도 VMware는이를 기본적으로 수행하는 ESX / ESXi에 아무것도 구축하려고 생각하지 않았습니다. 네트워크 솔루션에서는 하나 이상의 네트워크 스위치에 UPS를 통해 전원을 공급해야합니다.
dunxd

2
UPS를 통해 네트워크 스위치에 전원을 공급 하지 않는 것은별로 의미가 없습니다 ... 매우 적은 전류를 소비하며 모든 네트워크 작동에 중요합니다.
Massimo

21

네 가능합니다. 비슷한 설정에 대한 자세한 내용은 다음과 같습니다.

하드웨어 구성 : USB를 통해 ESXi 5.1 호스트에 연결된 APC Smart-UPS 1500. 이 ESXi 호스트에서 실행되는 Linux 가상 머신. ESXi USB 패스 스루 옵션을 사용하여 UPS가이 VM에 연결되어 있습니다.

소프트웨어 구성 : VM에서 실행되는 NUT (Network UPS Tools) 마스터 및 ESXi 호스트에서 실행되는 기본 ESXi NUT 슬레이브

종료 논리 : VM 에서 USB를 통한 UPS와의 통신을 담당 하는 UPS 드라이버 usbhid-up 을 실행 중입니다. 있는 uPSD USBHID 클 드라이버 및 감시 UPS 상태 통해 UPS로 처리 커넥트. 동일한 머신에서 실행 되는 upsmon 마스터 프로세스는 upsd에 연결 하고 종료를 시작합니다. ESXi 호스트는 2 인스턴스의 실행 UPSMON 동일한 VM에 연결 있는 uPSD 내부 네트워크를 통한.

정전시 다음 순서가 발생합니다.

  1. usbhid-ups를 통한 UPS는 정전에 대한 업데이트를보고합니다.
  2. (선택 사항, 배터리 부족 대신 몇 분 안에 종료하려는 경우 유용) VM에서 upsmon업 스케치 된 5 분 타이머를 시작 합니다. 전원이 복구되면 타이머가 중단됩니다.
  3. 타이머가 작동하거나 UPS가 배터리 부족을보고하면 upsmon은 FSD (강제 종료) 플래그를 upsd로 올립니다.
  4. 독립형 NUT 구성에서 FSD 플래그는 머신을 종료합니다. 그러나 여기서 shutdown 명령은 "지금 종료해야하지만 대신 호스트를 기다리고 있습니다"와 같은 간단한 로깅으로 대체됩니다. 그리고 아무것도하지 않습니다.
  5. ESXi upsmon은 FSD 플래그도 읽으며 ESXi 호스트 종료를 시작합니다.
  6. ESXi 호스트는 모든 가상 시스템을 하나씩 종료합니다. 중요한 것은 upsd를 실행하는 VM을 마지막으로 종료해야한다는 것입니다 (ESXi 시작 / 종료 시퀀스 구성 사용).
  7. 중요 : 이 VM에는 vmware 도구가 설치되어 있어야합니다. 호스트에서 게스트 종료 명령을 수신하면 vmware-tools shutdown 스크립트가 시작됩니다. 이 스크립트는 / etc / killpower 플래그를 확인합니다. 플래그가 없으면 아무 것도 수행하지 않습니다 (UPS 이벤트가 아니라 사용자가 활성화 한 Linux 종료를 의미). 그러나 플래그가 존재하면 (FSD 활성)이 스크립트는 지연된 전원 차단 명령 (예 : 3 분)을 UPS로 보냅니다.
  8. vmware-tools 스크립트를 실행 한 후 게스트 VM이 종료됩니다.
  9. ESXi는 마지막 VM 전원 끄기 상태를보고 자체적으로 다운됩니다 (현재 실행중인 다른 시스템이 없기 때문에 약 1 분이 소요됨).
  10. 남은 2 분 동안 UPS는 전원을 차단합니다.
  11. 전원이 복구되면 ESXi가 시작되고 모든 VM의 전원이 켜집니다. UPS 모니터링 시스템을 먼저 시작해야합니다 (셧다운 순서와 동일한 구성).

다운로드 :

Linux 용 NUT는 패키지에서 설치할 수 있습니다.

ESXi 서버용 기본 NUT 클라이언트는이 페이지의 마지막 링크를 사용하여 다운로드 할 수 있습니다. http://www.networkupstools.org/download.html

내 스크립트와 conf 파일 중 일부는 여기에 있습니다 (변경된 행만 표시됨). http://pastebin.com/KkEeanK1

노트:

물론 자세한 내용이 있으며이 작업을 제대로 수행하는 데 시간이 걸렸습니다. 그러나 이제는 매우 훌륭하게 수행됩니다. 이 시스템은 모니터링 VM을 내부에서 막 종료 한 경우 (vmware-tools 스크립트가 실행되지 않음) 또는 ESXi 호스트가 시작한 VM 종료 인 경우 (/ etc / killpower 플래그가 없으므로 UPS로드가없는 경우) 또는 ESXi 종료 인 경우 (동일). 유일한 중요한 것은 호스트 부팅 후이 VM을 최대한 빨리 실행하고 마지막으로 종료하는 것입니다 (따라서 호스트 다운 시간을 예측할 수 있습니다-위에서 말했듯이, 경우에 따라 약 1 분, 2 분 더 예약합니다).

UPS 모니터링 Linux VM은 백업 스토리지 용 Samba / NFS 공유 서버, VM 용 NAT / DHCP 서버 및 기타 경량 서비스입니다. 유휴 상태 인 경우 약 22MHz의 ESXi CPU 공유와 약 10MB의 활성 RAM이 필요합니다. NUT를 사용하기 때문에 필요한 경우 동일한 UPS에서 더 많은 장치에 전원을 공급할 수 있으며 모든 장치를 정상적으로 종료 할 수 있습니다. PowerChute 및 / 또는 고가의 네트워크 모니터 카드가 필요하지 않습니다.


14

슈퍼 질문입니다. 적어도 일부 설정에서는 실제로이 작업을 아주 잘 수행 할 수 있습니다. 여러 ESXi 5.5 호스트에서 다음 레시피를 시도했습니다. 기본적으로 솔루션은 다음과 같습니다.

  1. ESXi 호스트에서 SSH 액세스 활성화
  2. Linux VM 만들기-우분투를 사용합니다. GUI 나 다른 것없이 아주 최소한의 설정 만하면됩니다.
  3. USB를 통해 APC 장치를 ESXi 호스트에 연결하고 Linux VM으로 전달하십시오.
    • VM에 추가 한 USB 컨트롤러가 APC 장치가 연결된 실제 물리적 USB 컨트롤러와 일치하는지 확인하십시오. 즉, 물리적 장치가 USB3 장치 인 경우에만 XHCI 컨트롤러를 추가하십시오. 불일치는 Linux USB 장치 드라이버에서 이상한 문제를 일으키는 것으로 보입니다.
    • 일이 밖으로 작동하지 않는 당신이 같은 오류가 표시되는 경우 ctrl urb status -62dmesg, 기회는 물리적 인 컨트롤러는 사용자의 VM에 일치하지 않습니다 있습니다. 그들이 일치한다면-문제입니다. 이런 종류의 문제가있는 하나의 설정이 있으며 실제 해결책은 없습니다.
  4. 설치 apcupsd리눅스 VM에 - 우분투, 당신은 할 수있는 sudo apt-get install apcupsd최신 버전을 설치합니다. NUT 프로젝트도 훌륭하지만 저는 전통 주의자입니다.
  5. 다음을 수행하여 plink 유틸리티를 설치하십시오. sudo apt-get install putty-tools
  6. 를 수행하여 ESXI 호스트에 연결하십시오 plink root@<your ESXi host IP>. 연결을 즉시 닫을 수 있습니다. 목적은 호스트 키를 저장하여 스크립트를 통해 실행할 때 plink가 다시 프롬프트하지 않도록하는 것입니다.
  7. 편집 /etc/apcupsd/apcupsd.conf및이 일치하므로 아래의 항목을 변경 : UPSNAME < the name you'd like your UPS to have > UPSCABLE usb UPSTYPE usb # DEVICE DIRECTIVE should be blank for USB DEVICE 또한 있는지 확인 /etc/default/apcupsdISCONFIGURED=yes
  8. 사례 /etc/apcupsd/apccontrol를 수정 하고 스크롤합니다 doshutdown. 다음과 같이 보이게하십시오 : doshutdown) echo "UPS ${2} initiated Shutdown Sequence" | ${WALL} # Shut down indirectly by triggering the ESXi host to do the # shutdown via VMWare tools /usr/bin/plink root@< your ESXi host IP > -pw < your root pw > "/sbin/shutdown.sh && /sbin/poweroff" ;;
  9. 를 사용하여 apcupsd를 다시 시작 sudo service apcupsd restart하고 호출하여 작동하는지 확인하십시오 apcaccess. 그렇지 않은 경우 로그 및 dmesg를 확인하십시오.
  10. 정전시 잘 종료해야하는 모든 VM에 VMWare Tools가 설치되어 있는지 확인하십시오. 또한 VM 시작 / 종료 목록의 일부인지 확인하십시오 (vSphere Web Client에서 다음으로 이동하십시오 vCenter -> <your host> -> Manage -> Settings -> VM Startup/Shutdown). 종료 조치가 게스트 OS를 종료하는지 확인하십시오.

이러한 작업이 실행되면 doshutdown8 단계 의 스크립틀릿이 정전시 호출됩니다. 그러면 ESXi 호스트에서 shutdown.sh 스크립트가 호출되어 호스트의 각 VM에있는 VMWare Tools 패키지가 게스트 OS를 통해 완전히 종료되도록 신호를 보냅니다. 내 경험상 APC의 PowerChute 소프트웨어보다 잘 작동합니다.

VM에서 사물을 모니터링하려면 마스터 UPS 제어 Linux VM에 연결되는 슬레이브 점유 인스턴스를 설정할 수 있습니다. 슬레이브 apcupsd.conf 파일에는 다음 과 같은
UPSTYPE net < your UPS control VM IP >:3551
항목 이 있어야합니다 UPSCABLE.이 경우에는 이와 같은 항목은 중요하지 않습니다. Windows 버전 apcupsd( 여기에서 사용 가능 )에서도 작동합니다. 포함 apctray.exe을 사용하여 현재 상태를 확인할 수 있습니다 .

그것은 거의 그것을 커버한다고 생각합니다.


+1은 매력처럼 작동했습니다. 처음으로!
Morten Kristensen 2016 년

이 답변은 고객의 사무실에서 doshutdown시퀀스를 약간 조정해야했지만 완벽하게 작동했습니다 . 부품 ${APCUPSD} --killpower바로 앞에 추가 /usr/bin/plink하여 잠시 후 UPS가 종료되고 전원이 다시 공급 될 때 자동으로 다시 시작됩니다. 또한, 그것의 가치는 다음과 같이 6 단계를 수행해야한다는 지적 root를 통해 취득 su하거나 sudo su,하지만 하지 sudo -s .
Andrea Lazzarotto

4

PowerChute를 실행하거나 UPS의 상태를 모니터링 할 수 있고 ESXi 호스트에서 종료를 트리거 할 수있는 다른 소프트웨어 (예 : apcupsd )에 USB 장치 통과 기능 을 사용하는 것을 고려할 수 있습니다 . ESXi는 공식적으로 패스 스루를 위해 매우 제한된 수의 USB 장치 만 지원 하지만 사람들은 이미 다양한 성공을 거두고 다른 클래스의 장치를 연결하고 통과했지만 APC UPS USB 는 Windows VM 의이 연습에 따라 작동하는 것처럼 보입니다. 또는 CentOS Linux VM 용 입니다.


2

여기 에서 vMA (vSphere Management Assistant)를 살펴보십시오. 사무실에서이를 사용하여 Smart-UPS를 Back-UPS가 아닌 USB를 통해 연결하여 시도하고 있습니다.


APC 또는 vmware에 관한 한 문서화되지 않은 설정이므로 자세한 내용을 추가하십시오.
dunxd

1

가능하지만 (일반적으로) 배터리 전원으로 컴퓨터를 자동으로 종료하는 것은 좋은 생각이 아닙니다. 그렇게하려는 경우, 가장 실용적인 의도와 목적을 위해 배터리로 백업되는 UPS의 비용을 절약하고 전력 손실로 인해 장비가 자동으로 종료되도록해야합니다. (정상적으로 전원을 끄는 것보다 깨끗하게 종료하는 것이 바람직하지만 전원 공급 장치를 잃어 버렸을 때 모든 것을 자동으로 종료하면 배터리 시간이 몇 분보다 길다는 점에서 빠진 것 같습니다. )

내가 항상 처리 한 방법은 전원이 꺼질 때 SA에 경고 메시지를 표시하여 SA가 회색 물질을 사용하여 서버를 종료 할시기 (또는 경우)를 결정할 수 있도록하는 것입니다. 일시적인 중단 일 경우 서버를 전혀 종료하지 않는 것이 좋거나 가능한 한 오래 서버를 가동 상태로 두어 배터리가 완전히 방전되기 전에 서버를 종료하는 것이 좋습니다. 단순한 규칙보다 인간에게 더 적합한 의사 결정 작업처럼 보입니다.


즉시 셧다운을 트리거하도록 UPS를 구성 할 필요는 없지만 배터리가 완전히 방전되기 전에 셧다운되도록하려면, 특히 내가 일하고 전력이 공급되는 일부 지역에서는 더 많은 배터리를 구매해야합니다 매일. 물론 사람을 참여시키는 것이 좋지만, 항상 원격 사무실에 시스템 관리자가있는 것은 아닙니다.
dunxd

@ dunxd 좋은 점-나는 적어도 일부 서버가 머물러 있어야하거나 지옥이나 물이 많은 HA 환경에 더 익숙하므로 게임의 이름은 전력에 가장 적합한 배급 방법을 알아내는 것입니다 (선택적으로 종료). 서비스에 미치는 영향을 최소화하여 모든 사람의 초점이나 사용 사례가되는 것은 아닙니다.
HopelessN00b

1

기존의 베어 메탈 설치 시대에 APC PowerChute Plus는 설치 프로세스의 필수 부분이었습니다. 간단한 직렬 신호 케이블과 Red Hat 전용 바이너리 를 사용하여 로컬에 연결된 서버를 제어하는 ​​규칙을 쉽게 설정할 수있었습니다. UPC 배터리 이벤트, 라인 전원 이벤트 및 종료 작업에 대한 기본 이메일 알림이 제공되었습니다.

POWERCHUTE MAIL MESSAGE
Message from PowerChute@Bonanza:

UPS on battery: Blackout 000.0 V. 

POWERCHUTE MAIL MESSAGE
Message from PowerChute@Bonanza:

Normal power restored: UPS on line.  

또는

POWERCHUTE MAIL MESSAGE
Message from PowerChute@Bonanza:

Shutdown started.  

무슨 일이 있었는지 볼 수있는 합리적인 인터페이스와 ...

여기에 이미지 설명을 입력하십시오

그 소프트웨어는 결국 상업적으로 사용되었습니다 (또는 APC 웹 사이트에 묻혔습니다). 비슷한 것을 제공하기위한 오픈 소스 접근 방식이 몇 가지있었습니다. 그러나 단일 VMWare ESXi 호스트에서는이 모든 것이 복잡해집니다.

이것은 VMWare가 기본 하이퍼 바이저에 통합해야하는 것으로 보입니다. 기본이며 사용자에게 적절한 수준의 보호를 제공 할 수 있습니다. 내가 볼 수있는 가장 일반적인 해결책은 전용 VM에 대한 USB 통과, 네트워크 데몬 접근 또는 내가하는 일을하는 것입니다. 자동 또는 배터리 종료를 구성하지 않는 경우 ...

물론, 일반적으로 1 시간 이상 동안 시스템로드를 지원할 수있는 UPS를 사용하지만 중단 된 가동 중단이 발생합니다. 대안은 저비용 또는 리퍼브 네트워크 인터페이스 카드 몇 개를 수집하여 SmartUPS 장치를 최소로 구매하는 것입니다.


0

다음 링크를 확인하십시오 . 가장 우아한 솔루션은 아니지만 매우 실용적이고 매우 간단한 솔루션입니다. 보안 측면에서 가능한 단점이 있습니다 (특정 네트워크 디자인, 호스트에로드 된 게스트 및 해당 게스트에 대한 사용자 액세스 권한에 따라 다름).


0

MrMajestyk 솔루션을 사용하고 rsa 공개 키를 사용하여 비밀번호없이 ssh 액세스로 plink를 통한 ssh 액세스 만 변경했습니다. apcupsd VM에서 생성 된 rsa 키는 vmware 호스트의 / etc / ssh / keys-root / authorized_keys에 포함되어야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.