docker云方案——搭建Mesos+Zookeeper+Marathon的Docker管理平台

服务器架构

机器信息:

这里部属的机器为3个Master控制节点,3个slave运行节点,其中:

zookeeper、Mesos-master、marathon运行在Master端;Mesos-slave和docker运行在Slave端;需要修改zk的内容来保证slave能够被发现和管理

构建环境

配置mesos-master(3台master节点都要操作)

# 关闭selinux
[[email protected] ~]# sed -i ‘/SELINUX/s/enforcing/disabled/‘ /etc/selinux/config
[[email protected] ~]# setenforce 0

# 关闭防火墙
[[email protected] ~]# systemctl stop firewalld.servic
[[email protected] ~]# systemctl disable firewalld.service

# 添加mesos的yum源
[[email protected] ~]# rpm -Uvh http://repos.mesosphere.io/el/7/noarch/RPMS/mesosphere-el-repo-7-2.noarch.rpm

# 安装mesos、marathon、zookeeper
#安装依赖的JDK环境
[[email protected] ~]# yum install -y java-1.8.0-openjdk-devel java-1.8.0-openjdk
[[email protected] ~]# yum -y install mesos marathon mesosphere-zookeeper

# 配置zookeeper
# 设置文件/var/lib/zookeeper/myid为当前mesos-master节点的id,id必须为1-255中的整数
# master-1机器id为"1"
[[email protected] ~]# echo 1 > /var/lib/zookeeper/myid

# master-2机器id为"2"
[[email protected] ~]# echo 2 > /var/lib/zookeeper/myid

# master-3机器id为"3"
[[email protected] ~]# echo 3 > /var/lib/zookeeper/myid

# 修改zookeeper配置文件
[[email protected] ~]# cp /etc/zookeeper/conf/zoo.cfg /etc/zookeeper/conf/zoo.cfg.bak
[[email protected] ~]# vim /etc/zookeeper/conf/zoo.cfg
# 单个客户端与单台服务器之间的连接数的限制,是ip级别的,默认是50,如果设置为0,那么表明不作任何限制。请注意这个限制的使用范围,仅仅是单台客户端机器与单台ZK服务器之间的连接数限制,不是针对指定客户端IP,也不是ZK集群的连接数限制,也不是单台ZK对所有客户端的连接数限制。
maxClientCnxns=50
# Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳
tickTime=2000
# Zookeeper的Leader 接受客户端(Follower)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒
initLimit=10
# 表示 Leader 与 Follower 之间发送消息时请求和应答时间长度,最长不能超过多少个tickTime 的时间长度,总的时间长度就是 2*2000=4 秒
syncLimit=5
# zookeeper数据文件存放目录
dataDir=/var/lib/zookeeper
# 客户端连接端口
clientPort=2181
# 数字1,2,3表示这个是第几号服务器(是上面myid文件里对应的数字);中间的是master主节点的ip地址
# 第一个端口2888(这个端口可以自己定义)表示的是这个服务器与集群中的 Leader 服务器交换信息的端口
# 第二个端口3888表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
server.1= 192.168.93.133:2888:3888
server.2= 192.168.93.134:2888:3888
server.3= 192.168.93.135:2888:3888    

[[email protected] ~]# vim /etc/mesos/zk
zk://192.168.93.133:2181,192.168.93.134:2181,192.168.93.135:2181/mesos

# 设置文件/etc/master-/quorum内容为一个大于(master节点数除以2)的整数。即采用四舍五入,比如这里有3个master节点,那么3/2=1.5,四舍五入为2
[[email protected] ~]# echo 2 >/etc/mesos-master/quorum
[[email protected] ~]# cat /etc/mesos-master/quorum
2

# 配置mesos和marathon
# 主机名和ip要在hosts中写入,最好不要使用localhost,否则会出现slave不能识别,以及marathon任务下发不正常等现象。

