mesos编译安装部署教程
一、编译步骤:
mesos版本:0.22.1
linux版本:3.13.0-59-generic#98-Ubuntu x64
1 下载源码包
wget http://www.apache.org/dist/mesos/0.23.0/mesos-0.23.0.tar.gz
2 安装依赖包
根据官网教程(http://mesos.apache.org/gettingstarted/)先安装依赖包
# Update the packages.
$ sudo apt-get update
# Install the latest OpenJDK.
$ sudo apt-get install -y openjdk-7-jdk
# Install autotools (Only necessary ifbuilding from git repository).
$ sudo apt-get install -y autoconf libtool
# Install other Mesos dependencies.
$ sudo apt-get -y installbuild-essential python-dev python-boto libcurl4- nss-dev libsasl2-dev mavenlibapr1-dev libsvn-dev
3 配置并编译
# Change working directory.
$ cd mesos
# Bootstrap (Only required if building fromgit repository).
$ ./bootstrap
# Configure and build.
$ mkdir build
$ cd build
$ ../configure --with-python-headers=/usr/include/python2.7 --with-java-home=$JAVA_HOME --with-java-headers=$JAVA_HOME/include--with-webui --with- included-zookeeper --prefix=/home/ndn/mascot/mesos_install
#注意配置的时候python要根据你系统的版本,prefix参数就是安装的路径,最好自己新建一个文件 夹,不要使用默认,默认的目录为/usr/local,如果默认安装的话会出现很多权限问题
$ make(可以加 -j <num>参数,num是cpu核的个数,这样可以减少编译的时间)
4 测试编译结果
编译好之后打开build/bin,使用下述命令启动mesos-master,以及附属的一个slave来检查是否编译成功
$ ./bin/mesos-master.sh--ip=127.0.0.1 --work_dir=/var/lib/mesos
# Start mesos slave.
$ ./bin/mesos-slave.sh--master=127.0.0.1:5050
在本机上访问如下地址$ http://127.0.0.1:5050,如果用浏览器访问上述网页成功,而且面中现实激活的节点为1个则说明编译成功了。
5 安装
虽然教程中安装只有一句命令“make install”,但是make install有时候会出现问题,比如:
Command python setup.py egg_info failed with error code 1 in /tmp/pip_build_ndn/protobuf
出现这个问题的原因是安装过程中会下载一些软件,这些数据被墙了,解决的方法是使用国内的源先把需 要软件安装了,针对上述问题,是pip被墙了,我使用清华的源: https://wiki.tuna.tsinghua.edu.cn/MirrorUsage/pypi修改源的步骤在上诉链接中给出了,我使用第一中方法,“临时使用源”。根据错误提示,被墙的包为 google-apputils和protobuf,那么我使用pip命令安装这两个软件如下:
sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple google-apputils
#没有安装pip请安装sudo apt-get install python-pip
sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple protobuf
上述步骤进行之后就可以不出错地安装了
make install
6 配置mesos集群
我有3台服务器
master(master) | 192.168.1.62 |
resourcemanager(slave) | 192.168.1.64 |
datanode1(slave) | 192.168.1.66 |
上述表格中ip和主机名的对应需要在/etc/hosts文件中注明
对于每台机器都做如下操作
打开安装的目录(之前configure中prefix参数),在etc/mesos中有三个文件,使用如下命令新 建3个文件:
cat mesos-master-env.sh.template> mesos-master-env.sh
cat mesos-slave-env.sh.template> mesos-slave-env.sh
cat mesos-deploy-env.sh.template> mesos-deploy-env.sh
然后新建两个文件:slaves,masters
masters内容如下
master
slaves内容如下
#一个slave一行
datanode1
datanode2
修改mesos-master-env.sh文件内容如下
#master日志目录
export MESOS_log_dir=/var/log/mesos
#master工作目录
export MESOS_work_dir=/var/lib/mesos
修改mesos-slave-env.sh文件内容如下
#MESOS_master参数必须设置
export MESOS_master=192.168.1.62:5050
#下面两个参数用来设置slave的工作目录和日志目录,值得注意的是这个目录最好在home目录下,因 为在其他目录下的时候会遇到权限问题,如果执行的时候没有权限slave就启动不起来,上面的 master配置也一样
export MESOS_log_dir=/home/ndn/mascot/mesos_install/log
export MESOS_work_dir=/home/ndn/mascot/mesos_install/run
mesos-deoply-env.sh不需要更改。
配置环境变量
更改~/.bashrc文件在最后一行添加如下:
export MESOS_HOME=/home/ndn/mascot/mesos_install
export PATH=${PATH}:${MESOS_HOME}/sbin:${MESOS_HOME}/bin
当上述配置都完成之后可以启动集群了,在任何一台配置好的服务器上都可以启动。6、启动集群
执行mesos-start-cluster.sh
执行这条命令有时候会启动失败,提示:
./mesos-daemon.sh: line 9: ulimit: open files: cannot modify limit:Operation not permitted
经过检查发现在mesos-daomon.sh 有一条ulimit -n 8192,这条指令是在向服务器索要资源,但是 通过ulimit -a查看可以看出-n为1024,系统要求这个数不能更大,因此把8192更改为1024即可。
再次启动:mesos-start-cluster.sh
查看每台机器,使用ps -e |grep mesos看每台机器上的mesos是否都启动了。
当所有的mesos都启动之后,浏览器访问http://192.168.1.62:5050如果看到如下界面就说明启 动成功了:
注,通过浏览器访问的时候有个bug,访问Sandbox的时候会提示访问不到主机,我的更正方法是在浏览器器所在主机上也修改/etc/hosts文件,加上master、resourcemanager、datanode1名字与ip的映射关
(系)