tangbinde 发表于 2018-11-17 09:14:21

在CentOS7上部署Apache Mesos

概述
  Apache Mesos是一款基于多资源(内存、磁盘、CPU、端口等)调度的开源集群管理套件,能使容错和分布式系统更加容易。

工作原理
  Apache Mesos采用了Master/Slave结构来简化设计,将Master做得尽可能轻量级,仅保存了各种计算框架(Framework)和Mesos Slave的状态信息,这些状态很容易在Mesos出现故障的时候被重构,除此之外Mesos还可以使用Zookeeper解决Master单点故障问题。
  Mesos Master充当全局资源调度器角色,采用某种策略算法将某个Slave上的 空闲资源分配给某个Framework,而各种Framework则是通过自己的调度器向Master注册进行接入。Mesos Master则是收集任务状态和启动各个Framework的Executor。工作原理如图所示:


Apache Mesos基本术语


[*]Mesos master:负责管理各个Framework和Slave,并将Slave上的资源分配给各个Framework。
[*]Mesos Slave:负责管理本节点上的各个Mesos Task,为各个Executor分配资源。
[*]Framework:计算框架,如:Hadoop、Spark等,可以通过MesosSchedulerDiver接入。
[*]Executor:执行器,在Master Slave上安装,用于启动计算框架中的Task。
实验要求
  1.必须使用CentOS7系统,需要内核为3.10及以上
  2.虚拟机内存必须是2GB及以上

实验环境表

主机名
IP地址
安装软件包
master
192.168.126.156
mesos-0.25.0.tar.gz;jdk-8u91-linux-x64.tar.gz
slave
192.168.126.160
mesos-0.25.0.tar.gz;jdk-8u91-linux-x64.tar.gz;docker
安装步骤
  1.配置Java环境
  

# tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/#解包  
# cd /usr/local/
  
# mv jdk1.8.0_91/ java   #重命名
  
# vim /etc/profile
  

  
export JAVA_HOME=/usr/local/java
  
export PATH=$JAVA_HOME/bin:$PATH

  
export>  
# source /etc/profile
  

  2.安装相关环境
  1)安装开发工具
  

# yum groupinstall -y "Development Tools"  

  2)添加apache-maven源,为Mesos提供项目管理和构建自动化工具的支持。
  

# wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo  

  3)安装相关依赖包
  

# 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  

  4)配置WANdiscoSVN网络源
  

# vim /etc/yum.repos.d/wandisco-svn.repo  
添加以下内容
  

  
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
  

  3.配置Mesos环境变量
  

# vim /etc/profile  
在行尾添加以下内容
  
export MESOS_NATIVE_JAVA_LIBRARY=/usr/local/lib/libmesos.so
  
export MESOS_NATIVE_LIBRARY=/usr/local/lib/libmesos.so
  
# source /etc/profile
  

  4.构建Mesos
  这里使用源编码方式编译安装Mesos
  

# wget http://www.apache.org/dist/mesos/0.25.0/mesos-0.25.0.tar.gz  
# tar zxvf mesos-0.25.0.tar.gz -C /opt/
  
# cd /opt/mesos-0.25.0/
  
# mkdir build
  
# cd build/
  
# ../configure
  
# make   #等待时间较长(网络在线状态)
  
# make install
  

  安装Mesos时间较长,故实验环境安装一台Mesos后其余克隆即可。

配置单台Mesos-Master与Mesos-Slave
  1.配置Mesos-master
  1)Mesos-master负责维护slave集群的心跳,从slave提取资源信息。配置之前应先做好相应的解析工作。
  

# hostnamectl set-hostname master#更改主机名称为master  
# init 6   #重启虚拟机
  
# vim /etc/hosts
  
192.168.126.156master
  
192.168.126.160 slave
  

  
# ln -sf /root/mesos-0.25.0/build/bin/mesos-master.sh /usr/sbin/mesos-master#建立软链接
  

  2)简配启动Mesos-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 :运行期数据存放路径,包含了sandbox、slave、meta等信息,建议修改。
  

  
