KR20180107983A - 가상화 플랫폼 생성 및 실행 장치 및 그 방법 - Google Patents

가상화 플랫폼 생성 및 실행 장치 및 그 방법 Download PDF

Info

Publication number
KR20180107983A
KR20180107983A KR1020170037004A KR20170037004A KR20180107983A KR 20180107983 A KR20180107983 A KR 20180107983A KR 1020170037004 A KR1020170037004 A KR 1020170037004A KR 20170037004 A KR20170037004 A KR 20170037004A KR 20180107983 A KR20180107983 A KR 20180107983A
Authority
KR
South Korea
Prior art keywords
virtual machine
virtualization
virtual
model
platform
Prior art date
Application number
KR1020170037004A
Other languages
English (en)
Inventor
이광용
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020170037004A priority Critical patent/KR20180107983A/ko
Publication of KR20180107983A publication Critical patent/KR20180107983A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2025Failover techniques using centralised failover control functionality

Abstract

본 발명의 일 실시예는, 마스터 가상 머신과 백업 가상 머신들 간의 토폴로지 정보인 가상화 플랫폼 참조모델 정보를 입력으로 하여 새로운 가상 머신 이미지를 빌드하는 단계; 상기 가상화 플랫폼 참조모델 정보를 입력으로 하여 가상화 플랫폼 실행 스크립트 프로그램을 생성하는 단계; 및 생성된 가상 머신 이미지와 상기 가상 플랫폼 실행 스크립트 프로그램을 이용하여 가상화 머신들을 실행하는 단계; 를 포함하는, 가상화 플랫폼 생성 및 실행 방법을 제공한다.

Description

