注意事项: 编译过程如果有错误提示少什么库,则相应的安装库即可
在编译中出现 g++: internal compiler error: Killed (program cc1plus)的错误是因为内存不足,我在虚拟机中编译的,所以把内存提升到3G,
然后在make的时候-j 1即可,或者不用-j参数
1. 下载源码
$ wget http://www.apache.org/dist/mesos/0.28.2/mesos-0.28.2.tar.gz
$ tar -zxvf mesos-0.28.2.tar.gz
2. 准备编译环境
# Update the packages.
$ sudo apt-get update
# Install a few utility tools.
$ sudo apt-get install -y tar wget git
# Install the latest OpenJDK.
$ sudo apt-get install -y openjdk-7-jdk
或者直接下载jdk,然后指定JAVA_HOME和PATH
# Install autotools (Only necessary if building from git repository).
$ sudo apt-get install -y autoconf libtool
# Install other Mesos dependencies.
$ sudo apt-get -y install build-essential python-dev libcurl4-nss-dev libsasl2-dev libsasl2-modules maven libapr1-dev libsvn-dev
3. 编译
# Change working directory.
$ cd mesos
# Bootstrap (Only required if building from git repository).
$ ./bootstrap
# Configure and build.
$ mkdir build
$ cd build
$ ../configure --prefix=/home/xxx/mesos
$ make V=0
# Run test suite.
$ make check
# Install (Optional).
$ make install
更全面的内容参考 http://mesos.apache.org/gettingstarted/
mesos集群部署
我这里准备了两台机器,分别为node1,node2,在node1上启动master和slave,node2上启动slave
1. /etc/hosts里必须将node1,node2与ip地址对应起来,node1与node2上都需要修改/etc/hosts
2. 在mesos的安装目录,比如我这里的/home/xxx/mesos,进入etc/mesos目录,分别配置mesos-master-env和mesos-agent-env,我的配置文件如下:
mesos-master-env.sh on node1
export MESOS_log_dir=/home/xxx/mesos/log
export MESOS_work_dir=/home/xxx/mesos/work_dir //必须项
mesos-agent-env.sh on node1,node2
export MESOS_master=node1:5050 //必须项
export MESOS_log_dir=/home/xxx/mesos/log
export MESOS_work_dir=/home/xxx/mesos/work_dir //必须项
export MESOS_resources='cpus:2;mem:2048' // mesos默认会将系统内存分出1g(50%)来支持mesos本身的运行,考虑我虚拟机内存不足,于是手动设置内存
如果想单独启动master和各个机器上的slave,这样的配置就可以了
启动master : sbin/mesos-daemon mesos-master
启动slave : sbin/mesos-daemon mesos-agent
但是这样比较麻烦,另外一种方式是直接在node1上启动所有的master和slave
首先需要配置ssh,保证node1,node2之间ssh访问不需要密码
然后在/etc/mesos目录下创建 masters和slaves文件
masters文件里存放master节点的机器名,我这里是node1
slaves文件里存放的是slave节点的机器名,我这里是node1 node2,一个节点一行
启动masters : /sbin/mesos-start-masters.sh
启动agents: /sbin/mesos-start-slaves.sh
默认masters和agents的启动log都被直接隐藏了,如果想查看失败原因,可以找到mesos-start-slaves.sh和mesos-daemon.sh,注释掉 <dev/null >dev/null 2>&1 即可,这样就会输出log到屏幕了
注意:有时候在关掉agent之后重新启动会发现agent没有启动,是因为提交agent的时候,master认为该agent刚被移除,于是拒绝接受,在重新启动一次agent即可