--log_dir:Mesos日志存放路径,建议修改。
  

  
--no-hostname_lookup :是否从DNS获取主机名,本例中关闭了此配置,直接显示IP。
  

  
--ip :Mesos进程绑定的IP。
  

  3)配置完成后可以使用浏览器访问本地的5050端口进行验证,如图1所示:

  2.配置Mesos-Slave
  1)Mesos-Slave负责接收并执行来自Mesos-master传递的任务以及监控任务状态,收集任务使用系统的情况,配置之前也应先做好相应的解析工作。
  

# hostnamectl set-hostname slave#更改主机名称为master  
# init 6   #重启虚拟机
  
# vim /etc/hosts
  
192.168.126.156master
  
192.168.126.160 slave
  

  
# ln -sf /root/mesos-0.25.0/build/bin/mesos-slave.sh /usr/sbin/mesos-slave   #建立软链接
  

  2)在Mesos-Slave端安装并启动Docker容器
  

# yum install docker -y  
# systemctl start docker.service
  
# systemctl enable docker.service
  

  3)简配启动Mesos-Slave
  

# mesos-slave --containerizers="mesos,docker" --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --master=192.168.126.156:5050 --no-hostname_lookup --ip=0.0.0.0  

  4)关闭Mesos-master防火墙后使用浏览器再次对Master的5050端口进行验证,在Mesos Web页面左侧可以看到Slave的状态,如图1.1所示:

  5)点击菜单栏中的Slaves链接,可以查看到Slave主机的硬件信息与注册时间,如图1.2所示:

  3.单台Mesos-master配置ZooKeeper
  ZooKeeper是 一个开源的分布式应用程序协调服务,可以为分布式应用提供一致性服务软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
  ZooKeeper的目的就是将复杂易出错的关键服务进行封装,提供给用户性能高效、功能稳定、简单易用的系统。
  1)下载ZooKeeper后,只需要将配置文件模板进行改名即可使用。
  

# wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz  
# tar zxvf zookeeper-3.4.6.tar.gz -C /home/q/
  
# cd /home/q/zookeeper-3.4.6/
  
# mv conf/zoo_sample.cfg conf/zoo.cfg
  

  2)启动ZooKeeper服务
  

# ./bin/zkServer.sh start conf/zoo.cfg  
JMX enabled by default
  
Using config: conf/zoo.cfg
  
Starting zookeeper ... STARTED
  

  3)单机模式的ZooKeeper处于standalone状态
  

# ./bin/zkServer.sh status conf/zoo.cfg  
JMX enabled by default
  
Using config: conf/zoo.cfg
  
Mode: standalone
  

  4)在ZooKeeper服务启动以后,就可以使用ZooKeeper的客户端来连接测试。
  

# ./bin/zkCli.sh  
Connecting to localhost:2181
  
2018-08-15 22:16:03,625 - INFO - Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT
  
2018-08-15 22:16:03,631 - INFO - Client environment:host.name=master
  
.....//省略
  

  
ls /   #查看根节点
  

  

  4.后台运行Mesos-master与Mesos-slave
  ZooKeeper简称为zk,在整个Apache Mesos中,主要用来存储Mesos-master地址,方便Mesos-slave读取。当Mesos-slave从zk中获取地址后,可直接使用Mesos-master地址以及端口连接Mesos-master。
  1)nohup命令可以忽略所有挂断(SIGHUP)信号,作为后台程序运行Mesos-master与Mesos-slave。
  

# nohup mesos-master --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://192.168.126.163:2181/mesos --quorum=1 &>/dev/null &  
3272
  

配置参数:  
--zk :ZooKeeper地址,用于Leader选举。指定zk端口号
  

  
--zk_session_timeout :根据网络环境调整zk session超时时间(默认10s)。
  

  
--quorum :Master replica logs多写数量,多Master场景下此值要超过Master数量的一半。
  

  
--credential :提供密钥对,介入集群时用于验证。
  

  2)此时,Mesos-slave使用zk地址和端口号连接Mesos-master。
  

# nohup mesos-slave --containerizers="mesos,docker" --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs--master=zk://192.168.126.163:2181/mesos --no-hostname_lookup --ip=0.0.0.0 &>/dev/null &  
3996
  

  3)使用浏览器进行验证,如图1.3所示:



页: [1]
查看完整版本: 在CentOS7上部署Apache Mesos