관리 메뉴

공부공부 공부공부내용

Ovirt개요 본문

Ovirt 

(오픈소스 가상화 관리 플랫폼이다. Host와 Guest 시스템을 중앙에서 관리하는 가상화 플랫폼)

하드웨어 노드, 저장소, 네트워크 리소스를 관리하고 데이터 센터에서 실행 되고 있는 가상 머신을 배치하고 모니터링 하기 위해 oVirt 관리 인터페이스(oVirt 엔진)를 사용한다.

 

oVirt는 oVirt-Engine(JBoss 미들웨어 기반의 Java 웹서비스)이라는 Administrator/User Portal 웹기반 서비스와 oVirt-Node(Customized Fedora+KVM+libvirt+VDSM로 구성)라는 하이퍼바이저 전용 이미지로 구성되어 있습니다.

oVirt-Engine은 PostgreSQL DB에 필요한 정보를 저장하고 대부분의 통신은 XML-PRC 기반으로 이루어집니다. oVirt-Node의 경우에는 Read-Only로 부팅하여 Stateless 하이퍼바이저 역할만 수행하므로 필요시 손쉽게 추가하거나 삭제하실 수 있습니다

 

oVirt 기능

  - H/W node 관리

  - 스토리지 및 네트워크 자원 관리

  - 가상머신 배포 및 관리기능

  - 마이그레이션 및 고가용성

        * 마이그레이션 :이주

  - 각 노드 및 전체적인 플랫폼 모니터링 기능

  - 기타 등등..

특징

  • KVM 하이퍼바이저를 기반으로 구축
  • 실시간 migration 지원
  • VM 리소스 사용량 모니터링
  • 오픈소스 분산 가상화 솔루션
  • 기업 인프라 관리 목적으로 디자인됨
  • kvm 하이퍼바이저를 사용하며, 몇몇 커뮤니티 프로젝트를 기반으로 구성 (윈도우제공 , VDI제공)

 

 Ovirt에서 많이 쓰이는 스토리지 중 하나= glusterfs

            glusterfs (오픈소스 기반 대표스토리지 중 하나, 다른 하나는 쉐프?)쉐프는 노드도 복잡하고 관리가 복잡

            -nfs와 거의유사

            - nfs처럼 NAS기반 스토리지

 

oVirt의 KVM(Kernel-based Virtual Machine)

  - 커널과 직접적으로 통합된 HyperVisor

  - Native(or baremetal) HyperVisor Host 에서 kernel이 Hypervisor 역할을 하도록 함

  - Thin/Thick Hypervisor Host

       Thin Hypervisor Host

           * Native(or bare-metal)형 하이퍼바이저

           * Host 시스템에서는 어떤 서비스도 제공되어선 안됨, 가상화 관리를 위해서만 사용

           * Guest 시스템은 어플리케이션 및 서비스 제공, Host시스템 자체가 불안정하거나 공격받으면 Guest에 영향

        Thick Hypervisor Host

           * Hosted 형 하이퍼바이저

           * Host 시스템에 OS 및 하이퍼바이저 SW 설치하여 사용

           * Guest 시스템을 설치하기쉽다.

           * 개발, 테스트, 시연, 강의 용도로 사용하기 적당

    - KSM(Kernel Same-page Merging)

            KVM 의 메모리 관리 기법, Host 시스템에서 Guest OS가 동일하면 메모리 페이지를 공유

    - 장치 모델(Device Model)

             Guest가 실제 H/W 접근 불가, 실제 H/W와 같은 역할을 할 가상의 H/W 필요

             Guest에 에뮬레이트된 가상의 H/W를 제공

             QEMU를 통한 H/W 에뮬레이트

    - VirtlO (Virtualization Input/Output)

            에뮬레이트된 가상의 H/W 는 실제 H/W 보다 성능이 좋진 않다.

            반가상화 I/O 장치를 Guest에게 부여 -> 성능이 좋아진다.

 

 