# master-1机器
[[email protected] ~]# mkdir -p /etc/marathon/conf
[[email protected] ~]# echo 192.168.93.133  > /etc/mesos-master/hostname
[[email protected] ~]# echo 192.168.93.133 > /etc/marathon/conf/hostname
[[email protected] ~]# hostnamectl --static set-hostname master-1.com
[[email protected] ~]# echo "192.168.93.133 master-1 master-1.com" >/etc/hosts
[[email protected] ~]# cat /etc/hosts
192.168.93.133 master-1 master-1.com

# master-2机器
[[email protected] ~]# mkdir -p /etc/marathon/conf
[[email protected] ~]# echo 192.168.93.134  > /etc/mesos-master/hostname
[[email protected] ~]# echo 192.168.93.134 > /etc/marathon/conf/hostname
[[email protected] ~]# hostnamectl --static set-hostname master-2.com
[[email protected] ~]# echo "192.168.93.134 master-2 master-2.com" >/etc/hosts
[[email protected] ~]# cat /etc/hosts
192.168.93.134 master-2 master-2.com

# master-3机器
[[email protected] ~]# mkdir -p /etc/marathon/conf
[[email protected] ~]# echo 192.168.93.135  > /etc/mesos-master/hostname
[[email protected] ~]# echo 192.168.93.135 > /etc/marathon/conf/hostname
[[email protected] ~]# hostnamectl --static set-hostname master-3.com
[[email protected] ~]# echo "192.168.93.135 master-3 master-3.com" >/etc/hosts
[[email protected] ~]# cat /etc/hosts
192.168.93.135 master-3 master-3.com

[[email protected] ~]# cp  /etc/mesos/zk   /etc/marathon/conf/master
[[email protected] ~]# cp  /etc/mesos/zk   /etc/marathon/conf/zk
[[email protected] ~]# sed -i  ‘s|mesos|marathon|g‘   /etc/marathon/conf/zk

# 启动mesos,marathon,zookeeper
[[email protected] ~]# systemctl enable zookeeper && systemctl enable mesos-master && systemctl enable marathon
[[email protected] ~]# systemctl start zookeeper && systemctl start mesos-master && systemctl start marathon
[[email protected] ~]# systemctl disable mesos-slave

# 查看进程状态
[[email protected] ~]# systemctl status zookeeper
[[email protected] ~]# systemctl status mesos-master
[[email protected] ~]# systemctl status marathon

[[email protected] ~]# lsof -i:2181
[[email protected] ~]# lsof -i:5050
[[email protected] ~]# lsof -i:8080

# 检查配置
#配置过程中出错,为了方便检查对比各master配置,直接执行如下命令。
[[email protected] ~]# cat /var/lib/zookeeper/myid && grep -v "^#" /etc/zookeeper/conf/zoo.cfg && cat /etc/mesos/zk && cat /etc/mesos-master/quorum && cat /etc/mesos-master/hostname&& cat /etc/marathon/conf/hostname&& cat /etc/marathon/conf/master&&cat /etc/marathon/conf/zk
1
maxClientCnxns=50
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/lib/zookeeper
clientPort=2181
server.1= 192.168.93.133:2888:3888
server.2= 192.168.93.134:2888:3888
server.3= 192.168.93.135:2888:3888
zk://192.168.93.133:2181,192.168.93.134:2181,192.168.93.135:2181/mesos
2
192.168.93.133
192.168.93.133
zk://192.168.93.133:2181,192.168.93.134:2181,192.168.93.135:2181/mesos
zk://192.168.93.133:2181,192.168.93.134:2181,192.168.93.135:2181/marathon

# 以上操作后,master节点机不能ping通外网,是因为DNS解析文件被改变了,执行下面命令即可:
[[email protected] local]# echo "nameserver 114.114.114.114" >> /etc/resolv.conf
[[email protected] ~]# ping www.baidu.com
PING www.a.shifen.com (180.97.33.108) 56(84) bytes of data.
64 bytes from 180.97.33.108 (180.97.33.108): icmp_seq=1 ttl=128 time=13.1 ms
...

配置slave节点(3台slave节点都要操作)

# 关闭selinux
[[email protected] ~]# sed -i ‘/SELINUX/s/enforcing/disabled/‘ /etc/selinux/config
[[email protected] ~]# setenforce 0

