Mesosを簡単にインストールする


以前は公式のマニュアルどおりにMesosのインストールを頑張ったが、Mesosのソースからビルドするのにとても時間がかかりました。

せっかちな私にはたまらない待ち時間でした。

以前の記事: Mesos v1.5.0をインストールする
https://qiita.com/48hands/items/4f9db52c58c29c30a2d1

調べてみると、サードパーティのMesosphere Communityがrpmを提供してくれているようなので、
これを使って今回はインストールしてみようと思います。

Download Apache Mesos Packages　　
https://open.mesosphere.com/downloads/mesos/


## 環境構成

サーバ4台のMesosクラスタ構成を目指します。
Vagrantでクラスタを構成するマシンを作成します。
以下は設定例です。OSはCentOS7でインストールします。

* node1: Mesosマスタ
* node2-node4: Mesosスレーブ


とします。

`Vagrantfile`は以下を参照してください。筆者はあとでSparkを動かしたかったので、メモリを高めで設定しています。

```ruby
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  (1..4).each do |no|
    name = "node#{no}"
    config.vm.define name do |node|
      node.vm.provider "virtualbox" do |vm|
        vm.name = name
        vm.customize ["modifyvm", :id, "--memory", "2048"]
      end
      node.vm.box = "centos/7"
      node.vm.hostname = name
      node.vm.network "private_network", ip: "192.168.33.4#{no}"
      node.vm.provision "shell", inline: "sudo systemctl stop firewalld"
      node.vm.provision "shell", inline: "sudo systemctl disable firewalld"
      node.vm.provision "shell", inline: "sudo systemctl restart network"
    end
  end
end
```

起動します。

```
vagrant up node1 node2 node3 node4
```

ローカルから公開鍵でログインしたい場合の設定はお好みで。

```
vagrant ssh-config >> ~/.ssh/config
```


## Mesosのインストール

**すべてのマシン**(node1-node4)で以下のコマンドを実行してMesosをインストールします。
今回はCentOS7に、Mesos1.5.0をインストールします。Ubuntuなどを利用する場合は、以下参照してください。
https://open.mesosphere.com/downloads/mesos/

```
curl -O http://repos.mesosphere.com/el/7/x86_64/RPMS/mesos-1.5.0-2.0.1.el7.x86_64.rpm
sudo yum install -y mesos-1.5.0-2.0.1.el7.x86_64.rpm
```

これだけで終わりです。


## Mesosマスタの設定と起動

`node1`〜`node4`にMesosインストールが完了したら、
Mesosマスタから設定していきます。
この作業は`node1`で実施します。

基本的には`/etc/default/mesos`（マスタとスレーブで共通的な設定）、`/etc/default/mesos-master`（マスタの設定）を設定します。

詳しい設定については、以下を参照してください。
http://mesos.apache.org/documentation/latest/configuration/

* `/etc/default/mesos`

```/etc/default/mesos
LOGS=/var/log/mesos
ULIMIT="-n 8192"
IP=node1のIP
```

* `/etc/default/mesos-master`

```/etc/default/mesos-master
PORT=5050

# Zookeeperを使わないようにコメントアウトしています。
# ZK=`cat /etc/mesos/zk`

# WebUIに表示されるMesosクラスタ名
CLUSTER="Trial Env"
```

設定完了したら、起動します。
ついでに`node1`ではマスタのみ自動起動して、スレーブは自動起動しないように設定しておきます。

```
sudo systemctl start mesos-master

sudo systemctl enable mesos-master
sudo systemctl disable mesos-slave
```

この状態でMesosのUIにアクセスできればOKです。
http://[node1のIP]:5050

<img width="1190" alt="MesosUI1.png" src="https://qiita-image-store.s3.amazonaws.com/0/203061/edb44030-9ba9-2a77-1d32-53ddcfdf846a.png">



## Mesosスレーブの設定と起動

Mesosスレーブを設定していきます。
この作業は`node2`,`node3`,`node4`で実施します。

`/etc/default/mesos`（マスタとスレーブで共通的な設定）、`/etc/default/mesos-slave`（スレーブの設定）を設定します。

詳しい設定については、以下を参照してください。
http://mesos.apache.org/documentation/latest/configuration/

* `/etc/default/mesos`

```/etc/default/mesos
LOGS=/var/log/mesos
ULIMIT="-n 8192"
IP=各マシンのIP
```

* `/etc/default/mesos-slave`

```/etc/default/mesos-slave
MASTER=node1のIP:5050
```

設定完了したら、起動します。
ついでに`node2`,`node3`,`node4`ではスレーブのみ自動起動して、マスタは自動起動しないように設定しておきます。

```
sudo systemctl start mesos-slave

sudo systemctl enable mesos-slave
sudo systemctl disable mesos-master
```

この状態でMesosのUIにアクセスして、Agentタブから`node2`,`node3`,`node4`が確認できればOKです。

<img width="1184" alt="MesosUI.png" src="https://qiita-image-store.s3.amazonaws.com/0/203061/27dc833c-7cee-6e4f-25e2-7644f226ff53.png">

ここで構築したMesosクラスタとSparkを連携してみる手順は、以下をご参照ください。

[SparkをインストールしてMesosクラスタと疎通確認するまでの手順]
https://qiita.com/48hands/items/375993c042eb03e05e77