이야기박스

Mesos; Master, Slave, Marathon 설치 본문

Computer & Data/Orchestration

Mesos; Master, Slave, Marathon 설치

박스님 2019. 4. 24. 18:56
반응형

# 개요

지난번 포스트에 이어서 이번엔 설치 작업을 진행해보겠습니다.

https://box0830.tistory.com/252

 

Mesos; 자원 관리 플랫폼

# 시작에 앞서 Mesos : A Platform for Fine-Grained Resource Sharing in the Data Center 위 논문을 참조하여 작성하였습니다. 영어에 익숙하지 않다 보니 오역이 많을 수 있습니다. 특정 개편 프로젝트에서 분..

box0830.tistory.com

개인PC 리소스의 제한이 있어서 Ubuntu Server 16.04.6 LTS 3대를 사용하여 구성을 진행하였습니다.

VM 구성에 관해서는 아래 포스트를 통하여 참조하시면 됩니다.

https://box0830.tistory.com/255

 

VirtualBox를 통한 클러스터용 VM 생성

Mesos 실행 테스트를 위하여 VM 생성하였습니다. 생성 우분투 서버 : Ubuntu Server 16.04 LTS # 우분투 서버 설치 1. 언어 선택 어차피 서버로만 사용하기 때문에 언어는 영어로 선택하였습니다. 2. 지역 설정..

box0830.tistory.com

# 참조

설치는 주로 아래 두 링크를 참조하였습니다. 이외에 자잘한 이슈는 Stackoverflow나 다른 개발자 사이트를 참조하였습니다.

## Mesos on Ubuntu 16.04 Manually

https://www.admintome.com/blog/configuring-a-dcos-cluster-on-ubuntu-16-04/

 

CONFIGURING A MESOS MARATHON CLUSTER ON UBUNTU 16.04 | AdminTome Blog

In this post you will learn how to configure a Mesos Marathon Cluster on Ubuntu 16.04.  Learn how to think of your entire datacenter as a single system.

www.admintome.com

## Marathon Install

https://knight76.tistory.com/entry/%EB%A7%88%EB%9D%BC%ED%86%A4marathon-%EC%8A%A4%ED%83%A0%EB%93%9C%EC%96%BC%EB%A1%A0%EC%9C%BC%EB%A1%9C-%EC%84%A4%EC%B9%98%EC%8B%A4%ED%96%89%ED%95%98%EA%B8%B0

 

마라톤(marathon) 설치/실행하기

마라톤(marathon)을 로컬 모드/확장형으로 설치/실행하는 예이다. 마라톤 상태를 저장하려면 주키퍼가 필요하다. 주키퍼를 설치하고 주키퍼를 실행한다. $ wget https://archive.apache.org/dist/zookeeper/zookee..

knight76.tistory.com

 

# 구성도

제 개인 PC 성능의 제약으로 높은 성능으로 테스트를 진행하지는 못하였습니다. 

## PC 성능

  • CPU : i5-7500 3.40GHz
  • Memory : 16GB
  • 64bit
  • Disk
    • SSD : 230GB
    • HDD : 930GB

VM의 디스크는 HDD에서 제공하였습니다.

개요 IP 메모리 (GB) 코어 하드(GB)
Master 192.168.56.101 4 2 40
Slave 192.168.56.102 1 1 40
Slave 192.168.56.103 1 1 20

# 설치 - 공통 부분

Mesos에 의존성이 있는 jdk, 각종 패키지들을 설치합니다.

sudo apt install -y openjdk-8-jdk
sudo apt -y install build-essential python-dev libcurl4-nss-dev libsasl2-dev libsasl2-modules maven libapr1-dev libsvn-dev
sudo apt install unzip

# 설치 - Master Server

개인 PC 성능의 한계로 마스터를 1개로만 구성해두었지만, Zookeeper도 등록을 해두었습니다.

## Zookeeper

1. Zookeeper 설치

sudo apt install zookeeperd
sudo systemctl start zookeeper
sudo systemctl enable zookeeper

2. /etc/zookeeper/conf/myid에 UniqueID 등록

Master 서버가 한대이므로 '1'로 설정하였습니다.

만약, Master 서버가 여러대라면 '1', '2', '3',... 이런식으로 고유 ID를 주면 됩니다.

3. /etc/zookeeper/conf/zoo.cfg에 서버 정보 등록

# specify all zookeeper servers
# The fist port is used by followers to connect to the leader
# The second one is used for leader election
server.1=192.168.56.101:2888:3888
#server.2=zookeeper2:2888:3888
#server.3=zookeeper3:2888:3888

