如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台

栏目: 编程工具 · 发布时间: 7年前

内容简介:Apache Mesos 是一款基于多资源(内存、CPU、磁盘、端口等)调度的开源集群管理套件,能使容错和分布式系统更加容易使用。其采用了Master/Slave结构来简化设计,将Master做的尽可能轻量级,仅保存了各种计算框架(Framwork)和Mesos Slave的状态信息,这些状态很容易在Mesos出现故障时被重构,所以使用zookeeper解决master单点故障问题。Mesos Master充当全局资源调度器角色,采用某种策略算法将某个Save上的空闲资源分配给某个Famework,而各种

Mesos概述

Apache Mesos 是一款基于多资源(内存、CPU、磁盘、端口等)调度的开源集群管理套件,能使容错和分布式系统更加容易使用。其采用了Master/Slave结构来简化设计,将Master做的尽可能轻量级,仅保存了各种计算框架(Framwork)和Mesos Slave的状态信息,这些状态很容易在Mesos出现故障时被重构,所以使用zookeeper解决master单点故障问题。

Mesos工作原理

Mesos Master充当全局资源调度器角色,采用某种策略算法将某个Save

上的空闲资源分配给某个Famework,而各种Framework则是通过自己的调度器向master注册进行接入,master slave则是收集任务状态和启动各个Framework的Executor。其架构图如下:

如何使用Zookeeper+Mesos+Marathon搭建 <a href='https://www.codercto.com/topics/20577.html'>Docker</a> 集群管理平台

基本术语:

  • Mesos master: 负责管理各个Framework和Slave,并将Slave 上的资源分配给各个Framework。
  • Mesos Slave:负责管理本节点上的各个Mesos Task,为各个Executor分配资源。
  • Framework:计算框架,如:Hadoop、Spark等,可以通过MesosSchedulerDiver接入Mesos。
  • Executor:执行器,在Mesos Slave上安装,用于启动计算框架中的Task。

Zookeeper概述

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。其中Master 选举可以说是 ZooKeeper 最典型的应用场景了。生产环境中Zookeeper是以宕机个数过半来让整个集群宕机的,所以master至少三个节点。

Marathon

Marathon是一个Mesos框架,能够支持运行长服务,比如web应用等。是集群的分布式Init.d,能够原样运行任何 Linux 二进制发布版本,如Tomcat Play等等,可以集群的多进程管理。也是一种私有的Pass,实现服务的发现,为部署提供提供REST API服务,有授权和SSL、配置约束,通过HAProxy实现服务发现和负载平衡。

配置搭建docker集群管理平台

版本内核需要3.10以上

cat /etc/RedHat-release   //查看Linux版本

uname -r   //查看内核版本(需要内核3.10以上)

如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台 环境如下所示:

主机 IP地址 安装软件包
master 192.168.26.150 jdk-8u91-linux-x64.tar.gz/mesos-0.25.0.tar.gz/zookeeper-3.4.10.tar.gz/ marathon-0.15.2.tgz
master1 192.168.26.139 jdk-8u91-linux-x64.tar.gz/ mesos-0.25.0.tar.gz /zookeeper-3.4.10.tar.gz
master2 192.168.26.140 jdk-8u91-linux-x64.tar.gz/mesos-0.25.0.tar.gz/zookeeper-3.4.10.tar.gz
slave 192.168.26.141 jdk-8u91-linux-x64.tar.gz/mesos-0.25.0.tar.gz/docker
slave1 192.168.26.142 jdk-8u91-linux-x64.tar.gz/mesos-0.25.0.tar.gz/docker

步骤如下所示:

一、安装Mesos

关闭所有主机的防火墙和安全性策略

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

1.配置 JAVA 环境

tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/

cd /usr/local
mv jdk1.8.0_91/ java

vim /etc/profile
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar

source /etc/profile

2.安装相关环境

(1)安装开发工具

yum groupinstall -y "Development Tools"

(2)添加apache-maven源

为Mesos提供项目管理和构建自动化 工具 的支持

wget http://repos.Fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo

(3)安装相关依赖包

yum install -y apache-maven Python-devel zlib-devel libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 apr-devel apr-util-devel subversion-devel

(4)配置WANdiscoSVN网络源

vim /etc/yum.repos.d/wandisco-svn.repo

[WANdiscoSVN]
name=WANdisco SVN Repo 1.9
enabled=1
baseurl=http://opensource.wandisco.com/<a href="https://www.linuxidc.com/topicnews.aspx?tid=14" target="_blank" title="CentOS">CentOS</a>/7/svn-1.9/RPMS/$basearch/
gpgcheck=1
gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco

3.配置Mesos环境变量

vim /etc/profile

export MESOS_NATIVE_JAVA_LIBRARY=/usr/local/lib/libmesos.so
export MESOS_NATIVE_LIBRARY=/usr/local/lib/libmesos.so

