이야기박스
Mesos; 자원 관리 플랫폼 본문
# 시작에 앞서
Mesos : A Platform for Fine-Grained Resource Sharing in the Data Center
위 논문을 참조하여 작성하였습니다. 영어에 익숙하지 않다 보니 오역이 많을 수 있습니다.
특정 개편 프로젝트에서 분산처리 과정 중, 자원 관리가 필요하여 조사를 시작하였습니다.
yarn을 유력 후보로 생각하고 있지만 다른 기술들도 알아봐야 할 것 같더라고요.
# Introduction
In this paper, we propose Mesos, a thin resource sharing layer that enables fine-grained sharing across diverse cluster computing frameworks, by giving frameworks a common interface for accessing cluster resources.
클러스터 구성을 통한 플랫폼이 주류가 되면서 이를 관리할 리소스 플랫폼이 필요하게 되었습니다. Mesos는 같은 클러스터 내 여러 컴퓨팅 자원을 하나의 컴퓨팅 자원처럼 관리할 수 있도록 도와주는 플랫폼이라고 할 수 있겠습니다.
이를 위해서 몇 가지 도전 과제가 있습니다.
1. 넓은 범위의 프레임워크, 그리고 앞으로 새로 생길 프레임워크들에 대한 솔루션이 필요합니다.
2. 높은 확장성이 필요합니다. (highly scalable)
3. 스케줄링 시스템은 falut-tolerant이어야 하고, 가용성이 높아야 합니다.
mesos에서는 위 문제에 대하여 몇 가지 접근 방법을 고려하였었습니다.
1. to implement a centralized scheduler
2. delegating control over scheduling to the frameworks.
1번 접근 방법은 몇가지 문제점이 존재합니다. 충분한 API가 제공되어야 하고, 새로운 서비스가 생긴다면 그에 맞춘 개발이 추가적으로 필요하게 됩니다. 또한 많은 프레임워크들은 이미 자신의 스케줄링이 구현되어 있는데, 이를 옮기려면 큰 리팩토링 비용이 소요되게 됩니다. 이러한 이유들 때문에 mesos는 2번 접근 방법을 채택하게 됩니다.
이와 같은 mesos의 장점은 다음과 같습니다.
1. 특정 프레임워크를 사용하다면, 그 프레임워크가 돌고 있는 클러스터에서 multiple instance를 생성할 수 있습니다. 심지어 버전이 다르더라도 가능합니다.. (야후와 페이스북이 대표적 사례입니다)
2. 어떠한 문제가 발생한 경우, 프레임 워크 전반적인 부분이 아닌 특정 문제만 타겟하여 해결할 수 있도록 구성해줍니다.
아직 mesos를 직접 사용해보지 않아서 장점 2번이 크게 와 닿지 않네요.
# Architecture
## Design Philosophy
Mesos는 확장성 있고 프레임워크 변화에 탄력성 있는 클러스터 자원 관리를 목표로 하고 있습니다.
본 논문에서 소개하고 있는 Mesos의 디자인 철학입니다.
define a minimal interface that enables efficient resource sharing across frameworks, and otherwise push control of task scheduling and execution to the frameworks.
작업 컨트롤을 각 프레임워크에 맡기는 이점은 다음과 같습니다.
1. 문제에 대해 프레임워크 별로 다양한 접근 방법과 해결 방법을 가지고 있기 때문에, 중앙 집권 처리를 하기에 어려움이 있습니다. 그래서 문제의 해결을 각 프레임워크에 넘김으로써 독립적으로 해결할 수 있도록 합니다.
2. Mesos의 변화를 최소화 하여 유지보수에 큰 장점을 가집니다.
Mesos는 low-level 인터페이스를 제공해주지만, exokernel과 유사한 라이브러리 체감을 할 수 있다고 하네요. 아직 직접 사용해보지 않아서 와 닿지 않네요.
## Overview
각각의 클러스터 노드위에 'slave' 데몬이 동작하고 있고 여기서 'frameworks'들이 'task'를 실행하고 있습니다. 'master'는 'slave'들을 관리하는 역할을 합니다.
'resource offers'라는 것을 통하여 'master'는 가용 리소스를 'slaves'에 제공합니다.
얼마나 많은 리소스를 어떠한 'slave'에게 제공할지는 사용되어지는 'framework'의 정책을 따르게 됩니다.
이처럼 'master'는 다양한 정책을 수용하기 위하여 'pluggin mechanism'이라 불리는 'modular architecture'를 사용합니다.
또한 'master'는 'fault-tolerant'하기 위하여 'ZooKeeper'를 통하여 'failover mechanism'을 사용하게 됩니다.
Mesos의 동작은 두 가지 구성으로 이루어져 있는데, scheduler와 executor입니다.
- scheduler : master가 slave에게 제공할 resources들을 기록해둠
- executor : slave node에서 framework에 등록된 task를 실행
아래는 mesos에서 framework가 어떻게 스케줄을 얻고 동작하는지를 나타내는 예제입니다.
- [Slave 1]이 [Master]에게 4cpu, 4gb의 리소스가 free 상태라고 알려줍니다. 그러면 [Master]가 [Allocation Policy Module]에 해당 리소스가 사용 가능한 상태라고 알리게 됩니다.
- [Master]는 [Framework 1]에 [Slave 1]을 사용할 수 있다는 [Resource Offer]를 보냅니다.
- [Framework 1]의 스케줄러가 두개의 작업을 실행할 것이라고 응답을 합니다.
- <task1, s1, 2cpu, 1gb, ...>
- <task2, s1, 1cpu, 2gb, ...>
- [Master]가 위의 작업을 [Slave 1]에게 전송하고 [Slave 1]의 [Executor]는 이를 적절하게 할당합니다.
만약 Frameworks가 실행할 수 없는 상태라면?
Frameworks는 'reject offeres'로 응답합니다.
## Making Resource Offers Scalable and Robust
Mesos는 필터 기능을 사용하여 효율적으로 작업을 처리하도록 하였습니다.
frameworks에 작업이 부여되더라도 filter에 통과하지 못하면 동일하게 실패 처리가 됩니다.
## Fault Tolerance
위 아키텍쳐와 같은 경우, Master에 이상이 생기면 치명적인 이슈로 발전할 수 있기 때문에, Mesos는 Zookeeper를 통하여 Master에 이슈가 생기는 경우, 새로운 마스터로 교체해 줍니다.
# Install
https://box0830.tistory.com/256
'Computer & Data > Orchestration' 카테고리의 다른 글
Kubernetes vs Mesos with Marathon (0) | 2019.04.25 |
---|---|
Mesos; Master, Slave, Marathon 설치 (0) | 2019.04.24 |
VirtualBox를 통한 클러스터용 VM 생성 (0) | 2019.04.23 |
Kubernetes 1. Introduction (0) | 2019.04.20 |
Kubernetes 스터디 시작 (0) | 2019.04.12 |