가상화 플랫폼 생성 및 실행 장치 및 그 방법 {APPARATUS FOR CREATING AND EXECUTING VIRTUAL PLATFORMS AND METHOD FOR THE SAME}
본 발명은 멀티코어를 갖는 고성능 임베디드 시스템에서 가상화 시스템을 생산토록 지원하는 가상화 플랫폼 생성 기술에 관한 것이다.
현재 가상화 기술은 모든 분야의 컴퓨팅 자원에 대해서 기술 개발이 진행되고 있으며, 인터넷 포탈 업체의 데이터 센터 등에서 고성능 서버 장치들에 성공적으로 적용되고 있다. 가상화 기술은 데이터센터 내의 서버, 스토리지 등부터 시작해 전송을 위한 라우터 등 네트워킹 장비, 그리고 PC, PDA, 스마트폰 등 사용자 단말기에 걸쳐 광범위하게 적용될 수 있는 기술이다. 차량용 스마트 게이트웨이 장치, 스마트 홈 게이트웨이 장치, 미래 네트워크용 비정지 라우터 등과 같은 미래의 임베디드 장비를 위한 기술로도 사용 가능하다.
현재의 가상화 기술은 데이터 센터 등의 가상화 서버 플랫폼이나, PC와 같은 일반 목적의 컴퓨팅에 적용된다. 또한, 물리적 머신 수가 수십~수백 대 이상 존재하고, 머신 당 가상화 머신 수가 10개 이상 존재하는 환경이나, 수십만 고객의 다중 처리 서비스 제공이 중요한 데이터 센터와 같은 환경에서 적용되고 있다. 하지만, 네트워킹 장비, 스마트폰, 차량용 스마트 게이트웨이 장치, 혹은 스마트 홈 게이트웨이 장치 등과 같은 임베디드 장치와 같은 분야에 적용은 아직 미미하다. 기존의 임베디드 장치들은 CPU가 한 개라든지, 수십 메가바이트의 메모리와 등과 같이 컴퓨팅 파워가 PC에 비해 현저히 떨어진다든지 하였기 때문이다.
그렇지만, 현재는 임베디드 장치들도 하드웨어의 성능이 매우 좋아지고 있다. 현재의 임베디드 장치들은 메모리 등에 약간의 리소스 제약이 따르지만, 수 개에서 수십 개의 CPU 코어를 갖는 멀티코어 환경에서 특수 목적 응용들을 실행하고 있다. 이들 장치들에서 하드웨어를 통해 고성능은 쉽게 달성하고 있으나, 고신뢰를 필요로 하는 임베디드 장치들에서의 가상화 처리 기술은 아직 부족하다.
임베디드 가상화 기술은 스마트 자동차, IoT 홈 허브, 차세대 네트워크 장비 등에 적용되는 기술이다. 이는 특수 목적 컴퓨팅 파워가 필요하며, 물리적 머신 수는 10대 이내에 존재하고, 머신 당 가상화 머신 수는 10개 이내로 존재한다. 또한, 임베디드 가상화 기술은 개발시 실시간성, 고장에 대한 고신뢰 보장, 시스템 안전 보장 등이 중요 요소로 고려된다.
특히, 가상화 시스템 기술은 1년 365일 멈춤 없이 고가용성 서비스 제공하고, 정보에 대한 신뢰성 있는 접근 제공하고, 중요한 데이터의 보안 서비스를 제공하고, 빠른 응용 서비스의 확장 지원하고, 서버 리소스 최적화 및 모니터링 제공하며, 가상화 이미지의 재사용을 지원하는 등의 다양한 특징을 가진다.
그러나, 종래 기술의 문제점은 신속한 가상화 서비스 제공이 어려우며, 가상화 기술을 이용한 고신뢰성 및 고안전성 보장 등이 어렵다는 것이다. 도 1을 참조하면, 기존에는 고신뢰성을 위해 마스터-백업 가상 머신을 갖는 가상화 시스템을 구축한다고 할 때, 개발자가 수고스럽게도 일일이 하나씩 가상 머신 이미지들을 만들고 실행시켜 주어야 한다. 그리고, 임베디드 시스템의 경우 제한된 리소스 상황으로 인해, 가상 머신을 몇 개 구축해야 할지를 쉽게 정할 수 없다. 또한, 가상 머신들을 활용한 고장 감내(Fault Tolerant) 처리 모델과 같은 것이 없어, 고신뢰 혹은 고가용 시스템 구축이 쉽지 않다.
전술한 배경기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라 할 수는 없다.
국내 공개특허공보 제10-2009-0065126호
기존의 기술이 갖는 문제를 해결하기 위해, 미리 증명된 고신뢰의 가상화 시스템 참조 모델(virtualization systems reference model)을 재사용하여 가상화 시스템 구축이 가능케 하는 가상화 플랫폼 생성 도구 기술을 제안한다.
본 발명의 목적은 임베디드 장비에 탑재될 가상 머신 이미지를 사용하여, 1:1, N:N, N:M의 마스터 대비 백업 가상 머신들의 토폴로지 정보를 포함하는 가상 머신 참조 모델 재구성 정보 입력을 통해, 고신뢰 가상 머신 인스턴스들을 자동으로 생성 및 실행할 수 있게 도와주는 가상화 플랫폼 생성 및 실행 장치 및 그 방법을 제공하는 것이다.
또한, 본 발명의 목적은 가상화 환경(virtualization environment)에서 사용할 수 있는 고신뢰 참조 모델의 프레임워크를 실현하는 가상화 플랫폼 생성 및 실행 장치 및 그 방법을 제공하는 것이다.
또한, 본 발명의 목적은 개발자가 기존 품질이 인증된 가상 머신 이미지를 재사용하고, 참조모델에 대한 몇 가지 입력만으로도 개발자가 원하는 형태로 가상 머신을 실제로 실행시켜주는 가상화 플랫폼 생성 및 실행 장치 및 그 방법을 제공하는 것이다.
본 발명의 일 실시예는, 마스터 가상 머신과 백업 가상 머신들 간의 토폴로지 정보인 가상화 플랫폼 참조모델 정보를 입력으로 하여 새로운 가상 머신 이미지를 빌드하는 단계; 상기 가상화 플랫폼 참조모델 정보를 입력으로 하여 가상화 플랫폼 실행 스크립트 프로그램을 생성하는 단계; 및 생성된 가상 머신 이미지와 상기 가상 플랫폼 실행 스크립트 프로그램을 이용하여 가상화 머신들을 실행하는 단계; 를 포함하는, 가상화 플랫폼 생성 및 실행 방법을 제공한다.
본 발명에 따르면, 가상화 플랫폼 생성 및 실행 장치 및 그 방법에 의해, 의 목적은 임베디드 장비에 탑재될 가상 머신 이미지를 사용하여, 1:1, N:N, N:M의 마스터 대비 백업 가상 머신들의 토폴로지 정보를 포함하는 가상 머신 참조 모델 재구성 정보 입력을 통해, 고신뢰 가상 머신 인스턴스들을 자동으로 생성 및 실행할 수 있게 도와줄 수 있다.
또한, 본 발명은 가상화 플랫폼 생성 및 실행 장치 및 그 방법에 의해 가상화 환경(virtualization environment)에서 사용할 수 있는 고신뢰 참조 모델의 프레임워크를 실현할 수 있다.
또한, 본 발명은 가상화 플랫폼 생성 및 실행 장치 및 그 방법에 의해 개발자가 기존 품질이 인증된 가상 머신 이미지를 재사용하고, 참조모델에 대한 몇 가지 입력만으로도 개발자가 원하는 형태로 가상 머신을 실제로 실행시켜줄 수 있다.
도 1은 종래 기술에 따른 가상화 서비스를 제공하는 방법을 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른 가상화 플랫폼 생성 및 실행 시스템을 나타낸 도면이다.
도 3은 본 발명의 일 실시예에 따른 가상화 플랫폼 생성 및 실행 방법을 나타낸 동작 흐름도이다.
도 4a와 도 4b는 본 발명의 일 실시예에 따른 가상화 플랫폼 참조모델 정보를 나타낸 도면이다.
도 5는 도 4a와 도 4b에 도시된 가상화 플랫폼 참조모델 정보를 이용하여, 본 발명의 일 실시예에 따라 생성한 가상 플랫폼의 구조를 나타낸 도면이다.
도 6은 본 발명의 일 실시예에 따른 외부와 가상 머신 사이의 통신을 위한 브릿지드 모델 중 네이티브 브릿지드 모델의 구조의 예시를 나타낸 도면이다.
도 7은 본 발명의 일 실시예에 따른 외부와 가상 머신 사이의 통신을 위한 브릿지드 모델 중 물리적 브릿지드 모델의 구조의 예시를 나타낸 도면이다.
도 8은 본 발명의 일 실시예에 따른 가상 머신 아키텍쳐를 위한 페일오버 모델 중 1:1 페일오버 모델의 구조의 예시를 나타낸 도면이다.
도 9는 본 발명의 일 실시예에 따른 가상 머신 아키텍쳐를 위한 페일오버 모델 중 N:N 페일오버 모델의 구조의 예시를 나타낸 도면이다.
도 10은 본 발명의 일 실시예에 따른 가상 머신 아키텍쳐를 위한 페일오버 모델 중 N:M 페일오버 모델의 구조의 예시를 나타낸 도면이다.
도 11은 본 발명의 일 실시예에 따른 AX 참조모델의 구조의 예시를 나타낸 도면이다.
도 12는 본 발명의 일 실시예에 따른 AY 참조모델의 구조의 예시를 나타낸 도면이다.
도 13은 본 발명의 일 실시예에 따른 AZ 참조모델의 구조의 예시를 나타낸 도면이다.
도 14는 본 발명의 일 실시예에 따른 BX 참조모델의 구조의 예시를 나타낸 도면이다.
도 15는 본 발명의 일 실시예에 따른 BY 참조모델의 구조의 예시를 나타낸 도면이다.
도 16은 본 발명의 일 실시예에 따른 BZ 참조모델의 구조의 예시를 나타낸 도면이다.
도 17은 도 3에 도시된 가상 머신 이미지를 빌드하는 단계(S301)의 일 예를 나타낸 동작 흐름도이다.
도 18은 도 17에 도시된 가상 플랫폼 응용 실행 스크립트 프로그램을 생성하고 저장하는 단계(S1707)의 일 예를 나타낸 동작 흐름도이다.
도 19는 도 17에 도시된 가상 플랫폼 시작 스크립트 프로그램을 생성하고 저장하는 단계(S1709)의 일 예를 나타낸 동작 흐름도이다.
도 20은 도 17에 도시된 가상 머신 이미지 빌드 정보 생성하고 저장하는 단계(S1711)의 일 예를 나타낸 동작 흐름도이다.
도 21은 도 17에 도시된 가상 머신 이미지를 빌드하는 단계(S1713)의 일 예를 나타낸 도면이다.
도 22는 도 3에 도시된 가상 플랫폼 실행 스크립트 프로그램을 빌드하는 단계(S303)의 일 예를 나타낸 동작 흐름도이다.
도 23은 가상 머신 별 섹션 모드 정보(icsm 테이블)의 예시를 나타낸 도면이다.
도 24는 가상 머신의 동적 네트워크 포트 복원 처리 과정의 일 예를 나타낸 동작 흐름도이다.
도 25는 도 3에 도시된 가상 플랫폼을 실행하는 단계(S305)의 일 예를 나타낸 동작 흐름도이다.
도 26은 본 발명의 일 실시예에 따라 만들어지는 2:4 AZ 타입의 참조모델 형태의 가상화 플랫폼을 나타낸 도면이다.
도 27은 도 2에 도시된 가상화 플랫폼 생성 및 실행 장치(100)의 일 예를 나타낸 블록도이다.
본 발명은 다양한 변환을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 본 발명의 효과 및 특징, 그리고 그것들을 달성하는 방법은 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능, 및 구성에 대한 상세한 설명은 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성되어 다양한 형태로 구현될 수 있다. 이하의 실시예에서, 제1, 제2 등의 용어는 한정적인 의미가 아니라 하나의 구성 요소를 다른 구성 요소와 구별하는 목적으로 사용되었다. 또한, 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함한다. 또한, 포함하다 또는 가지다 등의 용어는 명세서상에 기재된 특징, 또는 구성요소가 존재함을 의미하는 것이고, 하나 이상의 다른 특징들 또는 구성요소가 부가될 가능성을 미리 배제하는 것은 아니다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예들을 상세히 설명하기로 하며, 도면을 참조하여 설명할 때 동일하거나 대응하는 구성 요소는 동일한 도면 부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 종래 기술에 따른 가상화 서비스를 제공하는 방법을 나타낸 도면이다.
도 1을 참조하면, 기존에는 고신뢰성을 위해 마스터-백업 가상 머신을 갖는 가상화 시스템을 구축한다고 할 때, 개발자가 수고스럽게도 일일이 하나씩 가상 머신 이미지들을 만들고(S101) 실행시켜 주어야 한다(S103).
그리고, 가상 머신 이미지를 실행한 결과에 대해서, 예상 결과대로 실행되었는지 여부를 판단하며(S105), 예상결과대로 실행되었다면 가상 플랫폼을 실행하고 서비스를 제공하게 된다(S107). 그러나, 예상결과대로 실행되지 않았다면, 다시 가상 머신 이미지들을 만들고(S101) 실행하는 과정(S103)을 반복하게 된다.
도 2는 본 발명의 일 실시예에 따른 가상화 플랫폼 생성 및 실행 시스템을 나타낸 도면이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 가상화 플랫폼 생성 및 실행 장치(100)는 서비스 제공자(200)가 편집하여 완성한 가상화 플랫폼 참조모델을 사용하여 새로운 가상 머신 이미지를 생성한다. 또한, 가상 머신 이미지를 생성할 때, 기개발된 가상 머신 이미지를 피드백을 위해 재사용할 수 있다.
이때, 서비스 제공자(200)가 응용 서비스를 편집하여 새로운 가상 머신을 생성할 때 반영되도록 할 수 있다.
그리고, 가상화 플랫폼 참조모델을 기반으로 가상 머신들을 연결하고 실행하게 된다.
이후, 생성된 가상 머신 인스턴스들은 사용자(300)에게 제공되며, 추후 새로운 가상 머신 이미지를 생성할 때 피드백을 위하여 재사용될 수 있다.
도 3은 본 발명의 일 실시예에 따른 가상화 플랫폼 생성 및 실행 방법을 나타낸 동작 흐름도이다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 가상화 플랫폼 생성 및 실행 방법은, 가상화 플랫폼 참조모델 정보를 입력으로 하여 새로운 가상 머신 이미지를 빌드한다(S301).
이때, 가상 플랫폼 참조모델 정보와 기개발된 가상 머신 이미지를 입력으로 하여 새로운 가상 머신 이미지, 가상 플랫폼 시작 스크립트 프로그램 및 가상 플랫폼 응용 실행 스크립트 프로그램을 만들 수 있다.
또한, 본 발명의 일 실시예에 따른 가상화 플랫폼 생성 및 실행 방법은, 가상화 플랫폼 참조모델 정보를 입력으로 하여 가상화 플랫폼 실행 스크립트 프로그램을 생성한다(S303).
이때, 가상 플랫폼 참조모델 정보 즉, 마스터와 백업 가상 머신들 간의 1:1(1개의 마스터와 1개의 백업이 대응), N:N(N개의 마스터와 N개의 백업이 대응), 혹은 N:M(N개의 마스터와 M개의 백업이 대응) 토폴로지 정보를 입력으로 하여 가상화 플랫폼 실행 스크립트 프로그램을 생성할 수 있다.
또한, 본 발명의 일 실시예에 따른 가상화 플랫폼 생성 및 실행 방법은, 생성된 새로운 가상 머신 이미지와 가상 플랫폼 실행 스크립트 프로그램을 이용하여 시스템 쉘(인터프리터)에 의해 가상화 머신들을 실행시킨다(S305).
이때, 생성된 가상 플랫폼 실행 스크립트 프로그램을 실행하여 가상 플랫폼 참조모델 정보에 따라 가상화 플랫폼을 구성해주고, 해당 응용 서비스를 실행해줄 수 있다.
여기서, 가상 플랫폼 실행 스크립트 프로그램은 쉘 인터프리터에 의해서 해석되고 실행되고, 실행 결과는 참조모델과 같은 가상화 플랫폼을 만들어내는 것이다.
본 발명에서는 가상화 플랫폼으로 전체 6가지 참조모델을 제안한다. 외부와 가상 머신 사이의 통신을 위한 2가지 브릿지드 모델들과 가상 머신 아키텍쳐를 위한 3가지 페일오버 모델들의 조합에 의해 6가지 참조모델들을 구성할 수 있다.
여기서, 브릿지드 모델은 내부 가상 머신들과 피어 머신들 사이의 통신을 위한 가상화 플랫폼 참조모델이다. 그리고, 페일오버 모델은 마스터 가상 머신과 백업 가상 머신으로 구성된 환경에서, 마스터 가상 머신 고장 시 백업 가상 머신으로 페일오버 처리가 가능토록 하기 위한 참조모델이다.
이때, 브릿지드 모델은 네이티브 브릿지드 모델과 물리적 브릿지드 모델이 있다. 그리고, 페일오버 모델은 1m-to-1b 페일오버 모델(이하 1:1 페일오버 모델), Nm-to-Nb 페일오버 모델(이하, N:N 페일오버 모델) 및 Nm-to-Mb 페일오버 모델(이하, N:M 페일오버 모델)이 있다. 그리고, 합성 모델은 2 종의 브릿지드 모델과 3 종의 페일오버 모델의 조합으로 구성되며, A*(이하, A star라 칭함) 모델들과 B*(이하, B star라 칭함) 모델들 구성된다.
상세히, A star 모델들은 네이티브 브릿지드 모델과 3 종의 페일오버 모델의 합성모델들로, AX 참조모델, AY 참조모델 및 AZ 참조모델이 있다. AX 참조모델은 네이티브 브릿지드 모델과 1:1 페일오버 모델의 합성모델이고, AY 참조모델은 네이티브 브릿지드 모델과 N:N 페일오버 모델의 합성모델이며, AZ 참조모델은 네이티브 브릿지드 모델과 N:M 페일오버 모델의 합성모델이다.
또한, B star 모델들은 물리적 브릿지드 모델과 3 종의 페일오버 모델의 합성모델들로, BX 참조모델, BY 참조모델 및 BZ 참조모델이 있다. BX 참조모델은 물리적 브릿지드 모델과 1:1 페일오버 모델의 합성모델이고, BY 참조모델은 물리적 브릿지드 모델과 N:N 페일오버 모델의 합성모델이며, BZ 참조모델은 물리적 브릿지드 모델과 N:M 페일오버 모델의 합성모델이다.
이때, 본 발명의 일 실시예는 마스터와 백업을 각각 1개씩 갖는 1:1 페일오버 모델을 기본 단위로 구성할 수 있다. 1:1 페일오버 모델이 N개 존재하는 경우를 N:N 페일오버 모델로 한다. 또는, 응용 서비스별로 마스터, 백업 가상 머신들을 자유롭게 구성할 수 있도록 하는 N:M 페일오버 모델을 기본 페일오버 모델로 설정하여 사용할 수 있다.
참고로 페일오버 모델에서 응용 소프트웨어들간의 페일오버 처리 방법은 댜양한 방법을 사용할 수 있다. 예를 들면, 응용 소프트웨어 스냅샷 등을 이용한 페일오버 처리 방법, 응용들간의 체크포인트 데이터를 이용한 방법 등이 있다. 그러나, 본 발명은 이러한 응용 소프트웨어를 구성하는 가상 플랫폼 생성 기술에 관한 것이기 때문에, 이에 대한 구체적인 방법은 설명하지 않는다.
그리고, 기존의 프리미티브한 가상 머신 이미지 빌드처럼 동일하게 기존 생성 이미지를 재사용하여 새로운 이미지를 만들어 준다. 그러나, 기존의 방법과 달리 가상화 플랫폼 참조모델 정보 파일을 재사용할 수 있다. 예를 들어, 2:4 형태 지원이 가능한 가상 머신 이미지를 구축했었다면, 단순히 재구성 정보 파일을 업데이트 하는 것만으로도, 이것을 4:8, 5:5, 6:8 형태 등등으로 다양하게 확장하기가 용이하다.
또한, 새로운 가상 머신 이미지 실행 시, 시작 스크립트 프로그램과 응용 실행 스크립트 프로그램을 자동으로 실행시켜주기 때문에, 이 스크립트 프로그램만의 수정으로도 가상 머신을 특정 응용 서비스에 특화화 하여 실행시킬 수 있다.
여기서, 시작 스크립트 프로그램은 가상 머신의 속성 설정을 통해 특수 목적의 가상 머신으로 실행할 수 있도록 설정해주고, 응용 실행 스크립트 프로그램은 가상 머신 시작 시, 특수 목적 응용 서비스를 실행해주는 역할한다.
그리고, 새로운 가상 머신 이미지를 생성할 때, 도커 가상화 머신 생성 및 실행 기능을 사용한다. 여기서, 도커(Docker)는 미국의 'Docker'사에서 오픈 소스 소프트웨어로 개발을 진행하는 ‘리눅스 컨테이너’ 관리 도구의 이름으로, 컨테이너(가상 머신)에 할당된 디스크 이미지(가상 머신 이미지)를 간편하게 관리할 수 있게 한다. 또한, 이미 응용 서비스가 설치된 가상 머신 이미지를 내려 받아 이용할 수도 있고, 새로운 이미지를 만들어 공개할 수도 있도록 도와줄 수 있는 도구이다.
도커 도구에는 가상 머신 이미지를 생성하는 'docker build' 기능과, 생성된 도커 가상 머신 이미지를 실행해주는 'docker run' 기능, 기타 도커 가상 머신 이미지를 레포지토리(repository)에 저장하고 관리할 수 있는 기본 기능들을 제공하고 있다. 그러나, 이 방법은 고신뢰의 가상화 시스템 참조 모델과 같은 것들이 없이 단순히 가상 머신들만 생성, 실행 또는 재사용한다.
이때, 기존 도커 가상 머신 방법과는 다르게, A star 참조모델들 및 B star 참조모델들 등의 미리 증명된 고신뢰의 가상화 시스템 참조모델들을 재사용하여, 고품질의 가상화 시스템 구축할 수 있다. 이는, 가상화 시스템 구축 시 가상 머신 생성 도구를 사용하여 빠른 시간 내에 고품질의 가상화 시스템을 생산할 수 있게 하기 위함이다.
도 4a와 도 4b는 본 발명의 일 실시예에 따른 가상화 플랫폼 참조모델 정보를 나타낸 도면이다.
도 4a와 도 4b를 참조하면, 본 발명의 일 실시예에 따른 가상화 플랫폼 참조모델 정보는 다음의 4개 파트를 포함할 수 있다.
여기서, 'COMMON' 파트에서는 가상화 플랫폼의 실행 디렉토리, 생성날짜, 생성버전 등의 정보를 저장한다.
그리고, 'HOST_NETWORK_CONFIG' 파트에서는 가상화 플랫폼의 가상화 호스트 엔진 즉, 가상화 하이퍼바이저에서 필요한 네트워크 관련 정보를 저장한다. 도 4a의 예에서는 호스트 IP address로 '192.168.0.22'로 설정하였고, 가상 머신 브릿지는 이름을 'docker0'로 하고 IP address로 '192.168.7.1'을 설정하였다. 그리고, 피어(Peer)에 있는 클라이언트 장치들과의 통신을 위해 gateway는 '192.168.0.254'로, 이더넷 장치로는 'p1p1'을 사용하고 있다.
나아가, 'VM_REFERENCE_MODEL' 파트에서는 가상화 플랫폼 실행 스크립트 프로그램 생성 단계에서 필요한 가상화 플랫폼의 참조모델 프레임워크에 관한 정보를 갖고 있다. 도 4a의 예에서는 브릿지드 모델로 'A' 타입을 설정하였고, 페일오버(failover) 모델로는 'Z' 타입으로 설정되어 있다.
참조모델 프레임워크에 관련하여 추후 자세히 설명하겠지만, 코멘트(vm_comment) 정보에서 보듯이 네이티브 브릿지드 모델과 n:m 페일오버 모델로 합성된 가상 머신 플랫폼 구성을 위한 정보로 설정되어 있다. 생성될 가상 머신 수는 3개이고, 가상 머신의 기본 이름은 'n2mcse' 이고, 3개의 가상 머신에는 실행 시, 각각 'n2mcse-1', 'n2mcse-2', 'n2mcse-3' 형태로 명명될 수 있다. 그리고, 가상 머신의 기본 IP address는 '192.168.7.*'이고, 여기에서 *는 가상 머신 실행 시, 시작 어드레스 정보(vm_start_addr)인 '12'를 이용하여 순서대로 3개의 가상 머신들에 각각 설정한다.
또한, 마스터와 백업 가상 머신들 사이에는 클러스터 네트워크 형태로 상호 통신이 가능한데, 이러한 정보를 설정하기 위해 본 예에서는 'tipc' 네트워크 프레임워크를 사용하였다. 이 'tipc'는 리눅스 바닐라 커널의 기본 모듈(디바이스 드라이버)로 등록되어 있어 누구나 사용할 수 있다. 가상 머신들간의 클러스터 통신을 위해서 발명의 tipc 말고, 클러스터 통신이 가능한 다른 것을 사용해도 된다. 단, 고가용 참조모델이 되기 위해서는 가상 머신들간의 클러스터 통신은 반드시 가능해야 한다.
본 예에서는 생성된 가상 머신들의 클러스터 수는 1개이며, 클러스터 통신을 위한 네트워크 아이디는 '1234'이고, 존(zone)과 클러스터 정보는 '1.3'이고, 클러스터 노드의 시작값은 '5'이다. 여기서, 가상 머신이 3개 생성되어야 하므로, 가상 머신 실행 시 생성 순서대로 가상 머신들에 각각 클러스터 노드가 '1.3.5', '1.3.6' 및 '1.3.7'의 형태로 설정될 수 있다.
마지막으로, 'VM_BUILD_CONFIG' 파트에서는 새로운 가상 머신 이미지 빌드 단계에서 사용하는 정보들로 구성되어 있다. 도 4b의 예에서 새로운 가상 머신 이미지를 생성할 때 필요한 기존 가상 머신 이미지 이름은 'n2mcse-1-160816:latest'이고, 이미지 빌드 디렉토리는 '/root/n2mcse'이다. 그리고, 새로운 가상 머신 이미지에서 사용할 공유 디렉토리로는 '/root/cse/cse-build/work'로 설정되어 있다. 또한, 작업 디렉토리는 가상화 하이퍼바이저에서 사용하기 위한 '/root/cse/cse-build/work'와 가상 머신에서 사용하기 위한 '/work' 디렉토리 정보로 구성되어 있다. 실행 디렉토리는 가상화 하이퍼바이저에서 사용하기 위한 '/root/cse/cse-build/work/run' 디렉토리와 가상 머신에서 사용하기 위한 '/work/run' 디렉토리 정보로 각각 구성되어 있다.
도 5는 도 4a와 도 4b에 도시된 가상화 플랫폼 참조모델 정보를 이용하여, 본 발명의 일 실시예에 따라 생성한 가상 플랫폼의 구조를 나타낸 도면이다.
도 4a, 도 4b 및 도 5를 참조하면, 도 4a와 도 4b에 도시된 가상화 플랫폼 참조모델 정보를 이용한 도 5의 가상 플랫폼은, N:M 마스터-백업들 간의 페일오버 가상 머신들이 네이티브 브릿지와 상호 연결되며, 가상 머신들의 응용들이 서비스를 제공할 수 있다. 그리고, 가상 머신들간의 클러스터 네트워크는 '1.3' 클러스터로 설정되어 통신한다.
도 6은 본 발명의 일 실시예에 따른 외부와 가상 머신 사이의 통신을 위한 브릿지드 모델 중 네이티브 브릿지드 모델의 구조의 예시를 나타낸 도면이다.
도 6을 참조하면, 브릿지드 모델 중 네이티브 브릿지드 모델은 가상의 소프트웨어 장치(6a)를 설치하여 물리적 네트워크 브릿지 장치처럼 사용할 수 있게 한다. 이 경우, 이더넷 장치(6b)와 대등하게 연결되어 외부와 통신을 할 수 있다.
즉, 소프트웨어 브릿지(6a)에 설정된 IP address 범주와 이더넷 장치(6b)에 설정된 IP 어드레스 범주는 다르게 설정될 수 있다. 그리고, 소프트웨어 브릿지(6a)는 가상 머신들의 게이트웨이로 사용될 수 있다.
이하, 네이티브 브릿지드 모델을 A 타입 브릿지드 모델로 명명한다.
도 7은 본 발명의 일 실시예에 따른 외부와 가상 머신 사이의 통신을 위한 브릿지드 모델 중 물리적 브릿지드 모델의 구조의 예시를 나타낸 도면이다.
도 7을 참조하면, 브릿지드 모델 중 물리적 브릿지드 모델은 마치 소프트웨어 브릿지(7a) 내에 이더넷 장치(7b)를 직접 품고 있는 듯한 형태로, 소프트웨어 브릿지(7a)가 바로 이더넷 장치(7b)인 것처럼 동작되도록 한다.
예를 들어, 이더넷 장치(7b)에 설정된 IP 어드레스가 소프트웨어 브릿지(7a)에 설정된 어드레스와 동일하고, 가상 머신들의 게이트웨이 어드레스 정보는 이더넷 장치(7b)에 연결된 게이트웨이를 직접 사용할 수 있다.
이하, 물리적 브릿지드 모델을 B 타입 브릿지드 모델로 명명한다.
도 8은 본 발명의 일 실시예에 따른 가상 머신 아키텍쳐를 위한 페일오버 모델 중 1:1 페일오버 모델의 구조의 예시를 나타낸 도면이다.
도 8을 참조하면, 페일오버 모델 중 1:1(1m-to-1b) 페일오버 모델은, 마스터 1개와 백업 1개로 구성된 가장 단순 형태의 페일오버 처리 모델이다. 이는, 1개의 클러스터와 2개의 노드로 구성되어있다. 그리고, tipc를 통해 마스터, 백업 가상 머신들 간에 하나의 클러스터로 구성되어 상호 통신이 가능토록 만들어져 있다.
이하, 1:1 페일오버 모델을 X 타입 페일오버 모델로 명명한다.
도 9는 본 발명의 일 실시예에 따른 가상 머신 아키텍쳐를 위한 페일오버 모델 중 N:N 페일오버 모델의 구조의 예시를 나타낸 도면이다.
도 9를 참조하면, 페일오버 모델 중 N:N(Nm-to-Nb) 페일오버 모델은, N개의 tipc 클러스터에 의해, 1:1 페일오버 가상 머신들이 상호 분리되어 운영되고 있는 구조를 갖는다.
특히, 도 9에 도시된 모델은, 1:1 클러스터를 2개 갖고 있는 2:2 페일오버 모델이다. 따라서, 클러스터 번호도 도 9에 도시된 바와 같이, '1.3' 및 '1.4'와 같이 서로 다르게 설정되어 있다.
이하, N:N 페일오버 모델을 Y 타입 페일오버 모델로 명명한다.
도 10은 본 발명의 일 실시예에 따른 가상 머신 아키텍쳐를 위한 페일오버 모델 중 N:M 페일오버 모델의 구조의 예시를 나타낸 도면이다.
도 10을 참조하면, 페일오버 모델 중 N:M(Nm-to-Mb) 페일오버 모델은, 응용 서비스(프로세스)별로 마스터 1개와 백업 N개로 구성시킬 수 있는 구조를 갖는다. 이는, 가상 플랫폼을 자동으로 생성시키는 도구 관점에서 보면, 하나의 동일 가상 클러스터 범주 내에 사실상 임의의 K개 가상 머신들을 생성하는 단순한 형태의 가상화 플랫폼 구조를 갖는다.
특히, 도 10에 도시된 모델은, 1개의 클러스터에 3개의 가상 머신을 갖고 있는 2:4 페일오버 모델이다.
이하, N:M 페일오버 모델을 Z타입 페일오버 모델로 명명한다.
도 11은 본 발명의 일 실시예에 따른 AX 참조모델의 구조의 예시를 나타낸 도면이다.
도 11을 참조하면, AX 참조모델은 도 6에 도시된 A타입 브릿지드 모델과 도 8에 도시된 X타입 페일오버 모델의 결합으로 구성된다.
도 12는 본 발명의 일 실시예에 따른 AY 참조모델의 구조의 예시를 나타낸 도면이다.
도 12를 참조하면, AY 참조모델은 도 6에 도시된 A타입 브릿지드 모델과 도 9에 도시된 Y타입 페일오버 모델의 결합으로 구성된다.
도 13은 본 발명의 일 실시예에 따른 AZ 참조모델의 구조의 예시를 나타낸 도면이다.
도 13을 참조하면, AZ 참조모델은 도 6에 도시된 A타입 브릿지드 모델과 도 10에 도시된 Z타입 페일오버 모델의 결합으로 구성된다.
도 14는 본 발명의 일 실시예에 따른 BX 참조모델의 구조의 예시를 나타낸 도면이다.
도 14를 참조하면, BX 참조모델은 도 7에 도시된 B타입 브릿지드 모델과 도 8에 도시된 X타입 페일오버 모델의 결합으로 구성된다.
도 15는 본 발명의 일 실시예에 따른 BY 참조모델의 구조의 예시를 나타낸 도면이다.
도 15를 참조하면, BY 참조모델은 도 7에 도시된 B타입 브릿지드 모델과 도 9에 도시된 Y타입 페일오버 모델의 결합으로 구성된다.
도 16은 본 발명의 일 실시예에 따른 BZ 참조모델의 구조의 예시를 나타낸 도면이다.
도 16을 참조하면, BZ 참조모델은 도 7에 도시된 B타입 브릿지드 모델과 도 10에 도시된 Z타입 페일오버 모델의 결합으로 구성된다.
도 17은 도 3에 도시된 가상 머신 이미지를 빌드하는 단계(S301)의 일 예를 나타낸 동작 흐름도이다.
도 17을 참조하면, 도 3에 도시된 가상 머신 이미지를 빌드하는 단계(S301)는, 가상화 플랫폼 참조모델 정보로부터 참조모델 구성정보를 읽는다(S1701).
또한, 도 3에 도시된 가상 머신 이미지를 빌드하는 단계(S301)는, 가상 머신수(vm_node_num)만큼 가상 머신 이미지를 생성하기 위하여, count 변수를 0으로 설정한다(S1703).
또한, 도 3에 도시된 가상 머신 이미지를 빌드하는 단계(S301)는, 참조모델 구성정보 중 builddir 값을 이용하여 빌드 디렉토리 생성한다(S1705).
또한, 도 3에 도시된 가상 머신 이미지를 빌드하는 단계(S301)는, 가상 머신 응용 실행 템플릿 프로그램을 입력하여 가상 플랫폼 응용 실행 스크립트 프로그램을 생성하고 빌드 디렉토리에 저장한다(S1707).
또한, 도 3에 도시된 가상 머신 이미지를 빌드하는 단계(S301)는, 가상 플랫폼 시작 템플릿 프로그램을 입력하여 가상 플랫폼 시작 스크립트 프로그램을 생성하고 빌드 디렉토리에 저장한다(S1709).
또한, 도 3에 도시된 가상 머신 이미지를 빌드하는 단계(S301)는, 가상 머신 이미지 빌드 정보 템플릿을 사용하여 가상 머신 이미지 빌드 정보를 생성하고 빌드 디렉토리에 저장한다(S1711).
또한, 도 3에 도시된 가상 머신 이미지를 빌드하는 단계(S301)는, 가상 머신 이미지 빌드 정보와 기 개발된 가상 머신 이미지를 이용하여 가상 머신 이미지를 빌드한다(S1713).
또한, 도 3에 도시된 가상 머신 이미지를 빌드하는 단계(S301)는, count 변수에 1을 더한다(S1715)
또한, 도 3에 도시된 가상 머신 이미지를 빌드하는 단계(S301)는, count 변수의 값이 가상 머신수(vm_node_num)보다 작은지 판단한다(S1717).
단계(S1717)의 판단 결과, count의 변수 값이 가상 머신수보다 작은 경우, 아직 원하는 가상 머신수만큼 가상 머신 이미지를 생성하지 않았으므로 단계(S1705)로 돌아간다.
단계(S1717)의 판단 결과, count의 변수 값이 가상 머신수보다 작지 않은 경우, 이미 원하는 가상 머신 이미지를 생성하였으므로 이후 단계로 진행한다.
도 18은 도 17에 도시된 가상 플랫폼 응용 실행 스크립트 프로그램을 생성하고 저장하는 단계(S1707)의 일 예를 나타낸 동작 흐름도이다.
도 18을 참조하면, 도 17에 도시된 가상 플랫폼 응용 실행 스크립트 프로그램을 생성하고 저장하는 단계(S1707)는, 가상화 플랫폼 참조모델 정보로부터 builddir, count, vm_base_name, sharedrundir과 같은 가상 머신 응용 실행 스크립트 생성과 관련된 관련 전역 변수 값들을 읽는다(S1801).
또한, 도 17에 도시된 가상 플랫폼 응용 실행 스크립트 프로그램을 생성하고 저장하는 단계(S1707)는, 공통 로컬 변수들을 초기화한다(S1803).
이때, 하기 수도코드 1과 같이 변수 num은 count+1로 하고, 변수 name은 vm_base_name과 num을 “-“로 연결한다. 예컨대, count 변수가 1이고 vm_base_name 변수가 “aaa”인 경우에는, num 변수의 값은 2가 되고, name 변수의 값은 “aaa-2”가 된다.
[수도코드 1]
num = ${count} + 1
name = “${vm_base_name}-${num}”
또한, 도 17에 도시된 가상 플랫폼 응용 실행 스크립트 프로그램을 생성하고 저장하는 단계(S1707)는, 스크립트 프로그램을 저장하고 실행할 sharedrundir 디렉토리를 생성한다(S1805)
또한, 도 17에 도시된 가상 플랫폼 응용 실행 스크립트 프로그램을 생성하고 저장하는 단계(S1707)는, 하기 수도코드 2와 같이 bash 스크립트 프로그램으로 되어 있는 가상 플랫폼 응용 실행 템플릿 프로그램을 사용하여, sharedrundir 디렉토리에 가상 플랫폼 응용 실행 스크립트 프로그램을 생성한다(S1807).
[수도코드 2]
#!/bin/bash
echo “Run $0…”
#Append your apps
echo “Done.”
이때, 상기 수도코드 2의 #Append your apps 부분에 응용 서비스들을 등록하면, 빌드될 가상 머신의 초기 실행 시 해당 응용들을 실행된다.
여기서, 생성될 파일이름은 하기 수도코드 3과 같이 가상 머신 기본 이름과 가상 머신 번호 정보를 이용하여 구성된다.
[수도코드 3]
run-app-${vm_base_name}-${num}.sh
예컨대, 가상 머신 기본 이름이 n2mcse이고, 가상 머신 번호가 1이면, 하기 [수도코드 4]와 같은 응용 실행 스크립트 프로그램을 만들 수 있다.
[수도코드 4]
run-app-n2mcse-1.sh
도 19는 도 17에 도시된 가상 플랫폼 시작 스크립트 프로그램을 생성하고 저장하는 단계(S1709)의 일 예를 나타낸 동작 흐름도이다.
도 19를 참조하면, 도 17에 도시된 가상 플랫폼 시작 스크립트 프로그램을 생성하고 저장하는 단계(S1709)는, count(가상 머신 카운트), vm_base_name(가상 머신 기본 이름), sharedrundir(공유 실행 디렉토리)와 같은 가상 머신 시작 스크립트 생성과 관련된 전역 변수값을 읽는다(S1901).
이때, 읽어오는 전역 변수는 다음의 변수들을 포함할 수 있다: creationdate, creationversion, vm_failover_model_type, envpath, timezone, vm_base_addr, vm_start_addr, netmask, bridgeaddr, vm_tipc_zone, vm_tipc_cluster, vm_tipc_start_noce, vm_tipc_netid, vm_tipc_ethdev, vm_base_name, rundir, sharedrundir.
또한, 도 17에 도시된 가상 플랫폼 시작 스크립트 프로그램을 생성하고 저장하는 단계(S1709)는, 가상 머신 번호(num), 가상 머신 이름(name), ip 주소(IPADDR)와 같은 공통 로컬 변수들을 초기화 한다(S1903).
이때, 공통 로컬 변수들을 초기화할 때, 하기 수도코드 5를 이용할 수 있다.
[수도코드 5]
num = ${count} + 1
name = “${vm_base_name} - ${num}”
NODE = ${vm_start_addr} + ${count}
IPADDR = “${vm_base_addr}.${NODE}”
또한, 도 17에 도시된 가상 플랫폼 시작 스크립트 프로그램을 생성하고 저장하는 단계(S1709)는, 페일오버 모델 타입(vm_failover_model_type)이 X 또는 Z 타입인지 판단한다(S1905). 즉, 가상 머신들간의 상호 통신은 tipc 클러스터 처리 기능에 의해 이루어지며, 페일오버 모델에 따라 클러스터가 다르게 구성된다.
단계(S1905)의 판단 결과, 페일오버 모델 타입이 X 혹은 Z 타입이 아닌 경우에는, 페일오버 모델 타입이 Y 타입인지 판단한다(S1907).
단계(S1905)의 판단 결과, 페일오버 모델 타입이 X 혹은 Z 타입인 경우에는, X 혹은 Z 타입 로컬 변수를 초기화한다(S1909).
여기서, X 혹은 Z 타입 tipcconfig 로컬 변수 초기화의 경우, 하기 수도코드 6과 같이 변수 값을 설정할 수 있다.
[수도코드 6]
vm_tipc_node=${vm_tipc_start_node}+${count}
tipcconfig=“-netid=${vm_tipc_netid}
-a=${vm_tipc_zone}.${vm_tipc_cluster}.${vm_tipc_node}
-be=${vm_tipc_ethdev}”
단계(S1907)의 판단 결과, 페일오버 모델 타입이 Y 타입인 경우에는, Y 타입 로컬 변수를 초기화한다(S1911).
여기서, Y 타입 tipcconfig 로컬 변수 초기화의 경우, 하기 수도코드 7과 같이 클러스터 수만큼 tipccluster 값을 증가 시키면서 구성할 수 있다. 즉, Y 타입의 페일오버 모델(N:N 모델)은 tipc 클러스터가 1:1 구성마다 하나씩 배정되도록 처리하여, tipc 클러스터가 N개 생성된다.
[수도코드 7]
tipczone = ${vm_tipc_zone}
couster_num = ${vm_node_num} / 2
tipccluster = ${vm_tipc_cluster} + ${i}
if ${count} % 2 == 0 {
tipcnode = ${vm_tipc_start_node}
}
else if ${count} % 2 == 1 {
tipcnode = ${vm_tipc_start_node} + 1
}
tipcconfig = “-netid=${vm_tipc_netid}
-a=${tipczone}.${tipccluster}.${tipcnode}
-be=${vm_tipc_ethdev}”
상기, 수도코드 7에서, i는 0에서부터 클러스터 개수까지 증가하는 숫자에 해당하여, 1:1 모델을 여러 개 생성하는 구성을 가지도록 한다.
또한, 도 17에 도시된 가상 플랫폼 시작 스크립트 프로그램을 생성하고 저장하는 단계(S1709)는, 단계(S1919) 혹은 단계(S1911)의 로컬 변수 초기화 이후 가상 플랫폼 시작 템플릿 프로그램을 사용하여, 하기 수도코드 8과 같은 템플릿 파일에서 변수들을 치환하여 builddir/name 폴더와 sharedrundir 폴더에 각각 스크립트 프로그램 파일을 생성한다(S1913).
[수도코드 8]
#!/bin/bash
echo “Run $0…”
export PATH=$PATH:${envpath}
echo “${timezone}” > /etc/timezone
dpkg -reconfigure -f noninteractive tzdata
/usr/sbin/sshd
ifconfig eth0 down
ifconfig eth0 ${IPADDR} netmask ${netmask} up
route add default gw ${bridgeaddr}
tipc -config ${tipcconfig}
${rundir}/runapp-${name}.sh
echo “Done.”
여기서, 수도코드 9와 같은 스크립트 프로그램이 'startup-${vm_base_name}-${num}.sh' 의 이름으로 생성될 수 있다. 예컨대, 가상 머신 기본 이름이 n2mcse이고, 가상 머신 번호가 1인 경우에는, 스크립트 프로그램 파일의 이름이 'startup-n2mcse-1.sh'이 된다.
[수도코드 9]
#!/bin/bash
echo “Run $0…”
export PATH=$PATH:/aqplus/bin:/work/node-v0.10.36-linux-x64/bin
echo “Asia/Seoul” > /etc/timezone
dpkg -reconfigure -f noninteractive tzdata
/usr/sbin/sshd
ifconfig eth0 down
ifconfig eth0 192.168.7.12 netmask 255.255.255.0 up
route add default gw 192.168.7.1
tipc -config -netid=1234 -a=1.3.5- be=eth;eth0
/root/cse/cse-build/work/run/runapp-n2mcse-1.sh
echo “Done.”
단계(S1907)의 판단 결과, 페일오버 모델 타입이 Y 타입이 아닌 경우에는, 가상 플랫폼 시작 스크립트의 생성 실패를 알리는 경고 메시지를 출력한다(S1915).
도 20은 도 17에 도시된 가상 머신 이미지 빌드 정보 생성하고 저장하는 단계(S1711)의 일 예를 나타낸 동작 흐름도이다.
도 20을 참조하면, 도 17에 도시된 가상 머신 이미지 빌드 정보 생성하고 저장하는 단계(S1711)는, 가상화 플랫폼 참조모델 정보로부터 가상 머신 이미지 빌드 관련 전역 변수값을 읽는다(S2001).
여기서 읽어오는 전역 변수값들은, baseimagename, maintainer, envpath, workdir, rundir, builddir, sshpasswd, vm_base_name, count 등을 포함한다.
또한, 도 17에 도시된 가상 머신 이미지 빌드 정보 생성하고 저장하는 단계(S1711)는, 공통 로컬 변수를 초기화한다(S2003).
여기서 초기화하는 변수는 num, name을 포함하며, 하기 수도코드 10과 같이 초기화할 수 있다.
[수도코드 10]
num = ${count} +1
name = “${vm_base_name}-${num}”
또한, 도 17에 도시된 가상 머신 이미지 빌드 정보 생성하고 저장하는 단계(S1711)는, 기개발 가상 머신 이미지 빌드 정보 템플릿를 기본으로 하여 변수들을 치환하여 Dockerfile 파일을 생성한다(S2005).
여기서, 변수들을 치환하여 가상 머신 환경 변수, sshd 설치, startup 스크립트 프로그램 최초 실행 등 관련 정보를 설정할 수 있다. 이때, 수도코드 11과 같은 가상 머신 이미지 빌드 정보 템플릿을 이용할 수 있다.
[수도코드 11]
FROM ${baseimagename}
MAINTAINER ${maintainer}
ENV PATH=$PATH:${envpath}
RUN apt-get install -y openssh-server && mkdir -p /var/run/sshd && echo '${sshpasswd}' | chpasswd
EXPOSE 22
WORKDIR ${workdir}
CMD bash -C '${rundir}/startup-${name}.sh';'bash'
여기서, 새로운 가상 머신 처음 실행 시, 설정된 재구성 정보를 토대로 가상 머신을 설정해준다. 그리고, 상기 수도코드 11의 마지막 줄은 ${rundir} 아래의 startup-${name}.sh 스크립트를 실행시켜주는 것이다.
하기 수도코드 12는 상기 수도코드 11을 이용하여 변수들을 치환하여 만들어진 가상 머신 이미지 빌드 정보 파일로, /root/n2mcse/n2mcse-1/Dockerfile로 저장될 수 있다. 그리고 하기 수도코드 12와 같은 프로그램에 의해, 응용서비스에 특화된 가상 머신이 만들어진다.
[수도코드 12]
FROM n2mcse-1-160816:latest
MAINTAINER K.Y.Lee<kylee@etri.re.kr>
ENV PATH=$PATH:/aqplus/bin:/work/node-v0.10.36-linux-x64/bin
RUN apt-get install -y openssh-server && mkdir -p /var/run/sshd && echo 'root:test1234' | chpasswd
EXPOSE 22
WORKDIR /work
CMD bash -C 'work/run/startup-n2mcse-1.sh';'bash'
도 21은 도 17에 도시된 가상 머신 이미지를 빌드하는 단계(S1713)의 일 예를 나타낸 도면이다.
도 21을 참조하면, 도 17에 도시된 가상 머신 이미지를 빌드하는 단계(S1713)는, 기생성된 가상 머신 이미지 빌드 정보(21a)를 이용하여 가상 머신 이미지를 생성할 수 있다. 여기서, 가상 머신 이미지 빌드 정보(21b)는 /root/n2mcse/n2mcse-1/Dockerfile(21c)와 같은 파일에 해당한다.
또한, 상기 가상 머신 이미지 빌드 정보(21b 및 21c)는 기개발된 가상 머신 이미지(21a)의 정보를 포함한다. 여기서, 상기 가상 머신 이미지는(21a)는 n2mcse-1-160816:latest에 해당한다.
그리하여, 상기 가상 머신 이미지 빌드 정보(21b 및 21c)를 이용하여 새로이 생성될 가상 머신 이미지(21d)는 /root/n2mcse/n2mcse-1-160930:latest에 해당한다.
상세히, 가상 머신을 이미지를 빌드하는 구체적인 처리 방법은 다음과 같다.
일단, creationdate와 creationversion 값을 읽어온다. 그리고 VM_NAME과 VM_IMG_NAME 변수를 VM_NAME=”${vm_base_name}-${num}”과 VM_IMG_NAME=“${VM_NAME}-${creationdate}:${creationversion}”으로 초기화한다. 그리고, “docker build -t ${VM_IMG_NAME} ${builddir}/${name}”를 runcmd 메모리로 읽는다. 그리고, runcmd 에서 ${VM_IMG_NAME} 변수를 찾아, 해당 변수 값으로 치환한다. 그리고, runcmd 에서 ${name} 변수를 찾아, 해당 변수 값으로 치환한다. 마지막으로, ${builddir}로 디렉토리 변경 후, ${runcmd} 명령어를 실행한다.
즉, docker build 커맨드가 실행되어, VM_IMG_NAME에 해당하는 새로운 가상 머신 이미지가 생성된다.
도 22는 도 3에 도시된 가상 플랫폼 실행 스크립트 프로그램을 빌드하는 단계(S303)의 일 예를 나타낸 동작 흐름도이다.
도커 가상화 기술을 적용하기 위해서는 기존 도커 서비스 중지, tipc 디바이스 드라이버 설치, 사용자 모드 설치, 패스워드 허용, 도커 서비스 시작 등을 처리하는 스크립트 프로그램이 필요하다.
도 22를 참조하면, 도 3에 도시된 가상 플랫폼 실행 스크립트 프로그램을 빌드하는 단계(S303)는, 가상화 플랫폼 참조모델에서 구성정보를 읽는다(S2201).
또한, 도 3에 도시된 가상 플랫폼 실행 스크립트 프로그램을 빌드하는 단계(S303)는, 읽어온 참조모델 타입이 제공되는 참조모델 타입인지 판단한다(S2203).
여기서, 제공되는 참조모델 타입은 AX, AY, AZ, BX, BY 및 BZ의 6가지이다.
단계(S2203)의 판단 결과, 제공하지 않는 참조모델의 타입인 경우에는, 스크립트 생성 실패 경고 메시지를 출력하고 종료한다(S2205).
단계(S2203)의 판단 결과, 제공하는 참조모델 타입인 경우에는, 가상화 서비스를 초기화하는 스크립트 프로그램을 생성한다(S2207).
여기서, 가상화 서비스를 초기화하는 스크립트 프로그램은 하기 수도코드 13과 같이 구성될 수 있다.
[수도코드 13]
# initialize bridge
servide docker stop
modprobe tipc
usermod -aG docker root
gpasswd -a root docker
service docker start &
그리고, 생성된 가상화 서비스를 초기화하는 스크립트 프로그램은 ${builddir}/run-${vm_base_name}.sh 파일 위치에 복사한다. 예컨대, builddir가 /root/n2mcse이고, vm_base_name이 n2mcse라면, /root/n2mcse/run-n2mcse.sh 파일 이름으로 생성될 수 있다.
또한, 도 3에 도시된 가상 플랫폼 실행 스크립트 프로그램을 빌드하는 단계(S303)는, 브릿지 모델의 타입이 A 타입인지 B 타입인지 판단한다(S2209).
단계(S2209)의 판단 결과, 브릿지 모델의 타입이 A 타입인 경우에는, A 타입 브릿지 생성 템플릿 프로그램을 사용하여 브릿지 설정 스크립트 프로그램을 만들고, 가상화 플랫폼 실행 스크립트 프로그램에 추가한다(S2211).
여기서, A 타입 브릿지 모델의 생성 템플릿 스크립트 프로그램은 하기 수도코드 14와 같이 bridgename과 bridgeaddr 정보를 이용하여, 가상 머신 호스트의 이더넷 하드웨어와 가상화 플랫폼의 소프트웨어 브릿지를 연결해주는 프로그램이다. 브릿지를 bridgename으로 새롭게 추가(brctl addbr)하고, 여기에 ip addr add로 bridgeaddr와 bridgename을 설정한다. down되었던 ip link를 다시 up 해준다. 마지막 파트에서는 브릿지와 도커 가상화 서비스를 연결하기 위해 도커 가상화 서비스를 재시작 해준다. 그리고, 이렇게 만들어진 프로그램을 가상화 플랫폼 실행 스크립트 프로그램 파일에 추가(append)한다.
[수도코드 14]
# set up bridge name and address
ip link set dev ${bridgename} down
brctl delbr ${bridgename}
brctl addbr ${bridgename}
ip addr add ${bridgeaddr} dev ${bridgename}
ip link set dev ${bridgename} up
service docker restart
예컨대, 가상화 플랫폼 실행 스크립트 프로그램 파일은 /root/n2mcse/run-n2mcse.sh 파일이고, 하기 수도코드 15와 같은 프로그램이 가상화 플랫폼 실행 스크립트 파일에 추가될 수 있다.
[수도코드 15]
# set up bridge name and address
ip link set dev docker0 down
brctl delbr docker0
brctl addbr docker0
ip addr add 192.168.7.1 dev docker0
ip link set dev docker0 up
service docker restart
단계(S2209)의 판단 결과, 브릿지 모델의 타입이 B 타입인 경우에는, B 타입 브릿지 생성 템플릿 프로그램을 사용하여 브릿지 설정 스크립트 프로그램을 만들고, 가상화 플랫폼 실행 스크립트 프로그램에 추가한다(S2213).
여기서, B 타입 브릿지 모델의 생성 템플릿 스크립트 프로그램은 하기 수도코드 16과 같이 bridgename, bridgeaddr 및 ethdev1 정보를 이용하여, 가상 머신 호스트의 이더넷 하드웨어와 가상화 플랫폼의 소프트웨어 브릿지를 연결해주는 프로그램이다. A 타입과 동일하게 브릿지를 bridgename으로 새롭게 추가하고, 여기에 bridgeaddr와 bridgename을 설정한다. down되었던 ip link를 다시 up 해준다. 브릿지와 도커 가상화 서비스를 연결하기위해 도커 가상화 서비스를 재시작해준다. 단, A 타입과는 다르게 템플릿 파일의 마지막 줄에서 하드웨어 이더넷 장치와 bridgename의 인터페이스를 추가하여 연결해준다. 이것은 하드웨어 이더넷 장치를 그대로 도커 가상화 플랫폼의 소프트웨어 브릿지와 그대로 연결하는 효과를 준다. 그리고, 이렇게 만들어진 프로그램을 가상화 플랫폼 실행 스크립트 프로그램 파일에 추가될 수 있다.
[수도코드 16]
# set up bridge name and address
ip link set dev ${bridgename} down
brctl delbr ${bridgename}
brctl addbr ${bridgename}
ip addr add ${bridgeaddr} dev ${bridgename}
ip link set dev ${bridgename} up
service docker restart
# cfeate B type(physical) bridge
brctl addif ${bridgename} ${ethdev1}
예컨대, 가상화 플랫폼 실행 스크립트 프로그램 파일은 /root/n2mcse/run-n2mcse.sh 파일이고, 하기 수도코드 17과 같은 프로그램이 가상화 플랫폼 실행 스크립트 파일에 추가될 수 있다.
[수도코드 17]
# set up bridge name and address
ip link set dev docker0 down
brctl delbr docker0
brctl addbr docker0
ip addr add 192.168.7.1 dev docker0
ip link set dev docker0 up
service docker restart
# cfeate B type(physical) bridge
brctl addif docker0 p1p1
또한, 도 3에 도시된 가상 플랫폼 실행 스크립트 프로그램을 빌드하는 단계(S303)는, 가상 머신 수만큼 반복 처리를 위한 카운터 변수 count를 0으로 설정한다(S2215).
또한, 도 3에 도시된 가상 플랫폼 실행 스크립트 프로그램을 빌드하는 단계(S303)는, 가상 머신 실행 템플릿 프로그램을 사용하여 가상 머신 실행 스크립트를 가상화 플랫폼 실행 스크립트 프로그램에 추가한다(S2217).
여기서, 하기 수도코드 18과 같은 가상 머신 실행 템플릿 프로그램을 사용하여 가상 머신 스크립트를 가상화 플랫폼 실행 스크립트 프로그램에 추가할 수 있다.
[수도코드 18]
# run virtual machines: ${VM_NAME}
docker run -privileged -it -name ${VM_NAME} -volume ${shareddir}:${workdir} -d ${VM_IMG_NAME}
sleep 0.5
이때, 도커에서 docker run 기능은 shareddir과 workdir를 공유해서 사용하고, 가상 머신 이미지를 이용하여, VM_NAME으로 가상 머신을 생성하고 실행시켜주는 기능을 수행한다. 즉, VM_NAME, shareddir, workdir, VM_IMG_NAME를 이용하여 가상 머신 실행 스크립트 프로그램을 만들고 가상화 플랫폼 실행 스크립트 프로그램에 추가한다.
예컨대, 가상화 플랫폼 실행 스크립트 프로그램 파일은 /root/n2mcse/run-n2mcse.sh 파일이고, 하기 수도코드 19과 같은 프로그램이 가상화 플랫폼 실행 스크립트 파일에 추가될 수 있다.
[수도코드 19]
# run virtual machines: n2mcse-1
docker run -privileged -it -name n2mcse-1 -volume /root/cse/cse-build/work:/work -d n2mcse-1-160816:latest
sleep 0.5
또한, 도 3에 도시된 가상 플랫폼 실행 스크립트 프로그램을 빌드하는 단계(S303)는, count 변수의 값을 1 증가한다(S2219).
또한, 도 3에 도시된 가상 플랫폼 실행 스크립트 프로그램을 빌드하는 단계(S303)는, count 변수가 가상 머신수보다 작은지 판단한다(S2221).
단계(S2221)의 판단 결과, count 변수가 가상 머신수보다 작은 경우, 단계(S2217)로 돌아간다.
단계(S2221)의 판단 결과, count 변수가 가상 머신수보다 작지 않은 경우, 브릿지 모델이 A 타입인지 판단한다(S2223).
단계(S2223)의 판단 결과, 브릿지 모델의 타입이 A 타입인 경우에는, 가상 통신 포트 복원 스크립트를 가상화 플랫폼 실행 스크립트 프로그램에 추가한다(S2225). 이 단계는 가상 통신 포트 복원 데몬을 실행시켜주기 위한 것으로, 템플릿 프로그램에서는 ksdriptables라는 이름으로 구현될 수 있다. 하기 수도코드 20은 가상 통신 포트 복원 스크립트의 예시를 나타낸다.
[수도코드 20]
# run recovery iptables
iptables-restore < ${vm_recovery_iptables}
sleep 1
/aqplus/bin/ksdriptables -d 0 &
sleep 1
상기 수도코드 20는, 가상화 호스트와 가상 머신들 사이의 포트 통신을 연결하기 위하여, iptables-restore < ${vm_recovery_iptables} 명령어를 통해 iptables를 복원한다. 여기에서, 최포 iptables 규칙은 하기 수도코드 21과 같은 iptables-save 명령어를 사용하여 만들 수 있다. 그리고, 이것을 vm_recovery_iptables로 정의하여 사용한다.
[수도코드 21]
iptables-save > /aqplus/etc/192.168.0.22_iptables.rule
단계(S2223)의 판단 결과, 브릿지 모델의 타입이 A 타입이 아니거나 단계(S2225)를 거친 경우에는, 가상화 플랫폼 실행 스크립트 프로그램을 runon 폴더에 복사 한다(S2227).
도 23은 가상 머신 별 섹션 모드 정보(icsm 테이블)의 예시를 나타낸 도면이다.
도 24는 가상 머신의 동적 네트워크 포트 복원 처리 과정의 일 예를 나타낸 동작 흐름도이다.
가상 머신의 동적 네트워크 포트의 복원 프로그램은 도 22에 도시된 가상 통신 포트 복원 스크립트를 가상화 플랫폼 실행 스크립트 프로그램에 추가하는 단계(S2225)를 거쳐 실행될 수 있다. 이 프로그램은 A타입 브릿지드 참조모델에서 마스터 응용 서비스를 갖는 가상 머신의 포트를 외부의 사용자에게 자동으로 오픈해주는 프로그램이다.
도 23와 도 24를 참조하면, 가상 머신의 동적 네트워크 포트 복원 처리 과정은, 가상 머신별 섹션 모드 정보 테이블(icsm.tbl 파일)에 마스터 모드 변경이 있는지 판단한다(S2401).
단계(S2401)의 판단 결과, 가상 머신별 섹션 모드 정보 테이블에 변경이 있는 경우에는, iptable-restore 명령어를 사용하여 초기 iptable을 복원한다(S2403).
또한, 가상 머신의 동적 네트워크 포트 복원 처리 과정은, 가상 머신별 섹션 모드 정보 테이블에서, 모든 master 모드를 갖는 ipaddr에 대해 port 번호를 구하여 iptable에 추가한다. 이때, iptables -t nat -A DOCKER 커맨드를 사용하여 등록한다(S2405).
예컨대, 하기 수도코드 22는 ip주소 192.168.7.12에 포트 1234와 1337을 등록하는 예제이다.
[수도코드 22]
iptables -t nat -A DOCKER -p tcp -i $ETHDEV --dport 1234 -j DNAT --to 192.168.7.12:1234
iptables -t nat -A DOCKER -p tcp -i $ETHDEV --dport 1337 -j DNAT --to 192.168.7.12:1337
또한, 가상 머신의 동적 네트워크 포트 복원 처리 과정은, 1초 대기한다(S2407).
단계(S2401)의 판단 결과, 가상 머신별 섹션 모드 정보 테이블에 변경이 없는 경우에는, 단계(S2407)으로 진행하여 1초 대기한다.
또한, 가상 머신의 동적 네트워크 포트 복원 처리 과정은, 1초 대기 후 (S2407) 가상 머신의 동적 네트워크 포트 복원 데몬이 종료되었는지 판단한다(S2409).
단계(S2409)의 판단 결과, 복원 데몬이 종료된 경우, 가상 머신의 동적 네트워크 포트 복원 처리 과정은 종료된다.
단계(S2409)의 판단 결과, 복원 데몬이 종료되지 않은 경우에는, 단계(S2401)로 돌아가서 절차를 반복한다.
도 25는 도 3에 도시된 가상 플랫폼을 실행하는 단계(S305)의 일 예를 나타낸 동작 흐름도이다.
도 25를 참조하면, 도 3에 도시된 가상 플랫폼을 실행하는 단계(S305)는, 가상화 플랫폼 실행 스크립트 프로그램을 runon 폴더에서 검색한다(S2501).
또한, 도 3에 도시된 가상 플랫폼을 실행하는 단계(S305)는, 가상화 플랫폼 실행 스크립트 프로그램이 존재하는지 여부를 판단한다(S2503).
단계(S2503)의 판단 결과, 가상화 플랫폼 실행 스크립트 프로그램이 존재하지 않는 경우에는, 스크립트 실행 실패 경고 메시지를 출력하고 종료한다(S2505).
단계(S2503)의 판단 결과, 가상화 플랫폼 실행 스크립트 프로그램이 존재하는 경우에는, 운영체제의 쉘 인터프리터에서 가상화 플랫폼 실행 스크립트 프로그램을 실행한다(S2507).
이에 따라, 가상화 플랫폼 실행 스크립트 프로그램을 실행하게되면 도커 가상화 서비스 시작, 브릿지 생성, 가상 머신 실행 및 가상통신 포트 복원 데몬 등을 통해, 설정한 참조모델 기반의 가상화 플랫폼을 만들고, 가상 통신 서비스를 연결한 후, 사용자들에게 고품질의 가상 서비스를 제공할 수 있다.
도 26은 본 발명의 일 실시예에 따라 만들어지는 2:4 AZ 타입의 참조모델 형태의 가상화 플랫폼을 나타낸 도면이다.
도 26은 상기 발명의 설명에서 사용된 예시들로부터 만들어지는 가상화 플랫폼을 나타낸다. 이는, 마스터와 백업의 비율이 2:4인 AZ 타입의 참조모델 형태를 갖는다. 즉, A 타입 브릿지드 모델과 Z 타입 페일오버 모델의 합성모델이다.
여기서, 이더넷 장치(26a) p1p1은 ip address가 192.168.0.22이다. 그리고, 가상 통신 포트 복원 데몬(26b)은 192.168.0.22:1234 또는 192.168.0.22:1337로부터 192.168.7.12:1234, 192.168.7.13:1234, 192.168.7.14:1234, 192.168.7.12:1336, 192.168.7.13:1337 또는 192.168.7.14:1337로 동적 매핑 및 접근 처리를 한다. 그리고 브릿지(26c)는 이름이 docker0이고, ip address가 192.168.7.1이다.
또한, 3개의 가상 머신들(26e, 26f 및 26g)은 tipc cluster 1.3.*(26d)로 구성된다. 여기서, 각각의 가상 머신들(26e, 26f 및 26g)은 클러스터 노드와 ip address가 1.3.5(192.168.7.12), node 1.3.6(192.168.7.13) 및 node 1.3.7(192.7.14)이다.
도 27은 도 2에 도시된 가상화 플랫폼 생성 및 실행 장치(100)의 일 예를 나타낸 블록도이다.
도 27을 참조하면, 본 발명의 일 실시예에 따른 가상화 플랫폼 생성 및 실행 장치(100)는 제어부(110), 통신부(120), 메모리(130), 저장부(140), 가상 머신 이미지 생성부(150), 가상화 플랫폼 실행 스크립트 프로그램 생성부(160) 및 가상화 플랫폼 실행부(170) 등을 포함한다.
상세히, 제어부(110)는 일종의 중앙처리장치로서 가상화 플랫폼의 생성 및 실행의 전체 과정을 제어한다. 즉, 제어부(110)는 저장부(140)에 저장된 가상화 플랫폼 참조모델 등을 이용하고, 가상 머신 이미지 생성부(150), 가상화 플랫폼 실행 스크립트 프로그램 생성부(160) 및 가상화 플랫폼 실행부(170) 등을 등을 제어하여 다양한 기능을 제공할 수 있다.
여기서, 제어부(110)는 프로세서(processor)와 같이 데이터를 처리할 수 있는 모든 종류의 장치를 포함할 수 있다. 여기서, '프로세서(processor)'는, 예를 들어 프로그램 내에 포함된 코드 또는 명령으로 표현된 기능을 수행하기 위해 물리적으로 구조화된 회로를 갖는, 하드웨어에 내장된 데이터 처리 장치를 의미할 수 있다. 이와 같이 하드웨어에 내장된 데이터 처리 장치의 일 예로써, 마이크로프로세서(microprocessor), 중앙처리장치(central processing unit: CPU), 프로세서 코어(processor core), 멀티프로세서(multiprocessor), ASIC(application-specific integrated circuit), FPGA(field programmable gate array) 등의 처리 장치를 망라할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
통신부(120)는 가상화 플랫폼 생성 및 실행 장치(100)와 서비스 제공자(도 2의 200 참조) 및 사용자(도 2의 300 참조) 간의 송수신 신호를 전송하는데 필요한 통신 인터페이스를 제공한다.
여기서, 통신부(120)는 다른 네트워크 장치와 유무선 연결을 통해 제어 신호 또는 데이터 신호와 같은 신호를 송수신하기 위해 필요한 하드웨어 및 소프트웨어를 포함하는 장치일 수 있다.
메모리(130)는 제어부(110)가 처리하는 데이터를 일시적 또는 영구적으로 저장하는 기능을 수행한다. 여기서, 메모리(130)는 자기 저장 매체(magnetic storage media) 또는 플래시 저장 매체(flash storage media)를 포함할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
저장부(140)는 기개발된 가상 머신 이미지 정보나 가상화 플랫폼 참조모델 등을 저장하고 있다.
여기서, 저장된 가상 가상화 플랫폼 참조모델은 서비스 제공자(도 2의 200 참조)로부터 편집될 수 있다.
가상 머신 이미지 생성부(150)는 가상화 플랫폼 참조모델 정보를 입력으로 하여 새로운 가상 머신 이미지를 빌드한다.
이때, 가상 플랫폼 참조모델 정보와 기개발된 가상 머신 이미지를 입력으로 하여 새로운 가상 머신 이미지, 가상 플랫폼 시작 스크립트 프로그램 및 가상 플랫폼 응용 실행 스크립트 프로그램을 만들 수 있다.
새로운 가상 머신 이미지를 생성할 때, 도커 가상화 머신 생성 및 실행 기능을 사용한다. 여기서, 도커(Docker)는 미국의 'Docker'사에서 오픈 소스 소프트웨어로 개발을 진행하는 ‘리눅스 컨테이너’ 관리 도구의 이름으로, 컨테이너(가상 머신)에 할당된 디스크 이미지(가상 머신 이미지)를 간편하게 관리할 수 있게 한다. 또한, 이미 응용 서비스가 설치된 가상 머신 이미지를 내려 받아 이용할 수도 있고, 새로운 이미지를 만들어 공개할 수도 있도록 도와줄 수 있는 도구이다.
여기서, 도커 도구에는 가상 머신 이미지를 생성하는 'docker build' 기능과, 생성된 도커 가상 머신 이미지를 실행해주는 'docker run' 기능, 기타 도커 가상 머신 이미지를 레포지토리(repository)에 저장하고 관리할 수 있는 기본 기능들을 제공하고 있다. 그러나, 이 방법은 고신뢰의 가상화 시스템 참조 모델과 같은 것들이 없이 단순히 가상 머신들만 생성, 실행 또는 재사용한다.
이때, 기존 도커 가상 머신 방법과는 다르게, A star 참조모델들 및 B star 참조모델들 등의 미리 증명된 고신뢰의 가상화 시스템 참조모델들을 재사용하여, 고품질의 가상화 시스템 구축할 수 있다. 이는, 가상화 시스템 구축 시 가상 머신 생성 도구를 사용하여 빠른 시간 내에 고품질의 가상화 시스템을 생산할 수 있게 하기 위함이다.
그리고, 가상 머신 이미지를 빌드할 때, 가상 머신 응용 실행 템플릿 프로그램을 이용하여 가상 플랫폼 응용 실행 스크립트 프로그램을 생성할 수 있으며, 가상 플랫폼 시작 템플릿 프로그램을 이용하여 가상 플랫폼 시작 스크립트 프로그램을 생성할 수 있다. 또한, 가상 머신 이미지 빌드 정보 템플릿을 사용하여 가상 머신 이미지 빌드 정보를 생성할 수 있다.
가상화 플랫폼 실행 스크립트 프로그램 생성부(160)는 가상화 플랫폼 참조모델 정보를 입력으로 하여 가상화 플랫폼 실행 스크립트 프로그램을 생성한다.
이때, 가상 플랫폼 참조모델 정보 즉, 마스터와 백업 가상 머신들 간의 1:1(1개의 마스터와 1개의 백업이 대응), N:N(N개의 마스터와 N개의 백업이 대응), 혹은 N:M(N개의 마스터와 M개의 백업이 대응) 토폴로지 정보를 입력으로 하여 가상화 플랫폼 실행 스크립트 프로그램을 생성할 수 있다.
특히, 가상화 플랫폼 실행 스크립트 프로그램 생성부(160)는 지원하는 가상화 플랫폼 참조모델에 대해서, 가상화 서비스를 초기화하는 스크립트 프로그램을 생성할 수 있다. 그리고, 브릿지 모델의 타입에 상응하는 브릿지 생성 템플릿 프로그램을 사용하여 브릿지 설정 스크립트 프로그램을 만들고, 이를 가상화 플랫폼 실행 스크립트 프로그램에 추가할 수 있다. 그리고, 가상 머신 실행 템플릿 프로그램을 사용하여 가상 머신 실행 스크립트를 가상화 머신 수만큼 가상화 플랫폼 실행 스크립트 프로그램에 추가할 수 있다. 나아가, 브릿지 모델의 타입이 A인 경우에, 가상 통신 포트 복원 스크립트를 가상 플랫폼 실행 스크립트 프로그램에 추가할 수 있다. 마지막으로, 가상화 플랫폼 실행 스크립트 프로그램을 runon 폴더에 복사 할 수 있다.
여기서, A 타입 브릿지 모델의 생성 템플릿 스크립트 프로그램은 상기 수도코드 14와 같이 bridgename과 bridgeaddr 정보를 이용하여, 가상 머신 호스트의 이더넷 하드웨어와 가상화 플랫폼의 소프트웨어 브릿지를 연결해주는 프로그램이고, B 타입 브릿지 모델의 생성 템플릿 스크립트 프로그램은 상기 수도코드 16과 같이 bridgename, bridgeaddr 및 ethdev1 정보를 이용하여, 가상 머신 호스트의 이더넷 하드웨어와 가상화 플랫폼의 소프트웨어 브릿지를 연결해주는 프로그램이다.
가상화 플랫폼 실행부(170)는 생성된 새로운 가상 머신 이미지와 가상 플랫폼 실행 스크립트 프로그램을 이용하여 시스템 쉘에서 가상화 머신들을 실행시킨다.
이때, 생성된 가상 플랫폼 실행 스크립트 프로그램을 실행하여 가상 플랫폼 참조모델 정보에 따라 가상화 플랫폼을 구성해주고, 해당 응용 서비스를 실행해줄 수 있다.
여기서, 가상 플랫폼 실행 스크립트 프로그램은 쉘 인터프리터에 의해서 해석되고 실행되고, 실행 결과는 참조모델과 같은 가상화 플랫폼을 만들어내는 것이다. 그리고, 생성되고 실행된 가상 머신 인스턴스는 후에 피드백을 위해 재사용되어, 새로운 가상 머신 이미지를 생성하는데 사용될 수 있다.
또한, 새로운 가상 머신 이미지 실행 시, 시작 스크립트 프로그램과 응용 실행 스크립트 프로그램을 자동으로 실행시켜주기 때문에, 이 스크립트 프로그램만의 수정으로도 가상 머신을 특정 응용 서비스에 특화화 하여 실행시킬 수 있다.
여기서, 시작 스크립트 프로그램은 가상 머신의 속성 설정을 통해 특수 목적의 가상 머신으로 실행할 수 있도록 설정해주고, 응용 실행 스크립트 프로그램은 가상 머신 시작 시, 특수 목적 응용 서비스를 실행해주는 역할한다.
이상 설명된 본 발명에 따른 실시예는 다양한 컴퓨터 구성요소를 통하여 실행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등과 같은, 프로그램 명령어를 저장하고 실행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의하여 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용하여 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위하여 하나 이상의 소프트웨어 모듈로 변경될 수 있으며, 그 역도 마찬가지이다.
본 발명에서 설명하는 특정 실행들은 일 실시 예들로서, 어떠한 방법으로도 본 발명의 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다. 또한, “필수적인”, “중요하게” 등과 같이 구체적인 언급이 없다면 본 발명의 적용을 위하여 반드시 필요한 구성 요소가 아닐 수 있다.
따라서, 본 발명의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 또는 이로부터 등가적으로 변경된 모든 범위는 본 발명의 사상의 범주에 속한다고 할 것이다.
100: 가상화 플랫폼 생성 및 실행 장치
110: 제어부 120: 통신부
130: 메모리 140: 저장부
150: 가상 머신 이미지 생성부
160: 가상화 플랫폼 실행 스크립트 프로그램 생성부
170: 가상화 플랫폼 실행부

