Mesos+Marathon+Docker

Mesos+Marathon+Docker
官方网站:


Mesos+Marathon+Docker

环境:
CentOS 7.3
mesos-1.0
marathon-1.1.1
zookeeper-3.4.8
jdk-1.8
docker-engine-1.12.0


YUM安装

yum -y install mesos marathon chronos

提示:CentOS6 yum源


源码安装

一.zookeeper

请参看zookeeper集群

这里为zk://192.168.8.101:2181,192.168.8.102:2181,192.168.8.103:2181



二.mesos
1.配置jdk
JAVA_HOME=/opt/jdk
2.安装编译依赖库
cat > /etc/yum.repos.d/wandisco-svn.repo <<EOF
[WANdiscoSVN]
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
EOF

yum install -y gcc gcc-c++ autoconf automake libtool patch 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
3.编译安装mesos
tar -xvf mesos-1.0.0.tar.gz
cd mesos-1.0.0
./configure --prefix=/opt/mesos
make -j4 && make install
提示: 编译时,内存不能太低,实测1G内存编译报错,同时主机还要通外网,maven会自动到repo.maven.apache.org下载相关依赖包

遇到错误:make时出错

y/protobuf-2.5.0/src -I/usr/include/subversion-1 -I/usr/include/apr-1 -I/usr/include/apr-1.0 -pthread -g1 -O0 -Wno-unused-local-typedefs -std=c++11 -MT master/libmesos_no_3rdparty_la-quota.lo -MD -MP -MF master/.deps/libmesos_no_3rdparty_la-quota.Tpo -c master/quota.cpp  -fPIC -DPIC -o master/.libs/libmesos_no_3rdparty_la-quota.o

g++: 编译器内部错误:已杀死(程序 cc1plus)

Please submit a full bug report,

with preprocessed source if appropriate.

See for instructions.

make[2]: *** [master/libmesos_no_3rdparty_la-master.lo] 错误 1

make[2]: *** 正在等待未完成的任务....

mv -f master/.deps/libmesos_no_3rdparty_la-quota.Tpo master/.deps/libmesos_no_3rdparty_la-quota.Plo

mv -f master/.deps/libmesos_no_3rdparty_la-metrics.Tpo master/.deps/libmesos_no_3rdparty_la-metrics.Plo

mv -f master/.deps/libmesos_no_3rdparty_la-http.Tpo master/.deps/libmesos_no_3rdparty_la-http.Plo

make[2]: 离开目录“/root/mesos-0.28.2/src”

make[1]: *** [all] 错误 2

make[1]: 离开目录“/root/mesos-0.28.2/src”

make: *** [all-recursive] 错误 1


刚开始以为内存分配过低,被OOM了,于是加到3G内存,仍然报错

以为mesos-1.0版本有兼容性问题,于是又换了个低版本的mesos-0.28.2, 还是报错

最后,检查官方安装文档,发现subversion-devel必须大于1.8,而CentOS7.2 光盘源里自带是1.7。

systemd版本需要大于218,而CentOS7.2的systemd已经是219版本,故不用升级。


最后,升级subversion-devel后再次编译,还是报同样的错。

无赖,百度大半天后,看到有朋友也碰到相同问题,也是说内存问题,于是再次调大内存为8G,终于开始了正常编译


总结,编译出错,请安装正确版本的依赖库后调大内存再编译


其它节点,可以直接运行编译好的二进制文件

4.配置mesos集群

http://mesos.apache.org/documentation/latest/configuration/

zk1: 192.168.8.101

zk2: 192.168.8.102

zk3: 192.168.8.103

mesos-m1: 192.168.8.101

mesos-m2: 192.168.8.102

mesos-m3: 192.168.8.103

mesos-a1: 192.168.8.101

mesos-a2: 192.168.8.102

mesos-a3: 192.168.8.103

说明:节省资源,实验环境中192.168.8.101-103这3台主机分别为zookeeper,mesos-maser,mesos-agent节点,生产环境请组件分离

