文档章节

mesos + marathon + docker部署

张富贵
 张富贵
发布于 2015/11/17 17:44
字数 927
阅读 1205
收藏 14

#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
普陀
系统管理员
跟我一起学docker(18)--持续集成(初级终结篇)

如何持续集成 image image 0 :开发人员提交代码到github 1 :触发jenkins操作 2 :jenkins将代码编译、验证 3 :将代码封装在docker镜像并上传至docker仓库 4 :jenkins向marathon发送部署请...

IT人故事
07/15
0
0
使用Mesos和Marathon管理Docker集群

分布式系统是难于理解、设计、构建 和管理的,他们将比单个机器成倍还要多的变量引入到设计中,使应用程序的根源问题更难发现。SLA(服务水平协议)是衡量停机和/或性能下降的标准,大多数现代...

Endeavour
2015/08/11
0
0
跟我一起学docker(17)--多节点mesos集群

多节点mesos集群 1.配置master 配置文件:/etc/default/mesos 增加配置:IP=192.168.30.3(当前节点IP) 2.配置slave节点 配置文件:/etc/default/mesos 增加配置:IP=192.168.30.4(当前节点...

IT人故事
07/14
0
0
Mesosphere Cluster on CentOS7 (zookeeper+mesos+marathon)

简介 mesosphere mesos marathon zookeeper: 为master的mesos/marathon的配置文件,这保证master更轻量级。 大概为这几个概念,能找到这里的基本上都是知道他们是干啥的,这里不废话了。不懂...

陈延宗
06/29
0
0
一步一步搭建ZooKeeper + Mesos + Marathon平台管理Docker集群

最近在Youtube看Docker视频的过程中不幸看到了Mesos的介绍,然后就有一种一见如故的感觉,最终根据mesosphere官网的文档在IBM的Bluemix虚拟机上搭建了基于ZooKeeper + Mesos + Marathon的平台...

shanker
06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周三乱弹 —— 我居然在 osc 里追剧

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @舆情风控小组 :分享王菲的单曲《笑忘书》 《笑忘书》- 王菲 手机党少年们想听歌,请使劲儿戳(这里) @艾尔库鲁斯:如果给大家一个选择的机...

小小编辑
47分钟前
70
8
rabbitMq的客户端使用笔记

1、channel声明队列的queueDeclare方法的参数解析 durable: 是否持久化, 队列的声明默认是存放到内存中的,如果rabbitmq重启会丢失,如果想重启之后还存在就要使队列持久化,保存到Erlang自...

DemonsI
55分钟前
0
0
“全新” 编程语言 Julia开箱体验

本文共 851字,阅读大约需要 3分钟 ! 概 述 Julia 是一个 “全新”的高性能动态编程语言,前两天迎来了其 1.0 正式版的重大更新。Julia集 Python、C、R、Ruby 之所长,感觉就像一种脚本语言...

CodeSheep
今天
12
0
软件自动化测试初学者忠告

题外话 测试入门 很多受过高等教育的大学生经常问要不要去报测试培训班来入门测试。 答案是否。 高等教育的合格毕业生要具备自学能力,如果你不具备自学能力,要好好地反省一下,为什么自己受...

python测试开发人工智能安全
今天
5
0
java并发备忘

不安全的“先检查后执行”,代码形式如下: if(条件满足){ //这里容易出现线程安全问题//doSomething}else{//doOther} 读取-修改-写入 原子操作:使用CAS技术,即首先从V中读取...

Funcy1122
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部