Claims (1)

  1. 마스터 가상 머신과 백업 가상 머신들 간의 토폴로지 정보인 가상화 플랫폼 참조모델 정보를 입력으로 하여 새로운 가상 머신 이미지를 빌드하는 단계;
    상기 가상화 플랫폼 참조모델 정보를 입력으로 하여 가상화 플랫폼 실행 스크립트 프로그램을 생성하는 단계; 및
    생성된 가상 머신 이미지와 상기 가상 플랫폼 실행 스크립트 프로그램을 이용하여 가상화 머신들을 실행하는 단계;
    를 포함하는, 가상화 플랫폼 생성 및 실행 방법.
KR1020170037004A 2017-03-23 2017-03-23 가상화 플랫폼 생성 및 실행 장치 및 그 방법 KR20180107983A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170037004A KR20180107983A (ko) 2017-03-23 2017-03-23 가상화 플랫폼 생성 및 실행 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170037004A KR20180107983A (ko) 2017-03-23 2017-03-23 가상화 플랫폼 생성 및 실행 장치 및 그 방법

Publications (1)

Publication Number Publication Date
KR20180107983A true KR20180107983A (ko) 2018-10-04

Family

ID=63862923

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170037004A KR20180107983A (ko) 2017-03-23 2017-03-23 가상화 플랫폼 생성 및 실행 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR20180107983A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110046027A (zh) * 2019-04-23 2019-07-23 山东超越数控电子股份有限公司 一种虚拟化平台实现方法及虚拟化平台
WO2020055117A1 (ko) 2018-09-10 2020-03-19 주식회사 엘지화학 배터리 관리 장치
KR102378817B1 (ko) * 2020-09-25 2022-03-29 주식회사 이노그리드 복수의 컴퓨팅 노드를 이용한 고성능 클라우드 서비스의 네트워크 격리를 위한 동적 클러스터 구성 방법 및 시스템

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020055117A1 (ko) 2018-09-10 2020-03-19 주식회사 엘지화학 배터리 관리 장치
CN110046027A (zh) * 2019-04-23 2019-07-23 山东超越数控电子股份有限公司 一种虚拟化平台实现方法及虚拟化平台
KR102378817B1 (ko) * 2020-09-25 2022-03-29 주식회사 이노그리드 복수의 컴퓨팅 노드를 이용한 고성능 클라우드 서비스의 네트워크 격리를 위한 동적 클러스터 구성 방법 및 시스템

