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

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

内容简介: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集群管理平台》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

可伸缩架构

可伸缩架构

【美】Lee Atchison / 张若飞、张现双 / 电子工业出版社 / 2017-7 / 65

随着互联网的发展越来越成熟,流量和数据量飞速增长,许多公司的关键应用程序都面临着伸缩性的问题,系统变得越来越复杂和脆弱,从而导致风险上升、可用性降低。《可伸缩架构:面向增长应用的高可用》是一本实践指南,让IT、DevOps和系统稳定性管理员能够了解到,如何避免应用程序在发展过程中变得缓慢、数据不一致或者彻底不可用等问题。规模增长并不只意味着处理更多的用户,还包括管理更多的风险和保证系统的可用性。作......一起来看看 《可伸缩架构》 这本书的介绍吧!

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

多种字符组合密码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

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

HEX HSV 互换工具