oVirt의 구성요소

    -  Engine or Manager

            물리적 자원과 가상의 자원을 중앙에서 관리하기 위한 플랫 폼랫폼

            웹서비스로 실행되는 JBoss 기반 Java 응용프로그램

            Enterprise Linux 위에 설치

            Data는 DB에 저장(PostgreSQL)

            두가지 유형의 배포방식 지원

                 *  Standalone Manager

                        별도의 물리적시스템또는 가상화 환경에서 호스트 되는 가상 시스템 에서 실행(일반적으로는 물리적인 시스템 배포)

                        배포 및 관리가 쉽다, 추가적인 물리서버 필요

Standalone Manager

                 *  Self-Hosted Engine

                         엔진이 관리하는 oVirt 환경에 가상 시스템으로 설치, 실제서버가 하나 더 적은 것이 장점

                         작은 환경에 적합, 고가용성

Self-Hosted Engine

 

    - 호스트(Host)

           하나 이상의 가상 시스템을 실행하는 물리적인 서버

           oVirt Nodes (oVirt 공식홈페이지에서 iso 파일 받아서 사용)

                       * 단일 베어메탈 하이퍼 바이저(Standalone Bare-metal Hypervisor)

                        * 유직 관리의 단순화, CentOS 7 바탕으로 만들어졌다.

             Enterprise Linux Hosts

                        * 기존의 Enterprise Linux 를 바탕으로 트 구성

                         * RedHat 계열이 아닌 타사 감시장치가 있을 경우 VDSM 충돌 가능성 있음

             호스트 요구사항 * AMD-V 또는 Intel VT 하드웨어 가상화 확장기능을 지원하는 cpu필요

 

    - VDSM(Virtual Desktop Server Manager)

                엔진의 agent로 제공되는 관리 모듈, Manager 및 Host 간의 통신을 허용

                 libvirtd 를 사용하여 가상 머신을 시작, 중지, 재부팅 등의 명령 전송

    - 저장소(Storage)

                디스크 이미지, 템플릿 및 ISO 파일에 대한 접근 제공

                 다양한 파일시스템 및 블록장치 접근 방식 지원

                 백업 시 인프라의 NAS or SAN 하드웨어에 의해 제공

                 세 가지 유형의 도메인 제공 (여기서 도메인은 영역 을 의미한다)

                       * 데이터 도메인 - 가상머신 디스크 이미지와 템플릿 저장

                       * ISO 도메인 - 설치시 필요한 ISO 파일 저장(NFS or POSIX or GlusterFS)

                       * 내보내기 도메인 - 백업 및 마이그레이션을 위한 임시 저장소(현재는 사용X, 데이터 도메인에서 바로 수행)

      - 데이터 웨어하우스(Data WareHouse)

                    보고 목적의 정보기록, Manager 설치 시 함께 설치 및 구성

                   표준 시간대를 UTC로 설정 권장

      - 네트워크

                   oVirt 환경 구성을 위한 필수 조건

                   스토리지 및 호스트 관리

                   사용자 연결 및 가상 컴퓨터 연결

                   논리적 네트워크를 정의 ( 네트워크 트래픽분리, 유형 별 경로 정의, 물리적 토폴로지 가상화)

                    ovritmgmt 논리 네트워크 기본생성 -> oVirt와 호스트 간의 관리 용도

 

 

 

 

3tier 구조

3계층 구조(3 Tier Architecture)란 프레젠테이션 로직(클라이언트, 사용자 인터페이스), 비즈니스 로직, 데이터베이스 로직을 각각 다른 플랫폼 상에서 구현한 것이다.

설명전에 용어에 대해 간단히 구분을 해보자.

계층(Tier) : 컴포넌트들의 물리적인 분리를 뜻한다.

층(Layer) : 컴포넌트들의 논리적인 분리를 뜻한다

1)web (프론트엔드)

