文档章节

mesos + marathon + docker部署

张富贵
 张富贵
发布于 2015/11/17 17:44
字数 927
阅读 1193
收藏 14
点赞 0
评论 0

#mesos + marathon + docker部署

##架构设计 mesos + marathon均部署在CentOS7上,角色分配如下:

NameAddressOSRole
docker110.10.10.11CentOS7zookeeper、marathon、mesos-master、mesos-slave、docker server
docker210.10.10.12CentOS7zookeeper、mesos-slave、docker server

##环境准备 ###修改hosts 将下列内容添加到两台服务器的/etc/hosts/文件中

10.10.10.11 docker1
10.10.10.12 docker2

###安装依赖

wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel java-1.8.0-openjdk-headless
yum install -y apache-maven python-devel java-1.7.0-openjdk-devel zlib-devel libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 apr-devel subversion-devel apr-util-devel
yum groupinstall -y "Development Tools"

##zookeeper部署 ###zookeeper配置 一般情况下,建议zookeeper服务器数量为奇数,这里由于资源有限,用两台做演示。

在两台服务器上分别安装zookeeper在/usr/local/zookeeper-3.4.6目录下。

编辑配置文件/usr/local/zookeeper-3.4.6/conf/zoo.cfg,内容如下:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper-3.4.6/data
clientPort=2181
server.1=docker1:2888:3888
server.2=docker2:2888:3888

docker1上执行:

echo 1 > /usr/local/zookeeper-3.4.6/data/myid

docker2上执行:

echo 2 > /usr/local/zookeeper-3.4.6/data/myid

###启动zookeeper 在两台服务器上执行:

sh /usr/local/zookeeper-3.4.6/bin/zkServer.sh start

检查服务运行状态

/usr/local/zookeeper-3.4.6/bin/zkServer.sh status

##mesos部署 ###下载mesos

wget http://www.apache.org/dist/mesos/0.25.0/mesos-0.25.0.tar.gz
#解压:
tar -zxf mesos-0.25.0.tar.gz

###安装

cd /usr/local/mesos-0.25.0/
# Bootstrap
./bootstrap

# Configure and build.
mkdir build
cd build
../configure --with-webui --with-included-zookeeper
make
make install

###启动脚本

vim /usr/local/mesos-0.25.0/build/mesos.sh

添加下列内容:

#!/bin/bash
cd $(dirname $0)

lan_ip=输入本机IP地址

log_dir="/apps/mesos/logs"
work_dir="/apps/mesos/master"
master_log="/apps/mesos/mesos-master.log"
slave_log="/apps/mesos/mesos-slave.log"
if [ $# -eq 0 ];then
    echo 'Usage: mesos.sh {start-master|stop-master|restart-master|start-slave|stop-slave|restart-slave}'
    exit 110
fi
case $1 in
    start-master)
        ./bin/mesos-master.sh  --ip=$lan_ip --zk=zk://docker1:2181,docker2:2181/mesos   --work_dir=$work_dir  --log_dir=$log_dir --quorum=1  > $master_log 2>&1 &
        master_pid=`ps aux | grep mesos-master | grep -v grep | awk '{print $2}'`
        echo "masos-master is running, pid is $master_pid "
        ;;
    stop-master)
        master_pid=`ps aux | grep mesos-master | grep -v grep | awk '{print $2}'`
        kill $master_pid
        echo "masos-master is down"
        ;;
    restart-master)
        master_pid=`ps aux | grep mesos-master | grep -v grep | awk '{print $2}'`
        kill $master_pid
        echo "masos-master is stopping"
        sleep 2
        ./bin/mesos-master.sh  --ip=$lan_ip --zk=zk://docker1:2181,docker2:2181/mesos   --work_dir=$work_dir  --log_dir=$log_dir --quorum=1  > $master_log 2>&1 &
        master_pid=`ps aux | grep mesos-master | grep -v grep | awk '{print $2}'`
        echo "masos-master is running, pid is $master_pid "
        ;;
    start-slave)
        ./bin/mesos-slave.sh --ip=$lan_ip --containerizers=mesos,docker --master=zk://docker1:2181,docker2:2181/mesos  --log_dir=$log_dir > $slave_log 2>&1 &
        slave_pid=`ps aux | grep mesos-slave | grep -v grep | awk '{print $2}'`
        echo "masos-slave is running, pid is $slave_pid "
        ;;
    stop-slave)
        slave_pid=`ps aux | grep mesos-slave | grep -v grep | awk '{print $2}'`
        kill $slave_pid
        echo "masos-slave is down"
        ;;
    restart-slave)
        slave_pid=`ps aux | grep mesos-slave | grep -v grep | awk '{print $2}'`
        kill $slave_pid
        echo "masos-slave is stopping"
        sleep 2
        ./bin/mesos-slave.sh --ip=$lan_ip --containerizers=mesos,docker --master=zk://docker1:2181,docker2:2181/mesos  --log_dir=$log_dir > $slave_log 2>&1 &
        slave_pid=`ps aux | grep mesos-slave | grep -v grep | awk '{print $2}'`
        echo "masos-slave is running, pid is $slave_pid "
        ;;
    *)
        echo 'Usage: mesos.sh {start-master|stop-master|restart-master|start-slave|stop-slave|restart-slave}'
        exit 110
