Apache Mesos是由加州大学伯克利分校的AMPLab首先开发的一款开源群集管理软件,支持Hadoop、ElasticSearch、Spark、Storm 和Kafka等应用架构。Mesos使用了与Linux内核类似的规则来构造,仅仅是不一样抽象层级的差异。Mesos从设备(物理机或虚拟机)抽取 CPU,内存,存储和其余计算资源,让容错和弹性分布式系统更容易使用。Mesos内核运行在每一个机器上,在整个数据中心和云环境内向应用程序(Hadoop、Spark、Kafka、Elastic Serarch等等)提供资源管理和资源负载的API接口。java
Apache Mesos采用了Master/Slave结构来简化设计,将Master作得尽可能轻量级,仅保存了各类计算框架(Framework)和Mesos Slave的状态信息,这些状态很容易在Mesos出现故障的时候被重构,除此以外Mesos还可使用Zookeeper解决Master单点故障。python
Mesos Master充当全局资源调度器角色,采用某种策略算法将某个Slave上的空闲资源分配给某个Framework,而各类Framework则是经过本身的调度器向Master注册进行接入。Mesos Slave则是经过收集任务状态和启动各个Framework的Executor。工做原理图以下。linux
本实验都是使用的CentOS7系统,由于Mesos配置最低要求内核为3.10以上。算法
[root@master ~]# uname -r 3.10.0-693.el7.x86_64
主机名 | IP地址 |
---|---|
master | 192.168.58.152 |
slave | 192.168.58.162 |
当前的Mesos支持三种语言编写的调度器,分别是C++、Java、Python,能够向不一样的调度器提供统一的接入方式docker
首先从官网上下载JDK软件包,地址为https://www.oracle.com/technetwork/java/,能够选择合适的版本下载,我这里使用的jdk-8u91-linux-x64.tar.gz。apache
[root@master ~]# tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/ #将jdk包解压到指定目录中 [root@master ~]# vim /etc/profile export JAVA_HOME=/usr/local/jdk1.8.0_91 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar [root@master ~]# source /etc/profile #将java添加到环境变量中,方便识别
[root@master ~]# yum groupinstall "Development tools" -y
安装完后,使用yum group list查看已经安装的工具组。vim
[root@master ~]# wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
[root@master ~]# yum install -y apache-maven python-devel zlib-devel libcurl-devel \ > openssl-devel cyrus-sasl-devel cyrus-sasl-md5 apr-devel apr-util-devel subversion-devel
[root@master ~]# vim /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/$basearch/ gpgcheck=1 gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
[root@master ~]# vim /etc/profile export MESOS_NATIVE_JAVA_LIBRARY=/usr/local/lib/libmesos.so export MESOS_NATIVE_LIBRARY=/usr/local/lib/libmesos.so [root@master ~]# source /etc/profile
[root@master ~]# wget http://archive.apache.org/dist/mesos/0.25.0/mesos-0.25.0.tar.gz #首先先下载mesos软件包 [root@master ~]# tar xf mesos-0.25.0 #将mesos软件包解压到当前目录 [root@master ~]# cd mesos-0.25.0/ #进入到解压完的目录中 [root@master mesos-0.25.0]# mkdir build/ #建立一个build目录,具体为何这么操做,参考http://mesos.mydoc.io/官方文档 [root@master mesos-0.25.0]# cd build/ [root@master build]# ../configure #进入到build目录中,注意是../configure,由于configure在上一层目录中 [root@master build]# make #注意这个环节时间特别长,要有耐心 [root@master build]# make check #make编译完后,进行测试,最后可能会有两个报错,不过不影响 [root@master build]# make install #最后就是安装
另外可能在make过程当中会有下图报错,那是因为网络缘由,致使部分文件没法下载,致使超时退出,将build目录下文件都删除,从新编译安装便可。
因为安装Mesos时间比较长,因此这里推荐安装一台,其余的都使用克隆,wmworkstation14的克隆十分方便,要善于利用。centos
Mesos-master负责维护slave群集的心跳,从slave中提取资源信息,配置以前应该先作好相应的解析工做。浏览器
[root@master ~]# hostnamectl set-hostname master #将本机的主机名改成master [root@master ~]# vim /etc/hosts 192.168.58.152 master 192.168.58.162 slave #在hosts文件中写入ip和主机名的对应关系 [root@master ~]# ping slave PING slave (192.168.58.162) 56(84) bytes of data. 64 bytes from slave (192.168.58.162): icmp_seq=1 ttl=64 time=0.262 ms ^C --- slave ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.262/0.262/0.262/0.000 ms #可使用主机名,直接ping通 [root@master ~]# ln -sf /root/mesos-0.25.0/build/bin/mesos-master.sh /usr/sbin/mesos-master #这是创建软连接,方便使用mesos的相关命令
配置启动Mesos-master服务器
[root@master ~]# mesos-master --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --no-hostname_lookup --ip=0.0.0.0 #--work-dir:运行期间数据的存放路径,包含sanbox、slave meta信息 #--log——dir:日志存放路径 #--no-hostname_lookup:是否从DNS获取主机名,这里是关闭这个功能,直接从本地hosts文件获取 #--ip:Mesos进程绑定的IP
配置完成后可使用浏览器访问本地的5050端口进行验证,记得关闭防火墙和SELinux。
vm14的克隆功能很强大,首先须要先关闭被克隆的虚拟机。
Mesos-slave负责接受并执行来自Mesos-master传递的任务以及监控任务状态,手机任务使用系统的状况,配置以前也要先作好相应的解析工做。
[root@slave ~]# hostnamectl set-hostname slave #将Mesos-slave服务器主机名改成slave [root@slave ~]# vim /etc/hosts 192.168.58.152 master 192.168.58.162 slave #和Mesos-master同样
Mesos 0.20.0 开始支持经过 Docker 镜像来启动任务,同时也支持部分的 Docker 参数。固然咱们计划在将来支持更多的参数。用户能够将 Docker 镜像做为一个任务启动,也能够做为一个 Executor 启动。为了运行支持 Docker 容器的 slave,在启动slave的时候,你必须将 " docker" 做为 Containerizer ( 容器化 )选项之一 。
[root@slave ~]# yum install docker -y #先安装docker服务 [root@slave ~]# systemctl start docker.service [root@slave ~]# systemctl enable docker.service #启动docker服务已经设置为开机启动
配置启动mesos-slave
[root@slave ~]# mesos-slave --containerizers="mesos,docker" --work_dir=/home/q/mesos/data \ > --log_dir=/home/q/mesos/logs --master=192.168.58.152:5050 --no-hostname_lookup --ip=0.0.0.0 #--containerizers 支持docker虚拟化的slave #--master:指定mesos-master地址及端口
运行后,刷新http://192.168.58.152:5050,能够看到有一个激活的mesos-slave。