Print
카테고리: [ Cloud Computing & MSA ]
조회수: 2348

1. Overview

Cloud Foundry는 Diego를 사용하여 앱 컨테이너를 관리한다. Diego는 Cloud Controller의 앱 예약 및 관리 책임을 담당한다.

Diego는 네트워크 장애 및 충돌을 피하기 위해 Diego Cell에서 실행중인 인스턴스 수를 유지하려고 시도하는 자체 복구 컨테이너 관리 시스템이다. Diego는 Task 및 LRP를 예약하고 실행한다. Task및 LRP에 대한 자세한 내용은 Diego Auction이 Task를 할당하는 방법을 참조한다.

BBS API를 사용하여 원하는 수의 Task 및 LRP를 제출, 업데이트 및 검색 할 수 있다.

한편 과거에는 Ruby 기반의 DEA가 있었다. 차이점을 살펴보자.


2. Diego가 App을 실행시키는 방법

이제부터 Diego가 App 실행 요청을 처리하는 방법을 설명한다. 이것은 Diego의 처리 프로세스 중 하나 일뿐입니다. 예를 들어 App을 실행하면 App이 이미 준비된 것으로 가정한다.

2.1. Receives the Request to Run an App

Cloud Controller는 App 실행 요청을 BBS에 전달한다. BBS는 요청 정보를 자신의 데이터베이스(bbs db)에 저장한다.

2.2. Passes Request to the Auctioneer Process

BBS는 Scheduler(Auctioneer)를 호출하여 App을 위한 Desired 리소스 기반으로 Auction을 생성한다. 이 때 데이터베이스(bbs db)에 저장된 정보를 참조합니다.

Scheduler는 App 컨테이너를 어떠한 Cell에 배포할지 결정하는 역할을 한다.

2.3. Performs Auction

경매를 통해 Scheduler(Auctioneer)는 앱을 실행할 Diego Cell을 탐색한다. Diego Cell의 Rep 작업은 Auction 요청을 받아들인다.

2.4. Creates Container and Runs App

In-process Executor는 Diego Cell에 Garden 컨테이너를 생성한다. Garden은 Staging 프로세스의 Droplet을 다운로드하고 컨테이너에서 App을 실행한다.

2.5. Emits Route for App

route-emitter 프로세스는 Diego Cell에서 실행중인 새 App에 대한 라우팅 등록 메시지를 Gorouter로 내보낸다.

2.6. Sends Logs to Loggregator

Loggregator 에이전트는 App 로그, 오류 및 메트릭을 Cloud Foundry Loggregator로 포워드한다.


3. 각 컴포넌트 소개

3.1. Rep

Rep은 Cell을 대표하여 여러 역할을 한다.  특정 Cell이 실패하면 Converger가 자동으로 해당 인스턴스를 다른 Cell로 옮긴다. 또 Task/LRP 수신을 위해 Action에 참여하고 Executor에 요청, Tasks/LRPs를 실행하여 컨테이너를 생성하고 컨테이너 내에서 수행될 액션을 실행한다.

3.2. Executor

3.3. Garden

Garden 컨테이너가 관리하기 위한 플랫폼 독립적 서버와 클라이언트를 제공한다.

3.4. Metron Agent

App 로그와 App/Diego 메트릭을 Loggregator의 Dopler 컴포넌트로 포워드한다.

3.5. Route-emitter