-
Mesos란?
UC Berkeley에서 Nexus라는 이름으로 개발이 진행되던 프로젝트이고, Mesos라는 이름으로 Apache재단에서 오픈소스로 발표하였습니다. Cloud Infrastructure 및 Computing Engine들의 자원을 통합적으로 관리할 수 있도록 만든 자원관리 프로젝트입니다. Mesos는 분산 시스템 커널(distributed systems kernel)입니다. 뭔가 굉장히 복잡해 보이지만, 기본 개념은 간단합니다. 네트워크로 묶여 있는 여러 개의 컴퓨터의 자원 즉, CPU, 메모리, 디스크 등의 자원을 하나로 묶어서 resource pool로 만들어서 마치 하나의 컴퓨터 처럼 보이게 하겠다는 겁니다. 그리고 커널로서 작동하기 위한 기능인 스케쥴러와 애플리케이션 관리 기능을 더해서, 분산 커널을 만듭니다. 이제 유저가 애플리케이션 실행을 요청하면, 자원이 넉넉한 인스턴스를 할당하고 애플리케이션을 실행 하면 됩니다.
Architecture
아래의 그림은 Mesos 아키텍쳐입니다. 마스터는 Active/Standby 구조로 되어있으며 Zookeeper를 통해서 Master Failover를 자동으로 관리해줍니다. Active Master 서버가 문제가 발생하면 Zookeeper를 통해 Standby를 Leader로 승격시켜 Active상태로 만들어줍니다. 그리고 어플리케이션을 실행하면 마스터가 정보를 받아 리소스(CPU, Memory, Disk)가 남아있는 Slave 서버에서 어플리케이션을 실행시켜 줍니다.
자원할당
Mesos는 각 Slave서버들의 자원을 Master에게 전달하게 되어있습니다. Mesos는 Framework라는 개념이 있는데 대표적인 Framework는 marathon과 chronos가 있습니다. Marathon는 자원할당과 Job을 만드는 Framework이고, Chronos는 스케쥴 Framework입니다. Marathon 을 통해 등록된 어플리케이션은 Master에게 전달된 Slave의 자원을 확인하여 리소스가 넉넉한 slave에서 어플리케이션을 실행하게 됩니다.
Mesos Master UI
아래는 Mesos Master UI입니다. 아래의 그림처럼 현재 실행중인 Task와 완료된 Task 그리고 어느 서버에서 실행되고, 성공/실패한 내용을 자세히 확인할 수 있습니다.
Mesos Cluster에서 총 CPU, Memory, Disk 사이즈와 사용중인 리소스, 사용가능한 리소스를 확인할 수 있습니다.
Slave Detail 정보를 표시한 UI입니다. 현재 실행중인 Task의 CPU/Memory/Disk 사용량을 실시간으로 확인이 가능합니다. 실제로 nginx에 부하를 주었을때 CPU와 메모리 사용량이 변하는걸 확인할 수 있습니다.
Marathon
Marathon UI입니다. 아래의 그림처럼 Marathon에서 실제로 어플리케이션을 실행 시킬 수 있으며, 실행시킨 어플리케이션의 정보를 확인할 수 있습니다. 어플리케이션이 실행되고있는 Mesos Slave서버가 장애가 발생하면 다른 Mesos Slave서버로 어플리케이션을 실행시켜줍니다.
Chronos
Chronos 는 distribute job scheduler 이고, 아래의 그림은 WEB UI 입니다.