目录

Zookeeper

Zookeeper安装配置

Zookeeper安装

Zookeeper配置

zookeeper启动

Mesos

Mesos实现原理

Mesos 安装配置

Mesos 安装

Mesos的配置

Mesos启动

Mesos验证

Marathon

Marathon_lb

集群结构

Marathon安装配置

Marathon安装

Marathon启动

Marathon配置

Marathon 验证

Marathon_lb安装配置

Docker

准备docker-tomcat镜像

构建dockerfile

基于dockerfile构建新的镜像

基于Marathon发布Task


Zookeeper

Zookeeper安装配置

Zookeeper安装

上传zookeeper安装包直接解压即可.

zookeeper目录:/data/zookeeper

Zookeeper配置

  • 生成zoo.cfg配置文件
cd /data/zookeeper/confmv zoo_sample.cfg zoo.cfg
  • 修改zoo.cfg如下

参数说明

tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。

initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。

  • 创建zookeeper日志目录
mkdir –p /home/ycm/zookeeper/log
  • 创建myid文件指定集群中该serverid
cd  /home/ycm/zookeeper/datatouch myid

参照以上信息分别编辑3台服务器myid文件内容为1,2,3。

zookeeper启动

cd /data/zookeeper/bin./zkServer.sh start

./zkServer.sh status    //查看当前服务角色

Mesos

Mesos实现原理

分布式资源管理框架

(1)    Mesos-master:Mesos master,主要负责管理各个framework和slave,并将slave上的资源分配给各个framework

(2)    Mesos-slave:Mesos slave,负责管理本节点上的各个mesos-task,比如:为各个executor分配资源

(3)    Framework:计算框架,如:Hadoop,Spark等,通过MesosSchedulerDiver接入Mesos

(4)    Executor:执行器,安装到mesos-slave上,用于启动计算框架中的task。

当用户试图添加一种新的计算框架到Mesos中时,需要实现一个Framework scheduler和executor以接入Mesos。

Mesos实现了一个两层的调度系统:Mesos slave将它的可用资源汇报给master,然后master通过可插拔的分配模块(Allocation module)向Framework的schedule发出资源邀约,这个schedule可以接受整个、部分或者拒绝这个资源邀约。如下图所示:

  1. Agent 1 reports to the master that it has 4 CPUs and 4 GB of memory free. The master then invokes the allocation policy module, which tells it that framework 1 should be offered all available resources.
  2. The master sends a resource offer describing what is available on agent 1 to framework 1.
  3. The framework’s scheduler replies to the master with information about two tasks to run on the agent, using <2 CPUs, 1 GB RAM> for the first task, and <1 CPUs, 2 GB RAM> for the second task.
  4. Finally, the master sends the tasks to the agent, which allocates appropriate resources to the framework’s executor, which in turn launches the two tasks (depicted with dotted-line borders in the figure). Because 1 CPU and 1 GB of RAM are still unallocated, the allocation module may now offer them to framework 2.

Allocation Module:资源分配模块,采用DRF(主导资源公平算法 Dominant Resource Fairness)算法。

假设我们有一个资源邀约,包含<9CPU,18GB RAM>。Framework1 运行任务需<1CPU,4GB RAM>,Framework2 运行任务需要<3CPU,1GB RAM>。

Framework1 的每个任务会消耗CPU总数的1/9、内存总数的2/9,因此Framework1 的主导资源是内存。同样,Framework2 的每个任务会CPU总数的1/3、内存总数的1/18,因此Framework2 的主导资源是CPU。

DRF分配模块跟踪分配给每个Framework的资源和每个框架的主导份额。每次,DRF以所有Framework中运行的任务中最低的主导份额作为资源邀约发送给Framework。如果有足够的可用资源来运行它的任务,Framework将接受这个邀约。

Mesos默认提供了几种方法来对资源分配进行调整,而不需要替换或者重写整个分配模块。这些方法包括角色,权重和资源保留 。

角色:--roles="web,mysql,hadoop"权重:--weights="web=10,mysql=20,hadoop=30"资源保留:--resources="cpus(mysql):8; mem(mysql):16384; disk(mysql):65536"

Mesos 安装配置

Mesos 安装

  • 安装development tools
yum groupinstall -y "Development Tools"
  • 安装mesos依赖
sudo yum install -y apache-maven python-devel java-1.8.0-openjdk-devel zlib-devel libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 apr-devel subversion-devel apr-util-devel
  • 安装mesos

mesos安装包目录:/data/mesos-1.2

cd /data/mesos-1.2mkdir build && cd buildexport JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64../configuremake –j 6make install –j 6

Mesos的配置

设置mesos集群节点分布情况

创建masters和slaves文件,用于标记集群master和slave节点分布。

cd /usr/local/etc/mesos
  • 修改masters文件
touch masters

  • 修改slaves文件
touch slaves

  • 修改3台主机mesos环境信息
cd /usr/local/etc/mesoscat mesos-master-env.sh.template > mesos-master-env.shcat mesos-slave-env.sh.template > mesos-slave-env.shcat mesos-deploy-env.sh.template > mesos-deploy-env.sh
  • 修改mesos-master-env.sh

  • 修改mesos-slave-env.sh

