VM에 IPMI을 설치하고 사용해보자

hee·4일 전

IPMI란? (Intelligent Platform Management Interface)

IPMI는 표준화된 메세지 기반의 하드웨어 관리 interface로, 서버나 장비의 전원 상태, 하드웨어 이상 유무등을 네트워크를 통해 원격으로 모니터링하거나, 직접 제어할 수 있는 기능을 제공한다. IPMI 기능이 탑재된 메인보드나 BMC(Baseboard Management Controller)를 이용하여 운영체제와는 독립적으로 하드웨어를 직접 관리할 수 있다.

즉, 서버 전원의 on/off 여부와 상관없이, 운영체제가 제대로 동작하지 않아도, 기타 문제가 생겨 접속이 불가하더라도 IPMI로 조작할 수 있다. 당연히 모든 문제가 발생해도 IPMI를 사용할 수 있다는 것을 의미하지는 않으나, BMC에 문제가 생기지 않고 서버에 전력이 공급되고 있다면, 대체로 IPMI를 사용할 수 있다.

그렇다면, IPMI를 왜 사용해야하는가?

→ 물리적 접근이 어려운 상황에서의 관리 편의성

서버 랙 셋업, 네트워크 설치, OS 설치 및 IP 할당과 같은 서버 랙 세팅을 해야할 경우, 문제가 발생할 때마다 서버실을 직접 방문해 수정해야한다. 또한, 여러 노드에 OS를 설치해야할 때, 각 노드에 모니터를 연결하고, 부팅 USB를 꽂고, 키보드를 직접 연결한 후 OS를 설치해야하는 번거로움이 있다.이 번거로움을 IPMI는 해결한다. 서버에 접근할 때 물리적인 접근이 필요하지 않게 IPMI는 도와준다.

IPMI 주요 기능

  1. 전원 제어

    서버가 응답하지 않는 상황에도 물리적으로 서버실에 갈 필요없이 IPMI를 통해 재부팅 명령을 내릴 수 있다.

    원격 전원 제어가 가능하다.

  2. 콘솔 접근

    서버 앞에 직접 모니터와 키보드, 마우스를 연결한 것처럼 원격에서 서버 화면을 보고, 서버를 조작할 수 있다.

    원격 Media Mount가 가능하기 때문에, 내 로컬 PC에 존재하는 파일(ex. iso)을 서버의 가상 드라이브로 인식시켜 운영체제 설치나 복구를 진행할 수 있다.

  3. 하드웨어 모니터링

    CPU 온도, 팬 속도, 전압, 전력 사용량과 같은 정보를 실시간으로 모니터링 할 수 있다.

    하드웨어 오류나 일정 온도 이상등의 이벤트 발생시 로그 확인이 가능하고, 미리 지정된 관리자에게 알림을 보낼 수 있다.

  4. 펌 웨어/ BIOS 관리

    BMC나 BIOS를 최신 버전으로 업데이트 하거나, 설정을 변경할 수 있다.

IPMI 설치 과정

https://charliekim.tistory.com/6 를 참고하여 설치를 진행했다.

우선 IPMI를 이전에 만들어둔 vm 환경에 설치해서 확인해보려고 한다. 하지만, vm이기때문에 당연히 물리적 하드웨어가 조회되지 않아 IPMI를 설치할 수 없는 환경이다.

이 경우에는 OpenIPMI의 ipmisim을 사용하거나, VirtualBMC(vBMC)를 사용하거나, QEMU/KVM IPMI 애뮬레이션을 통해 IPMI를 소프트웨어적으로 시뮬레이션 할 수 있다고 한다.

VirtualBMC(vBMC)

vBMC 는 리눅스 KVM 기반 가상머신에 대해 가짜 BMC 기능 (IPMI 프로토콜 제공)을 구현해준다.

보통 vBMC이 사용되는 사례는 다음과 같다.

  • 베어메탈 프로비전이 기능 개발 및 테스트에 활용하는 Openstack Ironic 개발 및 테스트 진행

  • 실제 장비 없이 BMC(IPMI) 인터페이스를 연동해야하는 IPMI 자동화 실습

  • 교육용, 데모, PoC 환경에서 사용

  • 가상 환경에서 자동화된 인프라 테스트 진행시 사용

