Mesosを仕事で使う機会があったのでインストール方法を残しておきます。
インストールバージョンは現時点の最新版v1.5.0(2018.5.9時点)です。
(最終的には、SparkとCassandraとMesosを組み合わせてどうにかしようとしている)
公式の手順を参考にしながらやってみました。
- CentOS Linux release 7.3.1611 (Core)
- メモリ: 4GB
- CPU: 1Core
- Vagrantで構築。
- 注意事項として、メモリが少ないとMesosのビルドでこけます。
- Mesos 1.5.0 (2018.2)
- 公式: http://mesos.apache.org/documentation/latest/building/
Mesosビルドのためのパッケージインストール
sudo yum -y install git
sudo curl -Lo /etc/yum.repos.d/epel-apache-maven.repo http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo
sudo yum install -y epel-release
sudo bash -c 'cat > /etc/yum.repos.d/wandisco-svn.repo <<EOF
[WANdiscoSVN]
name=WANdisco SVN Repo 1.9
enabled=1
baseurl=http://opensource.wandisco.com/centos/7/svn-1.9/RPMS/\$basearch/
gpgcheck=1
gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
EOF'
sudo yum groupinstall -y "Development Tools"
sudo yum install -y apache-maven python-devel python-six python-virtualenv java-1.8.0-openjdk-devel zlib-devel libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 apr-devel subversion-devel apr-util-devel
sudo yum install -y python-pip
sudo pip install --upgrade pytz
Mesos 1.5.0のダウンロードとビルド
curl -o ~/mesos-1.5.0.tar.gz http://archive.apache.org/dist/mesos/1.5.0/mesos-1.5.0.tar.gz
tar xvfz ~/mesos-1.5.0.tar.gz -C ~/
cd ~/mesos-1.5.0
mkdir build
cd build
../configure
make
sudo make install
makeはとっても時間がかかる。手元のローカル環境だと1時間以上はかかります。
また、メモリが少ないと途中で失敗します。
sudo make install
後、/usr/local/sbin
配下にmesosの資材ができていることを確認しておきます。
$ ll /usr/local/sbin/ | grep mesos
-rwxr-xr-x. 1 root root 2456352 5月 9 17:53 mesos-agent
-rwxr-xr-x. 1 root root 406 5月 9 17:53 mesos-daemon.sh
-rwxr-xr-x. 1 root root 2385928 5月 9 17:53 mesos-master
lrwxrwxrwx. 1 root root 11 5月 9 17:53 mesos-slave -> mesos-agent
-rwxr-xr-x. 1 root root 1349 5月 9 17:53 mesos-start-agents.sh
-rwxr-xr-x. 1 root root 888 5月 9 17:53 mesos-start-cluster.sh
-rwxr-xr-x. 1 root root 1366 5月 9 17:53 mesos-start-masters.sh
-rwxr-xr-x. 1 root root 1349 5月 9 17:53 mesos-start-slaves.sh
-rwxr-xr-x. 1 root root 1185 5月 9 17:53 mesos-stop-agents.sh
-rwxr-xr-x. 1 root root 635 5月 9 17:53 mesos-stop-cluster.sh
-rwxr-xr-x. 1 root root 1200 5月 9 17:53 mesos-stop-masters.sh
-rwxr-xr-x. 1 root root 1185 5月 9 17:53 mesos-stop-slaves.sh
ディレクトリ作成
sudo mkdir /var/lib/mesos
Mesos Master/Agentの起動
Mesos masterの起動
sudo su -
mesos-master --ip=127.0.0.1 --work_dir=/var/lib/mesos
Mesos agentの起動
sudo su -
mesos-agent --master=127.0.0.1:5050 --work_dir=/var/lib/mesos
http://127.0.0.1:5050
にアクセスしてMaster,Agentが確認できればOKです。
付属のサンプルアプリで動作確認
ビルド時に利用したフォルダにpythonサンプルアプリがあるので、Mesosで動作するか確認しておきます。(他にもJavaアプリなどがあるのですが、手元の環境ではjarが無いとかで動かなかった..)
cd ~/mesos/build
# Run Python framework
./src/examples/python/test-framework 127.0.0.1:5050
サービス登録
/etc/systemd/system
の下にUnit定義ファイルを作成します。
作成するファイルは以下の2つ。
それぞれMesos masterとMesos agent用になります。
/etc/systemd/system/mesos-master.service
/etc/systemd/system/mesos-agent.service
[Unit]
Description = Mesos master daemon
[Service]
ExecStart = /usr/local/sbin/mesos-master --ip=127.0.0.1 --work_dir=/var/lib/mesos
Restart = always
Type = simple
[Install]
WantedBy = multi-user.target
[Unit]
Description = Mesos agent daemon
[Service]
ExecStart = /usr/local/sbin/mesos-agent --master=127.0.0.1:5050 --work_dir=/var/lib/mesos
Restart = always
Type = simple
[Install]
WantedBy = multi-user.target
/etc/systemd/system/mesos-agent.service
の--master=127.0.0.1:5050
のIP部分は必要に応じて変更してください。
今回は同一サーバ上でmasterとagentを起動する設定のため、上記の設定にしています。
サービスとして認識されたか確認する。
$ sudo systemctl list-unit-files --type=service | grep mesos
mesos-agent.service disabled
mesos-master.service disabled
サービスとして起動
サービスの自動起動On設定とサービス起動
sudo systemctl enable mesos-master
sudo systemctl enable mesos-agent
# Start Mesos master
sudo systemctl start mesos-master
# Start Mesos agent
sudo systemctl start mesos-agent
起動状態の確認
sudo systemctl status mesos-master
sudo systemctl status mesos-agent
起動状態が確認できればOKです。