2)was (web application server.미들웨어_ 사용자와 컴퓨터 중간, 백엔드 개념,웹서비스를 거쳐 사용자가 요청한 값을 번역해서 다시 주는 프로그램 서버) *백엔드 _ 로직 및 알고리즘,  php  jsp 언어 사용

     wildfly (ovirt)

     JBoss(RHV)

3)db

3계층 구조에서 각 계층은 물리적으로도 독립적이며 각 계층의 변경이 다른 계층에 의존하지 않음

 

1. 프레젠테이션(클라이언트) 계층

프레젠테이션 계층은 응용 프로그램의 최상위에 위치하고 있는데 이는 서로 다른 층에 있는 데이터 등과 커뮤니케이션을 한다.

- 사용자 인터페이스를 지원한다. (인터넷 브라우저의 정적인 데이터를 제공한다.)    

- 이 계층은 GUI, 또는front-end도 불린다.

- 비즈니스로직이나 데이터관리코드를 포함해서는 안된다.

- 주로 웹서버를 뜻한다(물리적 : WEB서버)

ex) HTML, javascript, CSS, image

    

2. 애플리케이션 계층

이 계층은 비즈니스 로직 계층 또는 트랜잭션 계층이라고도 하는데, 비즈니스 로직은 워크스테이션으로부터의 클라이언트 요청에 대해 마치 서버처럼 행동한다. 차례로 어떤 데이터가 필요한지를 결정하고, 메인프레임 컴퓨터 상에 위치하고 있을 세 번째 계층의 프로그램에 대해서는 마치 클라이언트처럼 행동한다.

- 정보처리의 규칙을 가지고 있다.(동적인 데이터를 제공한다)

- middleware 또는 back-end로 불린다.

- 프레젠테이션코드나 데이터관리 코드를 포함해서는 안된다.

-주로 어플리케이션 서버를 뜻한다(물리적 : WAS서버)

ex) Java EE, ASP.NET, PHP

    

3. 데이터 계층

데이터 계층은 데이터베이스와 그것에 액세스해서 읽거나 쓰는 것을 관리하는 프로그램을 포함한다. 애플리케이션의 조직은 이것보다 더욱 복잡해질 수 있지만, 3계층 관점은 대규모 프로그램에서 일부분에 관해 생각하기에 편리한 방법이다.

-데이터베이스를 주로 뜻한다.

-DB 또는 File System를 접근 및 관리한다.

-back-end라고도 불린다.

-주로 DB서버를 뜻한다(물리적 : DB서버)

ex) MySQL DB, Oracle DB

 

3계층구조를 사용하면 각 계층별로 웹디자이너, 소프트웨어엔지니어, DB관리자가 역할분담을 하여 일을 효율적으로 할 수 있다.

회사 규모 및 사용자의 증가에 따라서 1,2,3계층 구조를 고려해야 한다.(물론 비용은 3계층으로 갈수록 많이 든다.)

 

 

Ovirt 아키텍처 1

 

 

# libvirtd (이 서비스는 절대 다운되면안됨, 서비스 데몬을 제어하는 역할을 함.)

# vdsm (파이선으로 만들어져 있으며 엔진과 다이렉트 역할을 함)

->엔진에서 호스트에 원격 접속할 수 있어야함.

참고/ ssh 인증방식 2가지(passwd, key기반 방식)

oVirt가 KVM+Qemu 가상화에 기반한다는 것은 이미 아시리라 생각됩니다. KVM+Qemu가 가상화 구현에 필요한 기본 요소라면 oVirt-Engine과 oVirt-Node간에 통신을 처리하고 명령을 받아 VM들을 제어하는 역할을 수행하는 Agent가 필요할텐데요, VDSM(Virtual Desktop and Server Manager)가 바로 그 Agent로 oVirt-Node에서 서비스로서 실행됩니다.

