Kubevirt를 활용한 VM 및 컨테이너 통합 관리 프로젝트 2 / oVirt
1) oVirt 소개
oVirt는 하나 이상의 엔터프라이즈 데이터 센터에 걸쳐 호스트, 가상 서버, 데스크탑을 한 곳에서 관리할 수 있는 오픈소스 가상화 플랫폼이다.
oVirt는 현재까지 꾸준히 지속개발 되어 신뢰할 수 있는 KVM 하이퍼바이저를 사용하며, libvirt, Gluster, PatternFly 및 Ansible을 포함한 여러 다른 커뮤니티 프로젝트를 기반으로 구성되어 벤더락인이 걸리지 않는 점이 있다. 또한 다양한 가상머신의 하드웨어적 구성요소의 관리가 간편하다는 장점이 있다.
호스트간 자동 마이그레이션 기능을 통해 고가용성을 달성할 수 있다. 따라서 가상머신 상의 서비스를 지속적으로 제공가능한다.
2) oVirt 구성
오버트 클러스터는 엔진, 호스트, 스토리지로 구성된다.
엔진은 그래픽 사용자 인터페이스와 RESTful API를 사용하여 데이터 센터에서 사용하는 가상 시스템 디스크 이미지, 설치 ISO, 기타 스토리지와 네트워크 구성 요소를 관리하는 역할을 한다.
저희는 엔진을 호스트와는 별도의 서버로 독립시켜 구성하는 standalone engine 방식으로 ovirt cluster를 구성했다.
코어인 오버트-엔진에서 호스트와 스토리지를 붙여 리소스를 관리하고 VM을 배포, 마이그레이션, 각 노드의 모니터링을 하게 된다.
호스트에서는 엔진과의 통신을 담당하는 VDSM(Virtual Desktop Server Manager)을 통해서 위에 올려져 있는 가상머신을 실행하고, 스토리지에서는 VM에서 사용하기 위한 디스크와 이미지 파일, iso 파일등에 접근할 수 있도록하는 저장소 기능을 제공한다.
3) oVirt 설치 과정
ovirt 클러스터를 구성하려면 엔진을 구축한 후에 호스트와 스토리지를 연결한다. 프로젝트에서는 엔진 이미지로 Centos8.4 버전 사용했다. 호스트네임, 네트워크 등의 기본적 설정을 마친 후 레포지토리를 인식시키고 engine-setup 커맨드를 통해 엔진의 자동구성했다.
여기까지 설치가 진행되면 웹브라우저에서 oVirt 콘솔에 접속할 수 있게 된다.
둘째로 가상시스템이 올라갈 호스트의 구성한다. 이미지로는 oVirt에서 지정한 ovirt node installer 를 사용한다. ovirt engine과의 통신을 위해 /etc/hosts 파일에 엔진의 도메인이름을 설정하고, 네트워크 대역대는 엔진과 동일하게 구성해준다.
Host를 두 대로 구성하기로 했기 때문에 다음과 같이 host1, host2를 생성된 것을 볼 수 있다.
마지막으로 스토리지는 NFS 서비스를 사용했다. 이를 위해 먼저 스토리지 서버에서 저장소 디렉토리와 vm 디스크 이미지를 저장할 디렉토리를 마운트한다.
다음으로 오버트 콘솔에서 스토리지 노드를 생성한다. 스토리지 노드 생성 시, 연결할 data center와 host 노드, 스토리지 서버의 ip주소와 마운트할 디렉토리 경로를 입력한다.
다음과 같이 두 개의 스토리지가 성공적으로 연결되었음을 확인할 수 있다.
이렇게 ovirt 클러스터의 구축이 끝나면 가상머신을 생성할 수 있다. 다음은 그 과정을 설명한다.
ISO 파일을 스토리지에 업로드 하여 새로 생성한 VM에서 os를 부팅 또는 설치 할 수 있다.
붙여진 OS 이미지에 맞춰 가상머신 생성 콘솔의 system 부분에서 VM의 초기사양을 설정할 수 있다.
구성이 완료되면 엔진이 가상머신 정보를 읽는 것을 잠시 기다리고, RUN 을 클릭하면 오버트 상에서 VM을 사용할 수 있게 된다.
가상머신 생성 단계에서 cpu, memory, NIC 등 VM의 하드웨어 구성을 설정할 수 도 있지만, 이렇게 생성된 뒤에도 호스트의 자원 사정 등에 따라 수정하여 관리할 수도 있다.