Docker容器与虚拟化技术——Apache Mesos

                                                      Apache Mesos

一、Apache Mesos概述
1、工作原理
    mesos采用了master/slave结构来假话设计,将master做的尽可能轻量级,仅保存了各种计算框架(Framwork)和mesos slave信息,这些状态很容易在mesos出现故障时被重构,除此之外mesos还可以使用zookeeper解决单点故障问题
    mesos master充当全局资源调度器角色,采用某种策略算法将某个slave上的空闲资源分配给某个framework,而各种framework则是通过自己的调度器向master注册进行接入。slave则是手机任务状态和启动各个framework的executor。

2、基本术语
(1)Mesos master:负责管理各个Framework和Slave,并将Slave上的资源分配给各个Framework
(2)Mesos Slave:负责管理本节点上的各个Mesos Task,为各个Executor分配资源(负责汇报本节点上的资源给 master,并负责隔离资源并执行具体的任务)
(3)Framework:计算框架,如:Hadoop、Spark等,可以通过MesosSchedulerDiver接入Mesos(framework 是实际干活的,可以理解为 mesos 上跑的应用,需要注册到 master 上)
①scheduler:注册到主节点,按照作业分解为任务,并申请资源并监控任务运行状况
②executor:安装在 slave 节点上,负责执行本 framework 的具体任务

二、Apache Mesos配置
1、准备服务器环境
    准备5台centos7,关闭防火墙及selinux,修改计算机名并配置hosts文件
    Master:安装jdk、mesos、zookeeper、marathon
    Slave:安装jdk、mesos、docker

2、单台mast及slave配置
(1)Mesos Master
①安装jdk(注意最后的环境变量设置)
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
②安装mesos
1)配置yum源
rpm -Uvh http://repos.mesosphere.io/el/7/noarch/RPMS/mesosphere-el-repo-7-3.noarch.rpm
2)安装mesos
yum -y install mesos
systemctl disable mesos-master
systemctl disable mesos-slave
③简配启动Mesos Master
mesos-master --work_dir=/home/mesos/data --log_dir=/home/mesos/logs --no-hostname_lookup --ip=0.0.0.0
(2)Mesos Slave
①安装docker及mesos
wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce-18.09.6
②安装mesos并启动
mesos-slave --containerizers="mesos,docker" --work_dir=/home/mesos/data --log_dir=/home/mesos/logs --master=192.168.100.11:5050 --no-hostname_lookup --ip=0.0.0.0

3、单台mesos-master配置zookeeper
    ZooKeeper是一个开源的分布式应用程序协调服务,可以为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
    它的目标就是将复杂易出错的关键服务进行封装,提供给用户性能高效、功能稳定、简单易用的系统
(1)下载ZooKeeper后,只需要将配置文件模板改名即可使用
下载地址:http://mirrors.cnnic.cn/apache/zookeeper/
配置文件:mv zoo_sample.cfg zoo.cfg
(2)启动服务
./bin/zkServer.sh start conf/zoo.cfg
单机模式处于standalone状态
(3)测试连接
./bin/zkCli.sh
(4)运行mesoso-master及slave
mesos-master --work_dir=/home/mesos/data --log_dir=/home/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://192.168.11.52:2181/mesos --quorum=2
mesos-slave --containerizers="mesos,docker" --work_dir=/home/mesos/data --log_dir=/home/mesos/logs --master=zk://192.168.11.52:2181/mesos --no-hostname_lookup --ip=0.0.0.0
①--zk:ZooKeeper地址,用于leader选举,指定zk端口号
②--zk_session_timeout:根据网络环境调整zk session超时时间(默认10s)
③--quorum:master replica logs多写数量,多master场景下此值要超过master数量的一半
④--credential:提供秘钥对,介入集群时用于验证

4、配置多mesos-master环境
(1)所有master节点安装zookeeper
(2)配置zookeeper
dataDir=/usr/local/zookeeper-3.4.14/data
dataLogDir=/usr/local/zookeeper-3.4.14/datalog
server.1=192.168.11.52:2888:3888
server.2=192.168.11.54:2888:3888
server.3=192.168.11.55:2888:3888
2888:服务器交换信息的端口
3888:leader选举所用端口
(3)创建data、datalog目录及myid文件
mkdir /usr/local/zookeeper-3.4.14/data
dataLogDir=/usr/local/zookeeper-3.4.14/datalog
echo 1 > /usr/local/zookeeper-3.4.14/data/myid
(4)启动zookeeper服务
./zkServer.sh start /conf/zoo.cfg
(5)查看状态:zkServer.sh status
(6)启动mesos-master
mesos-master --work_dir=/home/mesos/data --log_dir=/home/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://192.168.11.52:2181/mesos --quorum=2
(7)启动mesos-slave
mesos-slave --containerizers="mesos,docker" --work_dir=/home/mesos/data --log_dir=/home/mesos/logs --master=zk://192.168.11.52:2181,192.168.11.54:2181,192.168.11.55:2181/mesos --no-hostname_lookup --ip=0.0.0.0
(8)其他配置参数
--vhitelist:master参数,白名单,用来限制task调度
--authenticate:master参数,开启接入认证,一旦开启,无证书的slave将无法接入
--credentials:master参数,搭配--authenticate。提供秘钥对
--roles:master参数,定义整个mesos中的角色,用于资源分配
--resources:slave参数,针对master预定义的roles,用于声明静态资源,比如/cpu/mem/disk/port等

5、mesos其他配置方式
(1)配置文件(etc下mesos、mesos-master及mesos-slave目录内)
按照启动项的名称创建文件名,将值写入文件内即可
(2)默认设置(/etc/default下mesos、mesos-master及mesos-slave文件)
默认配置项写入三个文件内

6、部署运行Marathon
(1)安装及运行
①下载安装
http://mesosphere.github.io/marathon/
将marathon安装到master主机上
②启动
marathon --hostname 192.168.11.52 --master zk://192.168.11.52:2181,192.168.11.54:2181,192.168.11.55:2181/mesos --http_address 0.0.0.0
③浏览器访问192.168.11.52:8080
(2)创建测试任务

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章