參考資料:
官方文檔:http://mesos.apache.org/documentation
中文翻譯:http://mesos.mydoc.io/
GitHub:https://github.com/apache/mesos/tree/master
董的博客:http://dongxicheng.org/category/apache-mesos/
安裝
下載mesos
參考:http://mesos.apache.org/documentation/latest/getting-started/
下載最新版本:mesos-1.0.0,版本要求:
- 64位linux操作系統
- 內核版本大於3.10 版本
- gcc版本大於4.8.1
安裝依賴
- 安裝wget/tar
- 獲取maven的repo:
- wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
- 安裝epel repo(安裝SVN必須):
- yum install -y epel-release
-
添加SVN repo:
-
在/etc/yum.repos.d/wandisco-svn.repo文件里添加:
[WANdiscoSVN]
name=WANdisco SVN Repo 1.9
enabled=1
baseurl=http://opensource.wandisco.com/centos/7/svn-1.9/RPMS//
gpgcheck=1
gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
-
-
更新systemd:
- yum update systemd
-
安裝development tools
- yum groupinstall -y "Development Tools"
-
安裝mesos依賴
- sudo yum install -y apache-maven python-devel 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
編譯
cd mesos
mkdir build
cd build
../configure
make(可以使用make -j N加快編譯速度,不然編譯時間非常長)
make check
make install
配置
默認make install會安裝到/user/local/sbin底下,配置文件在/usr/local/etc底下,在這兩個目錄下,會有一些文件跟master/agent相關
mesos-master
- mesos-start-masters.sh:用於SSH登錄到各個master並且進行start操作,如果單機執行,只需注釋跟SSH相關操作(直接通過daemon mesos-master啟動)
- mesos-stop-master.sh:用於SSH登錄到各個master,並且進行stop操作,如果單機執行,只需注釋SSH相關操作(直接執行killall mesos-master)
- mesos-daemon.sh:用於啟動mesos daemon,默認會執行一些動作(設置ulimit -n以及啟動對應的環境變量設置/usr/local/etc/PROCNAME-env.sh)
- mesos-agent實際的二進制文件,可以通過--help來查看對應參數,參數參考:http://mesos.apache.org/documentation/latest/configuration/
-
/usr/local/etc/mesos/mesos-master-env.sh:設置mesos環境變量,變量命名規則為MESOS_參數,其中{參數}為mesos-master --help中的參數,設置如下:
export MESOS_log_dir=/var/log/mesos/master # 設置日志目錄 export MESOS_work_dir=/var/run/mesos/master # 設置work目錄,會存放一些運行信息 export MESOS_ip=127.0.0.1 # 設置IP # export MESOS_port=5050 # 設置PORT,默認是5050 export MESOS_CLUSTER=mesos_test_cluster1 # 設置集群名稱 export MESOS_hostname=127.0.0.1 # 設置master hostname export MESOS_logging_level=INFO # 設置日志級別 export MESOS_offer_timeout=60secs # 設置offer的超時時間 # export MESOS_agent_ping_timeout=15 # 設置ping 超時時間,默認15s # export MESOS_allocation_interval=1 # 設置資源 allocation間隔,默認1s
注意:offer_timeout非常關鍵,默認是不超時,如果一個offer發給scheduler后scheduler不做任何處理(acceptOffers或者declineOffer),那么這個offer一直會被這個scheduler給占用了,直到scheduler自己結束進程或者退出注冊。所以offer_timeout一般要設置,用於防止由於scheduler自身的問題(偶發性hang住,或者程序問題沒有處理offer)導致資源無法利用
mesos-agent
- mesos-start-agent.sh:用於SSH登錄到各個agent並且進行start操作,如果單機執行,只需注釋跟SSH相關操作(直接通過daemon mesos-agent啟動)
- mesos-stop-agent.sh:用於SSH登錄到各個agent,並且進行stop操作,如果單機執行,只需注釋SSH相關操作(直接執行killall mesos-agent)
- mesos-daemon.sh:用於啟動mesos daemon,默認會執行一些動作(設置ulimit -n以及啟動對應的環境變量設置/usr/local/etc/PROCNAME-env.sh)
- mesos-agent實際的二進制文件,可以通過--help來查看對應參數,參數參考:http://mesos.apache.org/documentation/latest/configuration/
-
/usr/local/etc/mesos/mesos-agent-env.sh:設置mesos-agent環境變量,變量命名規則為MESOS_參數,其中{參數}為mesos-agent --help中的參數,設置如下:
# The mesos master URL to contact. Should be host:port for # non-ZooKeeper based masters, otherwise a zk:// or file:// URL. export MESOS_master=172.24.133.164:5050 # Other options you're likely to want to set: export MESOS_ip=172.24.133.164 export MESOS_port=5051 export MESOS_hostname=mesos_cl_agent164 export MESOS_log_dir=/var/log/mesos/agent export MESOS_work_dir=/var/run/mesos/agent export MESOS_logging_level=INFO export MESOS_isolation=cgroups
啟動
mesos-master
- 執行sh mesos-start-masters.sh
- ps aux | grep mesos-master 能看到master進程
- netstat -nltp | grep mesos,能看到master已經綁定5050端口
- 查看http://127.0.0.1:5050,可以看到當前mesos集群的一些狀態

mesos-agent
- 執行sh mesos-start-agents.sh
- ps aux | grep mesos-agent 能看到agent進程
- netstat -nltp | grep mesos,能看到agent已經綁定5051端口
- 查看http://127.0.0.1:5050,可以看到當前mesos集群的一些狀態,同時看到對應的agent

測試Framework
-
執行mesos自帶的測試framework(測試framework會自動任務執行結束后自動退出)
# Run C++ framework (Exits after successfully running some tasks.). $ ./src/test-framework --master=127.0.0.1:5050 # Run Java framework (Exits after successfully running some tasks.). $ ./src/examples/java/test-framework 127.0.0.1:5050 # Run Python framework (Exits after successfully running some tasks.). $ ./src/examples/python/test-framework 127.0.0.1:5050
-
查看http://127.0.0.1:5050,可以看到framework信息和framework執行的task信息