Similar Documents

Publication Publication Date Title
US11329885B2 (en) Cluster creation using self-aware, self-joining cluster nodes
US9893940B1 (en) Topologically aware network device configuration
Masek et al. Unleashing full potential of ansible framework: University labs administration
KR20170022028A (ko) 컨테이너 이미지 보안 검사 방법 및 그 장치
WO2016099346A1 (en) Method and deployment module for managing a container to be deployed on a software platform
CN113032085A (zh) 云操作系统的管理方法、装置、服务器、管理系统及介质
CN112486466B (zh) 一种基于微服务架构的快速通用基础框架实现方法
Gogouvitis et al. Seamless computing in industrial systems using container orchestration
US11327750B1 (en) Domain-driven application breakout
CN111104201A (zh) 系统迁移方法和装置、电子设备、存储介质
KR20180107983A (ko) 가상화 플랫폼 생성 및 실행 장치 및 그 방법
CN113127009A (zh) 大数据管理平台的自动化部署方法和装置
Boyer et al. Architecture-based automated updates of distributed microservices
US10055516B1 (en) Testing open mobile alliance server payload on an open mobile alliance client simulator
Resman CentOS High Availability
US11290318B2 (en) Disaster recovery of cloud resources
US11762644B2 (en) Agentless installation for building deployments
AU2022245632A1 (en) Run-time communications protocol parameter adjustment in containerized applications
Vyas et al. Core Kubernetes
US11954469B2 (en) Bases for pattern-based cloud computing
CN113641364B (zh) 一种用于超融合云平台多节点系统部署的方法及系统
US20230393876A1 (en) Landing zones for pattern-based cloud computing
KR102394293B1 (ko) 다종 멀티 지능모듈 프로세스 조합 시스템
US20230153089A1 (en) System architecture for pattern-based software applications
CN114640597B (zh) 网络靶场配置迁移方法、装置、计算机设备及介质