사실 KVM 가상화를 관리하는 도구에는 oVirt의 VDSM 뿐만 아니라 GUI기반의 virt-manager, CLI기반의 virsh, 그리고 웹 기반의 KIMCHI, OpenStack 등이 있습니다. 아직까지 모든 도구들이 직접 KVM+Qemu를 통제하지는 않고 사실상 libvirt라는 라이브러리를 통해 제어를 하고 있습니다.

libvirt의 경우에는 VM들을 관리하는 표준적인 API를 제공하여 KVM, Xen, VMware ESX, VirtualBox 등 하위 하이퍼바이저로부터 독립된 상위 응용프로그램을 구현할 수 있도록 도와주는 라이브러리이자 서비스입니다. libvirt 내부적으로는 하이퍼바이저별 driver를 통해 실제로 통제 작업을 수행하게 되며, 이 때문에 libvirt를 사용하는 도구들은 이론적으로 하이퍼바이저의 종류에 구분없이 동작할 수 있습니다.

그러나 libvirt 자체도 계속해서 기능이 추가되고 발전하고 있으며, VDSM등과 같이 각 프로젝트의 Agent도 비슷한 방향으로 발전하면서 상호 프로젝트간에 중복 작업이 일어나거나 호환성을 유지에 어려움이 많아지고 있습니다. libvirt가 현실적으로 하이퍼바이저를 통제하기 위한 가장 손쉬운 방법이긴 하나, 그 장점에 따른 한계도 있고 VDSM과 같이 단일 하이퍼바이저 방식만을 지원하는 경우에는 하나의 Layer가 추가되는 형태라서 커뮤니티내에서는 변화가 필요하다는 목소리가 나오고 있는데요, 어떤식으로든 변화가 예상됩니다.

가상화, 클라우드 컴퓨팅에서 오픈소스 프로젝트를 빼놓고는 설명하기 힘들겠죠? 참고로 libvirt 프로젝트의 경우 Red Hat Emerging Technologies의 하나로서 지원받고 있습니다.

# postgreSQL  (DB) 

# ldap /ipa, Active Directory

>  외부 사용자 인증 서비스_와 연동할 때 사용하는...

-> 기업이 사용하는 권한을 지정, 역할 지정/  사용자들의 정보 관리 및 제공

 

# SPICE

oVirt/RHEV 환경에서 VM console에 접속하려면 VNC 또는 SPICE client 프로그램을 사용해야 합니다. VNC의 경우 워낙 잘 알려진 원격 Console 접속 방식이지만 SPICE의 경우는 조금 생소할 수 있습니다. VNC의 경우 (Advanced 기능을 가진 솔루션도 있으나) 일반적으로 단순히 화면 및 키보드/마우스 전송이 국한되기 때문에 VDI(Virtual Desktop Infrastructure) 구성을 위해서는 다소 부족할 수 있습니다. 때문에 KVM, oVirt/RHEV를 개발했던 Qumranet(현재는 Red Hat에 인수)이 KVM등과 같이 개발한 VDI용 프로토콜 및 프로그램입니다. 따라서 KVM+Qemu 조합에 보다 최적화되어 있습니다.

현재는 오픈소스화 되어 있으며 SPICE를 사용할 경우, Server <-> Client 간에 USB 및 사운드까지 전달가능하며, 다중 모니터 기능까지 지원하고 있어, 기업에서 가상화/클라우드 기반의 VDI 환경을 구축하고자 할 때 오픈소스로서 선택할 수 있는 가장 적합한 대안입니다.

당연히 oVirt/RHEV 환경의 기본 Console 방식이며, OpenStack에서도 많이 사용되고 있습니다. oVirt/RHEV에서는 윈도우즈 및 리눅스용 virt-viewer client를 사용할 수 있으며, Firefox 브라우저용 플러그인 spice-xpi를 사용하면 oVirt Admin Portal에서 바로 접속할 수 있습니다. 추가적으로 Android용 클라이언트도 개발되어 있어 Android 태블릿에서 VDI 구성도 가능합니다

 

 

 

다음실습에서 사용 될 Ovirt구성도