esac

###启动mesos 在docker1上执行:

sh /usr/local/mesos-0.25.0/build/mesos.sh start-master
sh /usr/local/mesos-0.25.0/build/mesos.sh start-slave

docker2上执行:

sh /usr/local/mesos-0.25.0/build/mesos.sh start-slave

###检测mesos启动状态 在浏览器打开:http://10.10.10.11:5050,查看服务运行是否正常

##marathon部署 ###下载marathon 下载地址:https://mesosphere.github.io/marathon/ 总提供的URL下载最新版本的marathon到/usr/local/目录下,并解压。 ###启动脚本

vim /usr/local/marathon-0.11.1/marathon.sh
#!/bin/bash
cd $(dirname $0)
if [ $# -eq 0 ];then
    echo 'Usage: marathon.sh {start|stop|restart}'
    exit 110
fi
PID=/apps/marathon/marathon.pid
case $1 in
    start)
        MESOS_NATIVE_JAVA_LIBRARY=/usr/local/mesos-0.25.0/build/src/.libs/libmesos-0.25.0.so   ./bin/start --master zk://docker1:2181,docker2:2181/mesos --zk zk://docker1:2181,docker2:2181/marathon > /niub/marathon/marathon.log 2>&1 &
        echo $! > $PID
        echo "marathon is running,pid is $!"
        ;;
    stop)
        kill `cat $PID`
        if [ $? -eq 0 ];then
            echo "marathon is stopped"
        else
            echo "error,marathon is not stopped"
        fi
        ;;
    restart)
        kill `cat $PID`
        if [ $? -eq 0 ];then
            echo "marathon is stopped"
        else
            echo "error,marathon is not stopped"
        fi
        sleep 3
        MESOS_NATIVE_JAVA_LIBRARY=/usr/local/mesos-0.21/lib/libmesos-0.21.0.so   ./bin/start --master zk://docker1:2181,docker2:2181/mesos --zk zk://docker1:2181,docker2:2181/marathon > /niub/marathon/marathon.log 2>&1 &
        echo $! > marathon.pid
        echo "marathon is running,pid is $!"
        ;;
    *)
        echo 'Usage: marathon.sh {start|stop|restart}'
        exit 110
esac

###启动marathon

sh /usr/local/marathon-0.11.1/marathon.sh start

###检测服务运行状态: URL: http://10.10.10.11:8080

##docker部署 略

© 著作权归作者所有

共有 人打赏支持
张富贵
粉丝 14
博文 16
码字总数 10690
作品 0
普陀
系统管理员
Kubernetes on DC/OS最佳实践

考虑大家的知识背景有所不同,在介绍Kubernetes on DC/OS的原理与技术实现之前,我觉得还是有必要先简单地介绍一下Mesos,DC/OS以及Kubernetes之间的关系与区别。 准确的说Mesos与Kubernete...

Docker ⋅ 04/23 ⋅ 0

跟我一起学docker(16)--单节点mesos集群

Mesos简介 什么是MESOS? Apache Mesos 是一个集群管理器,提供了有效的、跨分布式应用或框架的资源隔离和共享,可以运行 Hadoop、MPI、Hypertable、Spark。 几个基本概念: Mesos master:负...

IT人故事会 ⋅ 05/15 ⋅ 0

手把手教你如何在Docker环境下安装elastic-job-cloud

手把手教你如何在Docker环境下安装elastic-job-cloud 前言 本文默认你本地已经安装好了Docker环境,同时也具备本地编译打包elastic-job-cloud的环境工具(Git, Maven, JDK),这里仅介绍如...

huyong1990 ⋅ 05/28 ⋅ 0

elastic-job-cloud部署好后,任务状态一直显示FAILED

mesos-master的日志信息 mesos-slave的日志信息 zk的日志信息 调度器的日志信息 后面我把job删掉,重新注册了,mesos界面上就显示 Agent offline 再后面把/var/lib/mesos/meta/slaves/下的l...

Lynn8990 ⋅ 05/22 ⋅ 0

2018 Docker 用户报告 - Sysdig Edition

This article is part of an Virtualization Technology tutorial series. Make sure to check out my other articles as well: 2018 年度 Docker 用户报告 - Sysdig Edition Cyber-Securit......

RiboseYim ⋅ 06/13 ⋅ 0

深入学习Kubernetes | 上海站

