VMware로 구축하는 mesos 테스트 환경

Mesos란

Mesos는 2009년 버클리 대학에서 시작된 오픈소스 클러스터 매니저 프로젝트로, 2013년부터는 아파치 Top-level 프로젝트로 승격되었습니다.
이미 Twitter와 Airbnb, Apple을 포함한 많은 기업이 실 서비스 환경에서 Mesos를 사용하고 있습니다.
여기서는 docker container의 orchestration 용도로 사용할 예정입니다.

Mesos 아키텍처

Mesos는 Master와 Master의 고가용성을 유지하기 위한 Zookeeper 클러스터, Framework, Scheduler, Slave로 구성되어 있습니다.

Mesos 동작원리

  1. Slave 1은 4 CPU와 4GB RAM을 사용할 수 있다고 Mesos Master에게 전달합니다. Mesos Master는 Framework 1이 tack를 실행하기 위해 리소스 오퍼를 요청한 사실을 Allocation module에 저장합니다.
  2. Mesos Master는 Slave 1의 리소스 오퍼를 Framework 1에 전달합니다.
  3. Framework의 Scheduler는 Slave 1에 2개(task1, task2)의 task를 실행하겠다는 정보를 Mesos Master에 응답으로 돌려줍니다. task1은 2 CPU, 1GB RAM, task2는 1 CPU, 2GB RAM을 사용합니다.
  4. 최종으로 Mesos Master는 Slave 1에 2개의 task1, task2를 전달하고, Slave 1에서 실행된다. 이제 Slave 1에 남은 자원인 1 CPU와 1GB RAM이 리소스 오퍼로 Mesos Master에 전달됩니다.

테스트 환경

  • VMWare Workstatin 12
  • Ubuntu 14.04

공통 패키지 설치

JAVA설치

Zookeeper cluster를 구성하기 위해서는 JAVA가 필요합니다.

sudo add-apt-repository ppa:webupd8team/java  
sudo apt-get update  
sudo apt-get install oracle-java8-installer  
sudo apt-get install oracle-java8-set-default  
Mesos 저장소 추가
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv E56151BF  
DISTRO=$(lsb_release -is | tr '[:upper:]' '[:lower:]')  
CODENAME=$(lsb_release -cs)  
echo "deb http://repos.mesosphere.io/${DISTRO} ${CODENAME} main" | sudo tee /etc/apt/sources.list.d/mesosphere.list  
sudo apt-get -y update  

Mesos master 설치

sudo apt-get install mesosphere  

Mesos master 설정

Zookeeper 설정

myid는 중복되지 않게 1~255 사이의 정수값을 할당합니다.

sudo nano /etc/zookeeper/conf/myid

1    # master1  

/etc/zookeeper/conf/zoo.cfg 에 server.{myid}.{server ip}:2888:3888 설정을 추가합니다.

sudo vi /etc/zookeeper/conf/zoo.cfg

server.1=192.168.66.11:2888:3888  
server.2=192.168.66.12:2888:3888  
server.3=192.168.66.13:2888:3888  
Mesos 설정

‘zk://’ 형식의 Zookeeper URL을 설정합니다.
Zookeeper URL은 zk://로 시작하고 /mesos으로 끝나며 그 사이에 마스터 서버 IP와 포트(2181)를 입력합니다. 각각의 마스터 서버들은 콤마(,)로 구분합니다.

sudo vi /etc/mesos/zk

zk://192.168.66.11:2181,192.168.66.12:2181,192.168.66.13:2181/mesos  

quorum을 설정합니다.
quorum은 마스터 노드 수를 2로 나눈 값보다 큰 수를 넣는다.
quorum (마스터 노드 수 (3) / 2) + 1 = 2

sudo vi /etc/mesos-master/quorum  
2  

mesos master의 ip와 hostname을 설정합니다.

echo 192.168.66.11 | sudo tee /etc/mesos-master/ip

sudo cp /etc/mesos-master/ip /etc/mesos-master/hostname  
Marathon 설정
sudo mkdir -p /etc/marathon/conf  
sudo cp /etc/mesos-master/hostname /etc/marathon/conf


sudo cp /etc/mesos/zk /etc/marathon/conf/master  
sudo cp /etc/marathon/conf/master /etc/marathon/conf/zk

sudo vi /etc/marathon/conf/zk  
zk://192.168.66.11:2181,192.168.66.12:2181,192.168.66.13:2181/marathon  
기타 설정

Mesos slave 서비스를 비활성화합니다.

sudo stop mesos-slave  
echo manual | sudo tee /etc/init/mesos-slave.override  
서비스 재시작

Zookeeper, Marathon 그리고 Mesos Master 서비스를 재시작합니다.

sudo restart zookeeper  
sudo restart mesos-master  
sudo restart marathon  

master2, master3 서버도 동일한 방법으로 설정합니다.

Mesos slave 설치

sudo apt-get install mesos  

Mesos slave 설정

Mesos 설정

‘zk://’ 형식의 Zookeeper URL을 설정합니다.
Zookeeper URL은 zk://로 시작하고 /mesos으로 끝나며 그 사이에 마스터 서버 IP와 포트(2181)를 입력합니다. 각각의 마스터 서버들은 콤마(,)로 구분합니다.

sudo vi /etc/mesos/zk

zk://192.168.66.11:2181,192.168.66.12:2181,192.168.66.13:2181/mesos  

Mesos slave의 ip와 hostname을 설정합니다.

echo 192.168.66.51 | sudo tee /etc/mesos-master/ip

sudo cp /etc/mesos-master/ip /etc/mesos-master/hostname  
기타 설정

Zookeeper를 비활성화합니다.

sudo stop zookeeper  
echo manual | sudo tee /etc/init/zookeeper.override  

Mesos master를 비활성화합니다.

echo manual | sudo tee /etc/init/mesos-master.override  
sudo stop mesos-master  
서비스 재시작
sudo restart mesos-slave  

테스트

Mesos master 에 접속합니다.

http://192.168.66.11:5050  

프레임워크과 스케쥴러를 확인합니다.

slave 정보를 확인합니다.

Marathon

Chronos

참고

Martin

Read more posts by this author.