이야기박스
Mesos; Master, Slave, Marathon 설치 본문
# 개요
지난번 포스트에 이어서 이번엔 설치 작업을 진행해보겠습니다.
https://box0830.tistory.com/252
개인PC 리소스의 제한이 있어서 Ubuntu Server 16.04.6 LTS 3대를 사용하여 구성을 진행하였습니다.
VM 구성에 관해서는 아래 포스트를 통하여 참조하시면 됩니다.
https://box0830.tistory.com/255
# 참조
설치는 주로 아래 두 링크를 참조하였습니다. 이외에 자잘한 이슈는 Stackoverflow나 다른 개발자 사이트를 참조하였습니다.
## Mesos on Ubuntu 16.04 Manually
https://www.admintome.com/blog/configuring-a-dcos-cluster-on-ubuntu-16-04/
## Marathon Install
# 구성도
제 개인 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)에서도 확인이 가능합니다!
'Computer & Data > Orchestration' 카테고리의 다른 글
YARN ; Yet Another Resource Negotiator (0) | 2019.04.26 |
---|---|
Kubernetes vs Mesos with Marathon (0) | 2019.04.25 |
VirtualBox를 통한 클러스터용 VM 생성 (0) | 2019.04.23 |
Kubernetes 1. Introduction (0) | 2019.04.20 |
Mesos; 자원 관리 플랫폼 (0) | 2019.04.17 |