Centos7安装Mesos

Apache Mesos官方文档只提供了源码安装方式,然而我尝试了几次,总是在某些阶段报错。而通过搜索引擎搜到的其他办法,也多少会遇到一些莫名其妙的错误。所以根据自己尝试的结果,整理了一个简单的方法。

1,添加yum仓库

rpm -Uvh http://repos.mesosphere.io/el/7/noarch/RPMS/mesosphere-el-repo-7-3.noarch.rpm

2,安装zookeeper

yum -y install mesosphere-zookeeper

如有现成zookeeper可以直接用,也可以自行从apache下载zookeeper。

3,安装mesos

yum -y install mesos

4,docker

yum -y install docker

如果如果不使用docker作为容器,可以不安装docker。

5,启动zookeeper

systemctl start zookeeper

通过yum安装的zookeeper自带默认配置文件,可以直接启动。

6,配置zookeeper地址

echo "zk://127.0.0.1:2181/mesos" > /etc/mesos/zk

用于master实现高可用和master与slave交互

7,配置master启动参数

//master工作路径,存储集群持久化信息的。如果不配,启动会报错。
//安装后已经自动配置为/var/lib/mesos
echo /var/lib/mesos/master > /etc/mesos-master/work_dir
//master集群保持高可用的最少实例数。通常设置为大于master实例数量的大多数且为基数,当前只有一个实例,所以配置为1。
//如果参数registry设置为in_memory,表示集群持久化信息存储在内存中,即standalone模式时,可以不配置,否则无法启动。
//安装后已经自动配置为1
echo 1 > /etc/mesos-master/quorum
//master监听地址,必须配置,否则其他机器无法连通
echo 172.18.21.192 > /etc/mesos-master/ip

8,启动mesos-master

systemctl start mesos-master

9,浏览器打开master地址http://192.168.2.151:5050,即可看到mesos web页面

10,配置slave启动参数

//slave支持的容器类型,可选mesos(基于LXC实现的资源隔离)和docker(需安装docker),默认mesos
echo docker,mesos > /etc/mesos-slave/containerizers
//slave的工作目录,用于executor保存sandboxe和故障转移检查点    
//安装后已经自动配置为/var/lib/mesos                                                            
echo /var/lib/mesos > /etc/mesos-slave/work_dir 

11,启动mesos-slave

systemctl start  mesos-slave 

12,此时可以在mesos web页面点击Agents,就可以看到mesos已经发现了slave。新版名字从slave改成了agent,但命令名字都没改,不知道为什么。

安装完成。

有几点补充:

1,如果配置了支持docker容器,必须安装dokcer,否则slave启动会报错。

2,如果zookeeper是集群,需要把zk地址配置为:

echo "zk://192.168.2.151:2181,192.168.2.152:2181,192.168.2.153:2181/mesos" > /etc/mesos/zk

3,要搭建master集群,只需把各个master节点配置相同的zookeeper地址,并把quorum设置为对应值,如有三个master节点,需要在每个机子上执行:

echo 2 > /etc/mesos-master/quorum

4,曾经遇到过master一直报slave丢失,猜测可能跟mesos版本或者操作系统网络配置有关,配置一下slave监听地址就解决了:

echo 192.168.2.151 > /etc/mesos-master/ip 

5,在某些操作系统使用systemctl启动slave可能会报错,可以直接使用命令启动。参数可以执行mesos-slave --help查看,master同理:

mesos-slave --master=zk://127.0.0.1:5050/mesos  --log_dir=/var/log/mesos --containerizers=docker,mesos --work_dir=/etc/mesos-slave/work_dir

6,实际上用systemctl命令启动服务,是通过/usr/bin/mesos-init-wrapper脚本读取配置文件,最终调用mesos-master或mesos-slave命令启动,详情可以查看脚本内容。

7,slave启动不了可以尝试执行rm -f /var/lib/mesos/meta/slaves/latest解决。

猜你喜欢

转载自my.oschina.net/u/1013857/blog/1594846