mesos marathon
참고
https://www.slideshare.net/AhmedBACHA1/cloud-infrastructure-on-apache-mesos http://devbv.com/2017/04/12/mesos/
intro
서비스를 사용할때 AWS 처럼 서비스 확장이 필요할떄, 혹은 서비스 서버중 한대가 죽더라도 서비스는 계속되어야 할 때 쓸만한 기술들을 정리해 보았습니다.
mesos
mesos 는 기존의 여러대의 서버를 사용하였을 경우 90%, 10%, 10% 와 같이 리소스 사용중일 때 좀더 유동적으로 프로세스를 배분하여(Elastic Sharing) 사용할수 있게 해주는 apache 의 오픈 소스 프로젝트중 하나입니다.
여러 서버를 관리하기 쉬워지므로 많은 IT기업(airbnb, twitter, apple, netflix 등)에서 사용중이며, 계속 발전중인 오픈소스 프로젝트입니다.
marathon
marathon 은 mesos 환경에서 실행되는 데몬 스케쥴러 프로젝트이며 이를 이용하면 서버 3개 운용중일시 1개 서버가 죽더라도 스케쥴러가 나머지 2개 서버에 배분하여 무중단 서비스를 운용할수 있게끔 하는 프로젝트입니다.
installation
설치 자체는 zookeeper 가 선행 설치되어 있어야 mesos 및 marathon 을 설치할수 있으며, mesos 는 centos7 기준 build 설치 필요, marathon 은 tar 만 풀면 바로 사용할수 있게끔 되어 있다.
설치 참고 링크
http://mesos.apache.org/documentation/latest/building/ – 아파치공식 mesos 빌드 가이드 문서 https://mesosphere.github.io/marathon/docs/ – marathon 설치 가이드 문서
mesos 설치시 tar 파일을 받아 압축을 푼 뒤 build 폴더를 만들고 configure 후 make && make install 을 해주면 build 폴더 안에 bin 폴더가 생기게 됩니다.
marathon 설치 가이드 문서에서는 ./bin/start 라고 되어 있으나, 실제로는 해당 파일을 찾지 못하고 tar 압축을 푼 경로의 /bin/marathon 파일을 통하여 실행시킬수 있습니다.
configure
정상적으로 설치하게 되면 다음과 같은 화면이 보이게 되며
이중 create 버튼을 누르게 되면 서비스를 생성할수 있습니다.
실로 간단합니다! 식별할 ID, CPU 코어수, 메모리, DISK 사용량, 몇개 서버에서 실행할것인지만 세팅하고 명령어를 쳐주면 알아서 할당되고, 알아서 실행되게 됩니다.
이와같이 Application 의 Scale을 단 버튼 하나로 쉽게 조절할수 있습니다.
chronos
그 외에도 mesos 위에 올리는 여러 서버에서 자동으로 실행되는 chronos 라는 프로젝트도 존재합니다.
결론?
많은 IT 기업에서 사용하는걸로 이미 충분한 검증이 됬다고 생각합니다. 무중단 되어야 할 서비스, 혹은 대규모 단위 cronjob 을 할때는 충분히 사용할만 하다고 생각합니다.
만약 무중단 혹은 Scale up/down 이 쉬워야 하는 서비스를 개발하게 될 경우 저는 무조건 mesos-marathon 을 사용하게 될 것 같습니다.