# 关闭防火墙
[[email protected] ~]# systemctl stop firewalld.servic
[[email protected] ~]# systemctl disable firewalld.service

# 安装并启动docker
[[email protected] ~]# yum install -y docker
[[email protected] ~]# systemctl enable docker
[[email protected] ~]# systemctl start docker

# 拉取镜像(三台slave节点机都需要下载镜像,因为在marathon界面里创建docker容器,是随机在slave节点机上读取镜像创建的)
[[email protected] ~]# docker pull nginx
[[email protected] ~]# docker pull tomcat
[[email protected] ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/nginx     latest              2f7f7bce8929        6 days ago          107.5 MB
docker.io/tomcat    latest              a2fbbcebd67e        11 days ago         333.9 MB

# 添加mesos的yum源
[[email protected] ~]# rpm -Uvh http://repos.mesosphere.io/el/7/noarch/RPMS/mesosphere-el-repo-7-2.noarch.rpm

# 安装mesos
[[email protected] ~]# yum -y install mesos

# 配置master信息
# slave-1机器
[[email protected] ~]# echo 192.168.93.136 > /etc/mesos-slave/hostname
[[email protected] ~]# hostnamectl --static set-hostname slave-1.com
[[email protected] ~]# echo "192.168.93.136 slave-1 slave-1.com" >/etc/hosts
[[email protected] ~]# cat /etc/hosts
192.168.93.136 slave-1 slave-1.com

# slave-2机器
[[email protected] ~]# echo 192.168.93.137 > /etc/mesos-slave/hostname
[[email protected] ~]# hostnamectl --static set-hostname slave-2.com
[[email protected] ~]# echo "192.168.93.137 slave-2 slave-1.com" >/etc/hosts
[[email protected] ~]# cat /etc/hosts
192.168.93.137 slave-2 slave-2.com

# slave-3机器
[[email protected] ~]# echo 192.168.93.138 > /etc/mesos-slave/hostname
[[email protected] ~]# hostnamectl --static set-hostname slave-3.com
[[email protected] ~]# echo "192.168.93.138 slave-3 slave-1.com" >/etc/hosts
[[email protected] ~]# cat /etc/hosts
192.168.93.138 slave-3 slave-3.com

[[email protected] ~]# cat /etc/mesos/zk
zk://192.168.93.133:2181,192.168.93.134:2181,192.168.93.135:2181/mesos

# 配置marathon调用mesos运行docker容器
[[email protected] ~]# echo ‘docker,mesos‘ > /etc/mesos-slave/containerizers

#启动slave(要保证mesos-slave启动后,读取的zk信息是那三个mesos-master的连接信息,否则mesos访问页面里就不会出现这个slave节点信息。ps -ef|grep mesos-slave,如果没有读取到zk信息,可以尝试重启服务器再查看)
[[email protected] ~]# systemctl start mesos-slave && systemctl enable mesos-slave
[[email protected] ~]# systemctl disable mesos-master

# 以上操作后,slave节点机不能ping通外网,是因为DNS解析文件被改变了,执行下面命令即可:
[[email protected] ~]#echo "nameserver 114.114.114.114" >> /etc/resolv.conf
[[email protected] ~]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.
64 bytes from 14.215.177.38: icmp_seq=1 ttl=53 time=38.3 ms
.......

# 如果mesos-slave启动失败,可以如下检查:
[[email protected] ~]#  journalctl -f -u  mesos-slave

  

  

时间: 07-10

docker云方案——搭建Mesos+Zookeeper+Marathon的Docker管理平台的相关文章

Mesos+Zookeeper+Marathon+Docker分布式集群管理最佳实践

参考赵班长的unixhot以及马亮blog 笔者QQ:572891887 Linux架构交流群:471443208 1.1Mesos简介 Mesos是Apache下的开源分布式资源管理框架,它被称为分布式系统的内核.Mesos最初是由加州大学伯克利分校的AMPLab开发,后在Twitter得到广泛使用. Mesos-Master:主要负责管理各个framework和slave,并将slave上的资源分配给各个framework. Mesos-Slave:负责管理本节点上的各个mesos-task

Docker — 云时代的程序分发方式

要说最近一年云计算业界有什么大事件?Google Compute Engine 的正式发布?Azure入华?还是AWS落地中国?留在每个人大脑中的印象可能各不相同,但要是让笔者来排名的话那么Docker绝对应该算是第一位的.如果你之前听说过它的话,那么也许你会说"没错,就是它",因为几乎世界各地的开发.运维都在谈论着Docker:如果你还没听说过Docker,那么我真的建议你花上10分钟来阅读本文. 1. Docker简介 1.1. 什么是Docker? Docker是一个重新定义了程

阿里云cenos 6.5 模板上安装 docker

本章将介绍在阿里云的 Centos6.5 模板上安装 Docker 以及在 Ubuntu 14.04 模板上安装 Docker 的过程 Centos 6.5 模板上使用Docker 首先,通过 ssh 登陆阿里云的服务器,查看系统版本号以及内核版本. Welcome to aliyun Elastic Compute Service! # lsb_release -a LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core

搜索服务Solr集群搭建 使用ZooKeeper作为代理层

上篇文章搭建了zookeeper集群 那好,今天就可以搭建solr搜服服务的集群了,这个和redis 集群不同,是需要zk管理的,作为一个代理层 安装四个tomcat,修改其端口号不能冲突.8080~8083 如果是正式环境下,则分别使用4台linux作为节点 修改server.xml文件修改端口号,总共3个 以上步骤,在tomcat03,tomcat04上重复执行,但是3个端口一定要注意不能重复 向tomcat下部署solr 把单机版的solr工程复制到tomcat下即可 solr在别的机子上

Docker推出了Docker云,给大家介绍下哈!

Docker推出了Docker云,给大家介绍下哈. 收到了Docker官网的邮件邀请,他们推出了Docker云:https://cloud.docker.com 账号信息栏目下有: 云提供商:眼下支持AWS.Digital Ocean,Microsoft Azure,SoftLayer,Packet. 代码提供商:眼下支持GitHub API键:用来首选Docker云平台的API 改动password,改动邮件地址,通知,计划,账单.核,兑换优惠码 watermark/2/text/aHR0cD

Calico在Docker中的搭建

一,Multi-host网络需求 开始之前推荐两篇文章 http://xelatex.github.io/2015/11/15/Battlefield-Calico-Flannel-Weave-and-Docker-Overlay-Network/ http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=400983139&idx=1&sn=f033e3dca32ca9f0b7c9779528523e7e&scene=1&a

Mesos以及Marathon安装总结

安装了将近一周的环境了,终于把Mesos以及Marathon给安装上了,我指的离线安装. 策略1: 严格的按照官网的流程: http://mesos.apache.org/gettingstarted/ 找一台能够上网的机器,通过yum install/update --downloadonly --downloaddir=/opt/XXX 但是所有的yum下载都不要安装而是缓存到本地指定的文件夹(默认会缓存到/var/cache/yum/...下面,但是目录有些繁琐,而且容易和别的安装混淆,另

在Linode VPS上搭建离线下载神器Aria2+WEBUI管理及对国内云盘看法

在Linode VPS上搭建离线下载神器Aria2+WEBUI管理及对国内云盘看法 2015-09-21 by Hansen 原文链接:http://www.hansendong.me/archives/127.html 这年头vps商家都玩得比较HIGH,不少大硬盘的vps,之前的一般使用方法是当梯子看看外面的世界和Dropbox同步…… 然而现在流量用不完,所以找点其它用途吧,做个人下载服务器,这个方法不错,基于目前国内各大网盘环境,所以vps可能是另外一个选择. 为什么要花这么多时间去做这

docker 、rancher搭建

一.安装前准备: 配置本地yum源 1).mount -t iso9660 -o loop /dev/cdrom /media/centos 2).vi /etc/yum.repo.d/Centos_localsource.repo [CentOS7-Localsource] name=CentOS7 baseurl=file:///media/centos enabled=1 gpgcheck=0 2.配置网络yum源 下载163网易的yum源: wget http://mirrors.163