Mesos는?
아파치 프로젝트(http://mesos.apache.org/)
트위터, 에어비앤비, 미소스피어가 사용.
기본적으로 Docker 지원.
분산 시스템 커널.
모든 머신에서 동작.
실행 어플리케이션에 대해 리소스 관리와 스케줄링 api를 제공.
Mesosphere = Mesos + Marathon + Chrnons
Marathon : 작업(컨테이너) 관리 담당.
Chronos : 작업 스케줄러.
- Mesos 노드 추상화
- Mesos의 노드들은 모든 Task에 대해 공유 된다.
- Mesos 동작 구성도
- Docker는 작업의 Type중 하나이다.
- Zookeeper를 통해 HA를 구성한다.
- Scheduler는 Chronos을 사용하거나, 직접 개발이 가능하다.
- Mesos 구성도 1
- Marathon은 PaaS플랫폼.
- 향후 Kubernates(참고) 지원계획.
- Mesos 구성도2
- 하이브리드 Cloud 구성가능.
- Batch 작업은 Chronos로 지원.
- Mesos Framework
- Meta-Frameworks / HA Services : Aurora, Marathon
- Distributed Cron : Chronos
- Contailners : Docker
- Continuous Integration : Jenkins, GitLab, GoCD
- Big Data : Hadoop, Spark, Storm, Kafka, Cassandra, Hypertable, MPI
- Python workloads : DPark, Exelixi
- Mesos Architecture
위 그림은 Mesos의 주요 구성 요소를 보여줍니다.
Mesos는 각 클러스터 노드에서 실행되는 에이전트 데몬을 관리하는 마스터 데몬과 이러한 에이전트에서 Task를 실행하는
Mesos 프레임워크로 구성됩니다. 마스터는 리소스 제공을 통해 프레임 워크 전반에서 리소스 (CPU, RAM, ...)를 세밀하게 공유 할 수있게합니다.
각 리소스 오퍼에는 <agent ID, resource1 : amount1, resource2 : amount2, ...> 목록이 포함되어 있습니다
(참고 : 키워드 'slave'는 'agent'를 사용하지 않으므로 드라이버 기반 프레임 워크는 여전히 슬레이브 ID, v1 HTTP API를 사용하는 프레임 워크는 에이전트 ID가있는 오퍼를받습니다.)
마스터는 공정한 공유 또는 엄격한 우선 순위와 같이 주어진 조직 정책에 따라 각 프레임 워크에 제공 할 리소스의 수를 결정합니다.
다양한 정책을 지원하기 위해 마스터는 플러그인 메커니즘을 통해 새로운 할당 모듈을 쉽게 추가 할 수있는 모듈 식 아키텍처를 사용합니다.
Mesos에서 실행되는 프레임 워크는 리소스를 제공 받기 위해 마스터에 등록하는 스케줄러와 프레임 워크의 작업을 실행하기 위해 에이전트 노드에서 실행되는 executor 프로세스로 구성됩니다.
(프레임 워크 스케줄러 및 executors 의 더욱 더 자세한 내용은 App / Framework 개발 가이드 참조 )
마스터가 각 프레임 워크에 제공되는 리소스 수를 결정하는 동안 프레임 워크의 스케줄러는 제공된 리소스 중에서 사용할 리소스를 선택합니다. 프레임 워크가 제공된 자원을 받아들이면 프레임 워크에서 실행하려는 작업에 대한 설명을 Mesos로 전달합니다.
다음 step으로 Mesos는 해당 에이전트에서 Task를 시작합니다.
그림의 이벤트를 살펴 봅시다.
1 . 에이전트 1은 4 개의 CPU와 4GB의 메모리가 있음을 마스터에게보고합니다.
그런 다음 마스터는 할당 정책 모듈을 호출하여 프레임 워크 1에 사용 가능한 모든 리소스가 제공되어야 함을 알립니다.
2. 마스터는 에이전트 1에서 사용할 수있는 것을 프레임 워크 1에 설명하는 리소스 오퍼를 보냅니다. 3. 프레임 워크의 스케줄러는 첫 번째 작업에는 <2 CPU, 1GB RAM>, 두 번째 작업에는 <1 CPU, 2GB RAM>을 사용하여 에이전트에서 실행할 두 가지 작업에 대한 정보로 마스터에 응답합니다. 4. 마지막으로, 마스터는 작업을 에이전트로 보냅니다. 에이전트는 프레임 워크의 executor에게 적절한 자원을 할당하고 두 가지 작업 (그림에서 점선으로 표시)을 시작합니다. CPU 1 개와 RAM 1 개가 아직 할당되지 않았기 때문에 할당 모듈은 프레임 워크 2에 할당 할 수 있습니다. 또한 이 리소스 제공 프로세스는 작업이 완료되고 새 리소스가 해제 될 때 반복됩니다.
Mesos가 제공하는 thin 인터페이스는 확장이 가능하고 프레임 워크가 독립적으로 진화 할 수있게 해주지만 한 가지 질문이 남아 있습니다 : Mesos가 이러한 제약 조건을 안다면 프레임 워크의 제약 조건을 어떻게 만족시킬 수 있습니까?
예를 들어 프레임 워크가 프레임 워크에서 요구하는 데이터를 저장하는 노드를 알면 Mesos없이 어떻게 데이터 지역성을 얻을 수 있습니까?
Mesos는 단순히 프레임 워크에 오퍼를 거부 할 수있는 기능을 부여하여 이러한 질문에 답합니다.
프레임 워크는 제약 조건을 충족시키지 못하는 제안을 거부하고 이를 수용합니다.
특히 프레임 워크가 제한된 시간 동안 입력 데이터를 저장하는 노드를 확보하기 위해 대기하는 지연 스케줄링이라는 간단한 정책이 거의 최적의 데이터 지역을 산출한다는 것을 알게 되었습니다.
출처 : https://www.slideshare.net/songaal/paa-s-mesosmesosphere
https://abhishek-tiwari.com/post/building-distributed-systems-with-mesos
'역량 UP!' 카테고리의 다른 글
아키텍트 지침 15가지!! (0) | 2012.09.14 |
---|---|
CBD방법론 (0) | 2012.06.04 |