마찬가지로 Master 서버가 여러대라면 주석을 제거하고 모두 등록시켜주면 됩니다.

 

## Mesos-master

1. tar.gz 설치

wget http://archive.apache.org/dist/mesos/1.0.1/mesos-1.0.1.tar.gz
tar -xzvf mesos-1.0.1.tar.gz
cd mesos-1.0.1

2. 빌드

mkdir build
cd build
../configure
make -j 2 V=0
make check
sudo make install
sudo ldconfig

3. /etc/systemd/system/mesos-master.service 생성

systemd unit으로 간단하게 실행하기 위하여 아래 내용으로 파일을 생성합니다.

[Unit]
Description=Mesos Master Service
After=zookeeper.service
Requires=zookeeper.service

[Service]
ExecStart=/usr/local/sbin/mesos-master --ip=192.168.1.30 --work_dir=/var/lib/mesos --zk=zk://192.18.1.30:2181,192.168.1.31:2181,192.168.1.32:2181/mesos --quorum=1  --cluster=billcloud

[Install]
WantedBy=multi-user.target

그리고 service를 등록합니다.

sudo systemctl daemon-reload
sudo systemctl start mesos-master.service
sudo systemctl enable mesos-master

서비스 동작을 확인합니다.

journalctl -f -u mesos-master.service

{Master Server IP}:5050으로 들어가시면 UI를 통해 서버 동작을 확인하실 수 있습니다.

 

## Marathon

1. Marathon 파일 설치

$ wget http://downloads.mesosphere.com/marathon/v1.1.1/marathon-1.1.1.tgz 
$ tar xf marathon-1.1.1.tgz 
$ cd ~/marathon-1.1.1
$ ./bin/start --master 192.168.56.101:5050 --zk zk://192.168.56.101:2181/marathon

마라톤 바이너리도 lib 공통 폴더에 복사해주어야 마라톤 실행이 가능함

sudo cp ~/mesos/build/src/.libs/libmesos.so /usr/lib

2. 수동 설치

/usr/local/ 경로에 수동으로 설치하는 작업을 진행하였습니다. 썩 좋은 방법은 아닌것 같지만 원활한 Service 등록을 위하여 진행하였습니다.

sudo cp ~/marathon-1.1.1/bin/start /usr/local/bin/marathon
sudo chmod 755 /usr/local/bin/marathon
sudo mkdir /usr/local/target
sudo cp -R ~/marathon-1.1.1/target/* /usr/local/target/

3. /etc/systemd/system/marathon.service 생성

mesos-master에서 작업했던거와 같이 유사하게 작업을 진행합니다.

[Unit]
Description=Marathon Service
After=mesos-master.service
Requires=mesos-master.service

[Service]
ExecStart=/usr/local/bin/marathon --master zk://192.168.56.101:2181/mesos --zk zk://192.168.56.101:2181/marathon

[Install]
WantedBy=multi-user.target

그리고 마찬가지로 서비스 등록을 진행합니다.

sudo systemctl daemon-reload
sudo systemctl start marathon.service
sudo systemctl enable marathon.service

Master와 마찬가지로 확인 작업을 진행해줍니다.

journalctl -f -u marathon.service

UI 확인은 {ServerIP}:8080 들어가시면 됩니다.

 

# 설치 - Slave Server 

1. 추가적인 패키지가 필요

apt-get install zlib1g-dev  

2. 설치

wget http://archive.apache.org/dist/mesos/1.0.1/mesos-1.0.1.tar.gz                                                                          
tar -xzvf mesos-1.0.1.tar.gz                                                                                                                
cd mesos-1.0.1    

3. 빌드

mkdir build                                                                                                                                 
cd build                                                                                                                                    
../configure                                                                                                                                
make -j 2 V=0                                                                                                                               
make check                                                                                                                                  
sudo make install                                                                                                                           
sudo ldconfig   

4. /etc/systemd/system/mesos-slave.service 생성

서비스 등록 과정입니다. Master 서버에서 했던 작업과 동일합니다.

[Unit]
Description=Mesos Slave Service

[Service]
ExecStart=/usr/local/sbin/mesos-slave --master=zk://192.168.56.101:2181/mesos --work_dir=/var/lib/mesos

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start mesos-slave.service
sudo systemctl enable mesos-slave.service

마찬가지로 서비스 확인을 진행해줍니다.

journalctl -f -u mesos-slave.service

마스터 UI 화면(Master IP:5050)에서도 확인이 가능합니다!

반응형