source /etc/profile

4.构建Mesos

tar zxvf mesos-0.25.0.tar.gz -C /opt/
mv /opt/mesos-0.25.0/ /root/
cd /root/mesos-0.25.0
mkdir build
cd  build
../configure

make              //等待时间长(在线状态)
make check
make install

二、 配置Mesos-master(三台配置一样)

1.规划master主机名

Mesos-master负责维护slave集群的心跳,从salve提取资源信息,配置之前做好相应的解析工作。

hostnamectl set-hostname master  #修改相应的主机名

vim /etc/hosts      #修改hosts文件
192.168.26.131 master
192.168.26.139 master1
192.168.26.140 master2
192.168.26.141 slave
192.168.26.142 slave1

ln -sf /root/mesos-0.25.0/build/bin/mesos-master.sh /usr/sbin/mesos-master

2.启动mesos-master

mesos-master --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --no-hostname_lookup --ip=0.0.0.0

参数:

--work_dir:运行期数据存放路径,包含sandbox、slavemeta等信息

--log_dir:Mesos日志存放路径

--[no-]hostname_lookup: 是否从DNS获取主机名,本例中关闭了此配置,直接显示IP。

--ip: Mesos进程绑定的IP。

3.配置完成后打开另一个终端使用浏览器访问本地的5050端口

http://l92.168.26.150:5050

如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台

三、配置Mesos-slave(两台配置一样)

1.规划slave主机名

Mesos-slave负责接收并执行来自Mesos-master传递的任务以及监控任务状态,收集任务使用系统的情况,配置之前做好解析工作。

hostnamectl set-hostname slave

vim /etc/hosts      #修改hosts文件
192.168.26.150 master
192.168.26.139 master1
192.168.26.140 master2
192.168.26.141 slave
192.168.26.142 slave1
ln -sf /root/mesos-0.25.0/build/bin/mesos-slave.sh /usr/sbin/mesos-slave #创建链接文件

2.安装并启动docker

yum install docker -y

systemctl start docker.service
systemctl enable docker.service

注意docker服务启动失败,解决方案请参考博客http://blog.51cto.com/11134648/2162785。

3.启动Mesos-slave服务

mesos-slave --containerizers="mesos,docker" --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --master=192.168.26.148:5050 --no-hostname_lookup --ip=0.0.0.0

注意当启动失败时,有可能链接文件没有生效,使用如下命令

cd /root/mesos-0.25.0/build/bin/

./mesos-slave.sh --containerizers="mesos,docker" --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --master=192.168.26.150:5050 --no-hostname_lookup --ip=0.0.0.0

4.查看slave状态

使用浏览器再次对master的5050端口进行访问

http://:192.168.26.150:5050

如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台

四、安装Zookeeper

1.分别在所有的master节点上安装Zookeeper

wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz

tar zxvf zookeeper-3.4.10.tar.gz -C /home/q/

cd /home/q/zookeeper-3.4.10/

mv conf/zoo_sample.cfg conf/zoo.cfg

2.修改Zookeeper的配置文件

以server.A=B:C:D 格式定义各个节点的相关信息,其中A是一个数字,表示第几号服务器;B是这个服务器的IP地址;C为与集群中的Leader服务器交换信息的端口;D是在leader挂掉时专门进行Leader选举时所用的端口。

cd /home/q/zookeeper-3.4.10/conf

vim zoo.cfg 
   dataDir=/home/q/zookeeper-3.4.10/data   //重新定义Datadir的位置
   dataLogDir=/home/q/zookeeper-3.4.10/datalog
   server.1=192.168.26.150:2888:3888
   server.2=192.168.26.139:2888:3888
   server.3=192.168.26.140:2888:3888

3.修改完的配置文件拷贝给其他master主机

scp zoo.cfg 192.168.26.139:/home/q/zookeeper-3.4.10/conf/
scp zoo.cfg 192.168.26.140:/home/q/zookeeper-3.4.10/conf/

4.在dataDir路径下创建一个myid文件

master主机上(/home/q/zookeeper-3.4.10/)

mkdir data datalog 
echo 1 > data/myid
cat data/myid

master1主机上(/home/q/zookeeper-3.4.10/)

mkdir data datalog 
echo 2 > data/myid
cat data/myid

master2主机上(/home/q/zookeeper-3.4.10/)

mkdir data datalog 
echo 3 > data/myid
cat data/myid

5.分别在各master节点上启动Zookeeper服务

master主机

./bin/zkServer.sh start conf/zoo.cfg

master1主机

./bin/zkServer.sh start conf/zoo.cfg

master2主机

./bin/zkServer.sh start conf/zoo.cfg

6.查看主机状态

./bin/zkServer.sh status

7.分别启动Mesos-master

注意先kill掉之前启动的Mesos-master进程