Mesos启动

cd /usr/local/sbin./mesos-start-cluster.sh

或分别启动(3台机器分别执行,替换红色字体主机地址)

cd /usr/local/sbin
  • 启动master
nohup mesos-master --zk=zk://172.20.4.238:2181,172.20.4.239:2181,172.20.4.244:2181/mesos --port=5050 --hostname=172.20.4.238 --quorum=2 --registry=replicated_log --work_dir=/usr/local/etc/mesos/master &
  • 启动slave
先执行rm -f /usr/local/etc/mesos/slave/meta/slaves/latest(对应mesos-slave  work_dir,This ensures agent doesn't recover old live executors.)nohup mesos-agent --containerizers=docker,mesos --resources="ports(*):[8000-9000, 31000-32000]" --master=zk://172.20.4.238:2181,172.20.4.239:2181,172.20.4.244:2181/mesos --work_dir=/usr/local/etc/mesos/slave &

Mesos验证

http://172.20.4.238:5050

agent

Marathon

Marathon是一个成熟的,轻量级的,扩展性很强的Apache Mesos的容器编排框架,它主要用来调度和运行常驻服务(long-running service),提供了友好的界面和Rest API来创建和管理应用。

Marathon_lb

Marathon-lb是通过监测Marathon应用程序状态来管理HAProxy的工具。

Marathon-lb通过调用自身的marathon_lb.py 脚本,连接到Marathon API以检索所有正在运行的应用程序,根据检索的信息生成HAProxy配置并重新加载HAProxy。 每当应用程序状态有任何变化时,Marathon-lb就会使用最新的IP和端口号更新haproxy配置文件,并重新加载haproxy。 默认情况下,Marathon-lb会绑定到每个应用的服务端口,并将传入的请求发送到应用实例。

Marahon-lb安装以后,针对应用程序部署过程中,需要配置一个特殊标签HAPROXY_GROUP=external,这个标签通知 marathon-lb是否需要暴露这个应用。

集群结构

服务器

组件

172.20.4.238

mesos-master,mesos-slave,zookeeper,marathon,marathon_lb

172.20.4.239

mesos-master,mesos-slave,zookeeper,marathon

172.20.4.244

mesos-master,mesos-slave,zookeeper,marathon

注意事项:

关闭防火墙或开启对应端口;

关闭selinux

开放最大文件数 ulimit –n 65535

服务默认端口

应用

端口

zookeeper

2181

mesos-master

5050

mesos-salve

5051

marathon

8080

Marathon安装配置

Marathon安装

cd /datatar –zxvf marathon-1.4.0.tar.gz

Marathon启动

cd /data/marathon-1.4.0nohup ./bin/start --master zk://172.20.4.238:2181,172.20.4.239:2181,172.20.4.244:2181/mesos --zk zk://172.20.4.238:2181,172.20.4.239:2181,172.20.4.244:2181/marathon &

Marathon配置

  • 修改mesos-slave配置
echo 'docker,mesos' > /etc/mesos-slave/containerizersecho '5mins' > /etc/mesos-slave/executor_registration_timeout

Mesos的一个基础的组件称为containerizer。可以使用 –containerizers配置选项在Mesos slave上配置,目前包括两个containerizer:mesos和docker。mesos配置使用cgroups隔离和监视负载;docker配置调用Docker容器运行时,允许您在Mesos集群上启动已经编译好的镜像。

  • 重启mesos-slave
先执行rm -f /usr/local/etc/mesos/slave/meta/slaves/latest(对应mesos-slave  work_dir,This ensures agent doesn't recover old live executors.)
nohup mesos-agent --containerizers=docker,mesos --resources="ports(*):[8000-9000, 31000-32000]" --master=zk://172.20.4.238:2181,172.20.4.239:2181,172.20.4.244:2181/mesos --work_dir=/usr/local/etc/mesos/slave &

Marathon 验证

访问http://172.20.4.238:8080  (具体哪台marathon被选举为leader可以通过mesos控制台查看)

Marathon_lb安装配置

docker pull docker.io/mesosphere/marathon-lbdocker run -d --privileged -e PORTS=9090 --net=host docker.io/mesosphere/marathon-lb sse -m http://172.20.4.238:8080 -m http://172.20.4.239:8080 -m http://172.20.4.244:8080  --group externa

Docker

准备docker-tomcat镜像

基础镜像:centos7-X86_X64

docker run –ti –v /data/share:/mnt centos7-X86_X64 //创建容器,挂载共享盘,上传本地tomcat和jdk。docker commit –m “tomcat” container_id  tomcat01tomcat01/latest,已安装tomcat和jdk1.8。tomcat地址:/data/apache-tomcat-7.0.57jdk1.8地址:/data/jdk1.8.0_131

构建dockerfile

vi  dockerfileFROM tomcat01MAINTAINER wangzx3ENV JAVA_HOME /data/jdk1.8.0_131ENV JRE_HOME $JAVA_HOME/jre ENV CLASSPATH .:$JAVA_HOME/lib:$JRE_HOME/lib ENV PATH $PATH:$JAVA_HOME/binENV CATALINA_HOME /data/apache-tomcat-7.0.57#CMD ["/usr/sbin/init"]#RUN systemctl stop firewalld.service#CMD ["/data/apache-tomcat-7.0.57/bin/catalina.sh","run"]CMD /data/apache-tomcat-7.0.57/bin/catalina.sh run

基于dockerfile构建新的镜像

cd /data/docker   //dockerfile所在目录docker build –t tomcatnew .docker images //确认新的镜像tomcatnew创建结果。

注意:如果发布本地镜像,要确保镜像在所有mesos-slave节点上都存在。

基于Marathon发布Task

create application

create application创建

访问http://ssss5:31766 ,出现tomcat界面

mesos+marathon+docker相关推荐

  1. 云计算学习总结(1)——PaaS云平台部署之在Centos7搭建Mesos+Zookeeper+Marathon+Docker单机集群

    ----------------------------------------------------------------------------------- ========Mesos+Do ...

  2. 云计算学习总结(1)——PaaS云平台部署之在Centos7搭建Mesos+Zookeeper+Marathon+Docker单机集群...

    ----------------------------------------------------------------------------------- ========Mesos+Do ...

  3. Mesos + Marathon + Chronos + Docker环境安装

    背景信息 组网: OS:CentOS7 bigdata01:Mesos(master),Marathon,Chronos,ZooKeeper bigdata02:docker mesos(slave) ...

  4. docker+mesos+marathon

    鉴于原作者要求必须将原地址粘贴下 http://www.chuck-blog.com/chuck/368.html  前言 针对"互联网+"时代的业务增长.变化速度及大规模计算 ...

  5. 基于Docker搭建单机版Mesos/Marathon

    摘要: 本文介绍了基于Docker搭建单机版Mesos/Marathon的方法,Mesos/Marathon的所有组件均运行于单个容器中. GitHub地址: kiwenlau/single-meso ...

  6. Mesos+Marathon搭建部署

    实验环境 主机名 IP地址 运行服务 安装组件 mesos1 172.16.138.201 zookeeper mesos-master marathon mesos marathon mesosph ...

  7. Python项目容器化实践 - 编排方案: Mesos+Marathon

    在生产环境中不用 Docker Compose 如果想在生产中使用容器,应该选择 21云盒子來部署 为什么呐?其实也蛮好理解的: Docker Compose 是单机版的开发套件,类似于容器环境下的 ...

  8. kubernetes 对比 mesos + marathon

    1. 应用定义 k8s: 可以使用 Pod,部署和服务的组合来部署应用程序.一个 pod 是一组 位于同一节点的容器,是部署的原子单位.部署可以在多个节点上具有副本. 服务是容器工作负载的" ...

  9. 保姆级丨Mesos Marathon部署

    0x00 前言 Mesos是以与Linux内核同样的原则而创建的,不同点仅仅是在于抽象的层面.Mesos内核运行在每一个机器上,同时通过 API 为各种应用提供跨数据中心和云的资源管理调度能力.这些应 ...

最新文章

  1. html5 list css,使用HTML5的classList属性操做CSS类
  2. day38 css的4种引入方式
  3. [USACO17JAN]Promotion Counting 题解
  4. 面试重点:设计模式(三)——工厂方法
  5. 使用线性回归识别sklearn中的手写数字digit
  6. [php]php设计模式 Facade(外观模式)
  7. 刹车时到底要不要踩离合器?
  8. 如何才能成为一个高效工作的软件工程师?
  9. 190510每日一句
  10. c++中类的默认构造函数,析构函数,拷贝构造函数
  11. linux 双mipii摄像头,Toybrick-开源社区-TB-RK3399ProD-imx258摄像头 mipi 错误
  12. 驱动单片机硬件调试器的一些开源库总结(包含stlink调试器)
  13. cuteftp下载文件变成macintosh格式
  14. 用C语言输入半径求球体的体积
  15. Quartus II 无法正常编译bug解决
  16. 总结:xshell的一些使用技巧
  17. xctf攻防世界 MISC高手进阶区 MISCall
  18. CSS选择器(随笔)
  19. 链接元宇宙,开启新纪元
  20. Java字符串模板替换(模板渲染)

热门文章

  1. CAS单点登录原理解析及相关配置
  2. 总有你挂不完的环保吊牌GRS/RCS/SCS/OBP/OCS/GOTS/……
  3. USB驱动程序(较详细)三
  4. 2020-08-15 java 8 LocalDateTime 20 例(有更新)
  5. mileiq使用蓝牙提高驱动器质量
  6. 【ROS-Gazebo】将sdf文件转为urdf的方法
  7. 柏楚电子晶晨股份正式在科创板上市 柏楚电子开盘价高达217元
  8. 如何用数组存储信息JAVA_从零自学Java-7.使用数组存储信息
  9. 容颜易老,情比金坚--感怀于人生的短暂
  10. WIN10 能够正常上网,但是桌面右下角却显示小地球,导致笔记本无法开移动热点