필자의 경우 VirtualBMC(vBMC)을 사용해 실습을 진행하였다.

vBMC 설치

기본적으로 설치해야하는 설치 패키지

sudo apt update
sudo apt install python3-pip python3-venv ipmitool
sudo apt install pkg-config
# 하이퍼 바이저 설치 
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager

python 가상환경 생성 및 활성화

시스템 영향 최소화를 목적으로 가상환경을 생성해 진행한다.

# python 가상환경 생성 (시스템 영향 최소화를 목적으로)
python3 -m venv --system-site-packages /opt/virtualbmc
# python 가상환경 활성화 
source /opt/virtualbmc/bin/activate

가상환경 내부에 virtualBMC를 설치

# 가상환경 안에 virtualBMC 설치
/opt/virtualbmc/bin/pip3 install virtualbmc
# 제대로 설치되었는지 확인
vbmc --version

하이퍼 바이저 상태 확인

# 서비스 시작
sudo systemctl start libvirtd
# 부팅 시 자동 시작 설정
sudo systemctl enable libvirtd
# 상태 다시 확인
sudo systemctl status libvirtd

실습용 VM (IPMI를 설치할 VM) 생성 및 vbmc에 등록

# 실습용 VM 생성하기
virt-install --name hee \
--ram 128 \
--disk none \
--boot network \
--os-variant ubuntu22.04 \
--graphics none \
--dry-run --print-xml > hee.xml

# XML 설정을 바탕으로 VM 등록
virsh define hee.xml

# 현재 사용중인 가상머신을 vbmc에 등록
vbmc add hee --port 6230 --username admin --password admin

vBMC 활성화

# BMC 활성화
vbmc start hee

# 리스트 확인 
vbmc list 

vbmc list에 실습용으로 생성한 vm이 보이면 준비 완료 !

IPMI 명령어로 제어 실습

ipmitool을 설치한다.

sudo apt install ipmitool -y

전원 상태 확인, 전원 켜기 끄기

# 1. 현재 전원 상태 확인 (아마 off일 겁니다)
ipmitool -I lanplus -H 127.0.0.1 -p 6230 -U admin -P admin chassis power status

# 2. 전원 켜기
ipmitool -I lanplus -H 127.0.0.1 -p 6230 -U admin -P admin chassis power on

# 3. 다시 상태 확인 (on으로 바뀌었는지 확인!)
ipmitool -I lanplus -H 127.0.0.1 -p 6230 -U admin -P admin chassis power status

vBMC는 가상으로 BMC 시뮬레이션을 진행한 것이기 때문에 아래의 실습은 진행이 불가하였다. (값을 가져올 수 없으므로) 다만, 실제 상황에서는 사용이 가능하여 자주 사용되는 명령어를 몇가지 정리해보았다.

  • 하드웨어 센서 모니터링 (온도, 팬 속도, 전압 상태)

    	- 서버 내부의 온도, 팬 속도, 전압 상태를 실시간으로 확인할 수 있음.
ipmitool -I lanplus -H 127.0.0.1 -p 6230 -U admin -P admin sdr list
  • 시스템 이벤트 로그 확인 (SEL)

    	- 하드웨어 수준에서 발생한 모든 경고 기록을 확인할 수 있음. OS가 부팅되기 전의 에러도 기록됨.
ipmitool -I lanplus -H 127.0.0.1 -p 6230 -U admin -P admin sel list
  • 시리얼 터미널 접속 (Serial Over LAN)

    	- 서버에 모니터 연결 안해도 네트워크를 통해 텍스트 기반의 부팅 화면이나 콘솔을 직접 확인 가능
ipmitool -I lanplus -H 127.0.0.1 -p 6230 -U admin -P admin sol activate
  • 식별용 LED 제어

    	- 수많은 랙 중 작업해야할 장비가 무엇인지 알려줌
ipmitool -I lanplus -H 127.0.0.1 -p 6230 -U admin -P admin chassis identify force

0개의 댓글