master主机

mesos-master --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://192.168.26.150:2181/mesos --quorum=2

master1主机

mesos-master --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://192.168.26.139:2181/mesos --quorum=2

master2主机

mesos-master --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://192.168.26.140:2181/mesos --quorum=2

8.启动Mesos-slave

注意先kill掉之前启动的Mesos-master进程

mesos-slave --containerizers="mesos,docker" --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --master=zk://192.168.26.150:2181,192.168.26.139:2181,192.168.26.140:2181/mesos --no-hostname_lookup --ip=0.0.0.0

注意当启动失败时,,有可能链接文件没有生效,使用如下命令

cd /root/mesos-0.25.0/build/bin/

./mesos-slave.sh --containerizers="mesos,docker" --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --master=zk://192.168.26.150:2181,192.168.26.139:2181,192.168.26.140:2181/mesos --no-hostname_lookup --ip=0.0.0.0

9.使用浏览器指定任意Mesos-master地址的5050端口验证

http://192.168.26.140:5050
如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台

若指定的是非Leader状态下的Mesos-master地址,页面会自行跳转至处于leader状态的Mesos-master地址。

如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台

五、在master主机上部署运行Marathon

使用Marathon向Mesos发送任务。

1.安装并启动Marathon

wget http://downloads.mesosphere.com/marathon/v0.15.2/marathon-0.15.2.tgz

tar zxvf marathon-0.15.2.tgz -C /home/q/

cd /home/q/marathon-0.15.2

./bin/start --hostname 192.168.26.150 --master zk://192.168.26.150:2181,192.168.26.139:2181,192.168.26.140:2181/mesos --http_address 0.0.0.0    //将Marathon安装到多Mesos-master环境的master主机上

2.访问Marathon(默认使用8080端口)

http://192.168.26.150:8080/

如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台

3.使用Marathon创建测试任务

(1)在首页点击Create按钮,创建一个测试任务echo “hello world”

如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台

(2)创建成功以后在applications页面可以看到该任务

如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台

Marathon会自动注册到Mesos中,可以在Mesos web的Framework页面中看到注册信息。

如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台

可以在Mesos Web首页看到测试任务在不停的执行中

如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台

(4)在节点slave主机查看任务的相关信息

如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台

(5)删除测试任务

如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台

4.使用Marathon API的形式添加新任务

在节点slave中操作

cd /root
vim demo.json
{
"id":"basic-0",
"cmd":"while [true]; do echo 'hello Marathon'; sleep 5; done",
"cpus":0.1,
"mem":10.0,
"instances":1
}
//查看Marathon网站有新添加任务
curl -X POST -H "Content-type:application/json" http://192.168.26.150:8080/v2/apps -d@demo.json

如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台 如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台 如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台

5.使用Mesos与Marathon创建Docker集群

(1)在节点slave创建docker的nginx请求任务

cd /root
vim nginx.json

{
"id":"/nginx",      //应用唯一的ID
"container":{      //marathon启用docker格式
"type":"DOCKER",
"docker":{
"image":"nginx",     //nginx镜像
"network":"HOST",   //网络为HOST模式
"parameters":[],
"privileged":false,
"forcePullImage":false   //是否强制更新镜像
}
},
"cpus":0.1,
"mem":32.0,
"instances":1
}

//查看Marathon网站有新添加任务
curl -X POST -H "Content-type:application/json" http://192.168.26.150:8080/v2/apps -d@nginx.json

如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台 (2)在Marathon页面查看

可以在创建的Nginxd任务下看到该任务发送给主机

如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台

如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台 (3)用命令行方式查看主机下载的docker镜像

docker images

如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台

docker ps -a

如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台 (4)访问slave主机上运行着的Nginx服务

http://192.168.26.141

如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台

Linux公社的RSS地址 : https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址: https://www.linuxidc.com/Linux/2018-11/155528.htm


以上所述就是小编给大家介绍的《如何使用Zookeeper+Mesos+Marathon搭建Docker集群管理平台》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

Android编程权威指南(第3版)

Android编程权威指南(第3版)

比尔·菲利普斯 (Bill Phillips)、克里斯·斯图尔特 (Chris Stewart)、克莉丝汀·马西卡诺 (Kristin Marsicano) / 王明发 / 人民邮电出版社 / 2017-6 / 129.00元

Big Nerd Ranch 是美国一家专业的移动开发技术培训机构。本书主要以其Android 训练营教学课程为基础,融合了几位作者多年的心得体会,是一本完全面向实战的Android 编程权威指南。全书共36 章,详细介绍了8 个Android 应用的开发过程。通过这些精心设计的应用,读者可掌握很多重要的理论知识和开发技巧,获得宝贵的开发经验。 第3 版较之前版本增加了对数据绑定等新工具的介......一起来看看 《Android编程权威指南(第3版)》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具