mesos-master

/opt/mesos/sbin/mesos-master --work_dir=/opt/mesos/data --quorum=2 --zk=zk://192.168.8.101:2181,192.168.8.102:2181,192.168.8.103:2181/mesos

mesos-agent

/opt/mesos/sbin/mesos-agent --work_dir=/opt/mesos/data --master=zk://192.168.8.101:2181,192.168.8.102:2181,192.168.8.103:2181/mesos

5.Web UI

192.168.8.101:5050

192.168.8.102:5050

192.168.8.103:5050

Mesos+Marathon+Docker



三.marathon

https://mesosphere.github.io/marathon/docs/

marathon是容器编排的mesos框架,是目前除kubenutes和swarmkit(docker-engine-1.12内嵌新功能)之外的另一种成熟解决方案

1.安装marathon

curl -L http://downloads.mesosphere.com/marathon/v1.1.1/marathon-1.1.1.tgz

tar -xvf marathon-1.1.1.tgz -C /opt

2.配置marathon HA

https://mesosphere.github.io/marathon/docs/high-availability.html

marathon节点可以在任意节点上,这里还是

marathon1: 192.168.8.101

marathon2: 192.168.8.102

marathon3: 192.168.8.103

cat >/etc/profile.d/marathon.sh <<HERE

export MESOS_NATIVE_JAVA_LIBRARY=/opt/mesos/lib/libmesos.so

export MESOS_NATIVE_LIBRARY=/opt/mesos/lib/libmesos.so

HERE

source /etc/profile

/opt/marathon-1.1.1/bin/start --master zk://192.168.8.101:2181,192.168.8.102:2181,192.168.8.103:2181/mesos --zk zk://192.168.8.101:2181,192.168.8.102:2181,192.168.8.103:2181/marathon

--master #指定mesos master

--zk #指定zookeeper

3.Web UI

192.168.8.101:8080

192.168.8.102:8080

192.168.8.103:8080

marathon默认监听在8080端口,每个marathon HA节点都可以部署和查看到相同的task, 这里部署一个测试app, marathon可以轻松将app拉伸,如下,可以看到,basic-0分别在node1,node2上运行

Hello Marathon: An Inline Shell Script

Let's start with a simple example: an app that prints Hello Marathon to stdout and then sleeps for 5 sec, in an endless loop. You would use the following JSON application definition to describe the application: 

{
    "id": "basic-0", 
    "cmd": "while [ true ] ; do echo 'Hello Marathon' ; sleep 5 ; done",
    "cpus": 0.1,
    "mem": 10.0,
    "instances": 1
}


Mesos+Marathon+Docker

Mesos+Marathon+Docker

4.运行docker容器

https://mesosphere.github.io/marathon/docs/native-docker.html

http://mesos.apache.org/documentation/latest/containerizer/

http://mesos.apache.org/documentation/latest/docker-containerizer/

要支持docker容器,需要在mesos-agent节点

i.安装docker-engine

ii.mesos-agent添加--containerizers=docker,mesos参数

(顺序很重要,分隔符前面的为task首选格式),mesos默认使用mesos容器格式

还可以根据需求来指定其它选项,如下

/opt/mesos/sbin/mesos-agent --work_dir=/opt/mesos/data \

--master=zk://192.168.8.101:2181,192.168.8.102:2181,192.168.8.103:2181/mesos \

--containerizers=docker,mesos \

--docker_registry=http://192.168.8.254:5000 \

--executor_registration_timeout=5mins 



--docker_store_dir=/tmp/mesos/store/docker #存放容器的目录

--log_dir=/opt/mesos/log #日志目录

--logging_level=WARNING #日志级别

--docker_socket=/var/run/docker.sock #docker socket位置


这里我run了一个python3的简单http server

Mesos+Marathon+Docker

Mesos+Marathon+Docker

Mesos+Marathon+Docker

Mesos+Marathon+Docker



转载于:https://www.cnblogs.com/lixuebin/p/10814029.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值