2016 年的时候,我们还在为 Swarm、Mesos、Kubernetes 谁能够在容器编排调度大战中胜出而猜测。经过不到一年的发展,Kubernetes 就以超过 70% 的市场占有率(据 TheNewStack 的调研报告)将另...

m2l0zgssvc7r69efdtj ⋅ 04/26 ⋅ 0

Kubernetes快速入门实战培训 | 上海站

2016 年的时候,我们还在为 Swarm、Mesos、Kubernetes 谁能够在容器编排调度大战中胜出而猜测。经过不到一年的发展,Kubernetes 就以超过 70% 的市场占有率(据 TheNewStack 的调研报告)将另...

m2l0zgssvc7r69efdtj ⋅ 05/02 ⋅ 0

Kubernetes入门与进阶实战培训

2016 年的时候,我们还在为 Swarm、Mesos、Kubernetes 谁能够在容器编排调度大战中胜出而猜测。经过不到一年的发展,Kubernetes 就以超过 70% 的市场占有率(据 TheNewStack 的调研报告)将另...

m2l0zgssvc7r69efdtj ⋅ 04/28 ⋅ 0

为什么Kubernetes天然适合微服务?

三大容器平台之争尘埃落定,Kubernetes成为各家公司做微服务支撑的首选平台。Kubernetes的胜出有社区运营的原因所在,但仅仅从技术角度来讲,Kubernetes相对于其他容器平台来讲,是有微服务基...

Docker ⋅ 04/16 ⋅ 0

为什么 kubernetes 天然适合微服务

本文由 网易云 发布 最近总在思考,为什么在支撑容器平台和微服务的竞争中,Kubernetes 会取得最终的胜出,事实上从很多角度出发三大容器平台从功能方面来看,最后简直是一模一样。(可参考《...

wangyiyungw ⋅ 04/27 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Bean基础

1、Bean之间引用 <!--如果Bean配置在同一个XML文件中,使用local引用--><ref bean="someBean"/><!--如果Bean配置在不同的XML文件中,使用ref引用--><ref local="someBean"/> 其实两种......

霍淇滨 ⋅ 6分钟前 ⋅ 0

05、基于Consul+Upsync+Nginx实现动态负载均衡

1、Consul环境搭建 下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录 cd /usr/local/srcwget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip 解压consu......

北岩 ⋅ 8分钟前 ⋅ 0

Webpack 4 api 了解与使用

webpack 最近升级到了 v4.5+版 01 官方不再支持 node4 以下版本 官方不再支持 node4 以下版本官方不再支持 node4 以下的版本,所以如果你的node版本太低,先开始升级node吧!话说node10 ...

NDweb ⋅ 18分钟前 ⋅ 0

使用nodeJs安装Vue-cli

Vue脚手架就是一个Vue框架开发环境 脚手架的意思是帮你快速开始一个vue的项目,也就是给你一套vue的结构,包含基础的依赖库,只需要 npm install就可以安装,让我们不需要为了编辑或者一些其...

木筏笔歆 ⋅ 51分钟前 ⋅ 0

【微信小程序开发实战】0x00.开发前准备工作

写在开始 本人资深后端码农一枚,近期项目需求,接触到了微信小程序,将学习过程整理成文分享给小伙伴们,由于是边学边整理难免有表述不对的地方,望大家及时指正,感谢。 本人微信号: dream...

dreamans ⋅ 今天 ⋅ 0

linux redis的安装和php7下安装redis扩展

安装redis服务器 (1)下载安装包: $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz (2)编译程序: $ tar xzf redis-2.8.17.tar.gz $ cd redis-2.8.17 $ make $ cd src &&......

concat ⋅ 今天 ⋅ 0

Guava EventBus源码解析

一、EventBus使用场景示例 Guava EventBus是事件发布/订阅框架,采用观察者模式,通过解耦发布者和订阅者简化事件(消息)的传递。这有点像简化版的MQ,除去了Broker,由EventBus托管了订阅&...

SaintTinyBoy ⋅ 今天 ⋅ 0

http怎么做自动跳转https

Apache 版本 如果需要整站跳转,则在网站的配置文件的<Directory>标签内,键入以下内容: RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)?$ https://%{SERVER_NAME......

Helios51 ⋅ 今天 ⋅ 0

Python爬虫,抓取淘宝商品评论内容

作为一个资深吃货,网购各种零食是很频繁的,但是能否在浩瀚的商品库中找到合适的东西,就只能参考评论了!今天给大家分享用python做个抓取淘宝商品评论的小爬虫! 思路 我们就拿“德州扒鸡”...

python玩家 ⋅ 今天 ⋅ 0

MySQL 内核深度优化

MYSQL数据库适用场景广泛,相较于Oracle、DB2性价比更高,Web网站、日志系统、数据仓库等场景都有MYSQL用武之地,但是也存在对于事务性支持不太好(MySQL 5.5版本开始默认引擎才是InnoDB事务...

java高级架构牛人 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部