服务器架构

机器信息:

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

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

构建环境

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

  1. # 关闭selinux
  2. [root@master-1 ~]# sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
  3. [root@master-1 ~]# setenforce 0
  4.  
  5. # 关闭防火墙
  6. [root@master-1 ~]# systemctl stop firewalld.servic
  7. [root@master-1 ~]# systemctl disable firewalld.service
  8.  
  9. # 添加mesos的yum源
  10. [root@master-1 ~]# rpm -Uvh http://repos.mesosphere.io/el/7/noarch/RPMS/mesosphere-el-repo-7-2.noarch.rpm
  11.  
  12. # 安装mesos、marathon、zookeeper
  13. #安装依赖的JDK环境
  14. [root@master-1 ~]# yum install -y java-1.8.0-openjdk-devel java-1.8.0-openjdk
  15. [root@master-1 ~]# yum -y install mesos marathon mesosphere-zookeeper
  16.  
  17. # 配置zookeeper
  18. # 设置文件/var/lib/zookeeper/myid为当前mesos-master节点的id,id必须为1-255中的整数
  19. # master-1机器id为"1"
  20. [root@master-1 ~]# echo 1 > /var/lib/zookeeper/myid
  21.  
  22. # master-2机器id为"2"
  23. [root@master-2 ~]# echo 2 > /var/lib/zookeeper/myid
  24.  
  25. # master-3机器id为"3"
  26. [root@master-3 ~]# echo 3 > /var/lib/zookeeper/myid
  27.  
  28. # 修改zookeeper配置文件
  29. [root@master-1 ~]# cp /etc/zookeeper/conf/zoo.cfg /etc/zookeeper/conf/zoo.cfg.bak
  30. [root@master-1 ~]# vim /etc/zookeeper/conf/zoo.cfg
  31. # 单个客户端与单台服务器之间的连接数的限制,是ip级别的,默认是50,如果设置为0,那么表明不作任何限制。请注意这个限制的使用范围,仅仅是单台客户端机器与单台ZK服务器之间的连接数限制,不是针对指定客户端IP,也不是ZK集群的连接数限制,也不是单台ZK对所有客户端的连接数限制。
  32. maxClientCnxns=50
  33. # Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳
  34. tickTime=2000
  35. # Zookeeper的Leader 接受客户端(Follower)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒
  36. initLimit=10
  37. # 表示 Leader 与 Follower 之间发送消息时请求和应答时间长度,最长不能超过多少个tickTime 的时间长度,总的时间长度就是 2*2000=4 秒
  38. syncLimit=5
  39. # zookeeper数据文件存放目录
  40. dataDir=/var/lib/zookeeper
  41. # 客户端连接端口
  42. clientPort=2181
  43. # 数字1,2,3表示这个是第几号服务器(是上面myid文件里对应的数字);中间的是master主节点的ip地址
  44. # 第一个端口2888(这个端口可以自己定义)表示的是这个服务器与集群中的 Leader 服务器交换信息的端口
  45. # 第二个端口3888表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
  46. server.1= 192.168.93.133:2888:3888
  47. server.2= 192.168.93.134:2888:3888
  48. server.3= 192.168.93.135:2888:3888
  49.  
  50. [root@master-1 ~]# vim /etc/mesos/zk
  51. zk://192.168.93.133:2181,192.168.93.134:2181,192.168.93.135:2181/mesos
  52.  
  53. # 设置文件/etc/master-/quorum内容为一个大于(master节点数除以2)的整数。即采用四舍五入,比如这里有3个master节点,那么3/2=1.5,四舍五入为2
  54. [root@master-1 ~]# echo 2 >/etc/mesos-master/quorum
  55. [root@master-1 ~]# cat /etc/mesos-master/quorum
  56. 2
  57.  
  58. # 配置mesos和marathon
  59. # 主机名和ip要在hosts中写入,最好不要使用localhost,否则会出现slave不能识别,以及marathon任务下发不正常等现象。
  60.  
  61. # master-1机器
  62. [root@master-1 ~]# mkdir -p /etc/marathon/conf
  63. [root@master-1 ~]# echo 192.168.93.133 > /etc/mesos-master/hostname
  64. [root@master-1 ~]# echo 192.168.93.133 > /etc/marathon/conf/hostname
  65. [root@master-1 ~]# hostnamectl --static set-hostname master-1.com
  66. [root@master-1 ~]# echo "192.168.93.133 master-1 master-1.com" >/etc/hosts
  67. [root@master-1 ~]# cat /etc/hosts
  68. 192.168.93.133 master-1 master-1.com
  69.  
  70. # master-2机器
  71. [root@master-2 ~]# mkdir -p /etc/marathon/conf
  72. [root@master-2 ~]# echo 192.168.93.134 > /etc/mesos-master/hostname
  73. [root@master-2 ~]# echo 192.168.93.134 > /etc/marathon/conf/hostname
  74. [root@master-2 ~]# hostnamectl --static set-hostname master-2.com
  75. [root@master-2 ~]# echo "192.168.93.134 master-2 master-2.com" >/etc/hosts
  76. [root@master-2 ~]# cat /etc/hosts
  77. 192.168.93.134 master-2 master-2.com
  78.  
  79. # master-3机器
  80. [root@master-3 ~]# mkdir -p /etc/marathon/conf
  81. [root@master-3 ~]# echo 192.168.93.135 > /etc/mesos-master/hostname
  82. [root@master-3 ~]# echo 192.168.93.135 > /etc/marathon/conf/hostname
  83. [root@master-3 ~]# hostnamectl --static set-hostname master-3.com
  84. [root@master-3 ~]# echo "192.168.93.135 master-3 master-3.com" >/etc/hosts
  85. [root@master-3 ~]# cat /etc/hosts
  86. 192.168.93.135 master-3 master-3.com
  87.  
  88. [root@master-1 ~]# cp /etc/mesos/zk /etc/marathon/conf/master
  89. [root@master-1 ~]# cp /etc/mesos/zk /etc/marathon/conf/zk
  90. [root@master-1 ~]# sed -i 's|mesos|marathon|g' /etc/marathon/conf/zk
  91.  
  92. # 启动mesos,marathon,zookeeper
  93. [root@master-1 ~]# systemctl enable zookeeper && systemctl enable mesos-master && systemctl enable marathon
  94. [root@master-1 ~]# systemctl start zookeeper && systemctl start mesos-master && systemctl start marathon
  95. [root@master-1 ~]# systemctl disable mesos-slave
  96.  
  97. # 查看进程状态
  98. [root@master-1 ~]# systemctl status zookeeper
  99. [root@master-1 ~]# systemctl status mesos-master
  100. [root@master-1 ~]# systemctl status marathon
  101.  
  102. [root@master-1 ~]# lsof -i:2181
  103. [root@master-1 ~]# lsof -i:5050
  104. [root@master-1 ~]# lsof -i:8080
  105.  
  106. # 检查配置
  107. #配置过程中出错,为了方便检查对比各master配置,直接执行如下命令。
  108. [root@master-1 ~]# 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
  109. 1
  110. maxClientCnxns=50
  111. tickTime=2000
  112. initLimit=10
  113. syncLimit=5
  114. dataDir=/var/lib/zookeeper
  115. clientPort=2181
  116. server.1= 192.168.93.133:2888:3888
  117. server.2= 192.168.93.134:2888:3888
  118. server.3= 192.168.93.135:2888:3888
  119. zk://192.168.93.133:2181,192.168.93.134:2181,192.168.93.135:2181/mesos
  120. 2
  121. 192.168.93.133
  122. 192.168.93.133
  123. zk://192.168.93.133:2181,192.168.93.134:2181,192.168.93.135:2181/mesos
  124. zk://192.168.93.133:2181,192.168.93.134:2181,192.168.93.135:2181/marathon
  125.  
  126. # 以上操作后,master节点机不能ping通外网,是因为DNS解析文件被改变了,执行下面命令即可:
  127. [root@master-1 local]# echo "nameserver 114.114.114.114" >> /etc/resolv.conf
  128. [root@master-1 ~]# ping www.baidu.com
  129. PING www.a.shifen.com (180.97.33.108) 56(84) bytes of data.
  130. 64 bytes from 180.97.33.108 (180.97.33.108): icmp_seq=1 ttl=128 time=13.1 ms
  131. ...

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

  1. # 关闭selinux
  2. [root@slave-1 ~]# sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
  3. [root@slave-1 ~]# setenforce 0
  4.  
  5. # 关闭防火墙
  6. [root@slave-1 ~]# systemctl stop firewalld.servic
  7. [root@slave-1 ~]# systemctl disable firewalld.service
  8.  
  9. # 安装并启动docker
  10. [root@slave-1 ~]# yum install -y docker
  11. [root@slave-1 ~]# systemctl enable docker
  12. [root@slave-1 ~]# systemctl start docker
  13.  
  14. # 拉取镜像(三台slave节点机都需要下载镜像,因为在marathon界面里创建docker容器,是随机在slave节点机上读取镜像创建的)
  15. [root@slave-1 ~]# docker pull nginx
  16. [root@slave-1 ~]# docker pull tomcat
  17. [root@slave-1 ~]# docker images
  18. REPOSITORY TAG IMAGE ID CREATED SIZE
  19. docker.io/nginx latest 2f7f7bce8929 6 days ago 107.5 MB
  20. docker.io/tomcat latest a2fbbcebd67e 11 days ago 333.9 MB
  21.  
  22. # 添加mesos的yum源
  23. [root@slave-1 ~]# rpm -Uvh http://repos.mesosphere.io/el/7/noarch/RPMS/mesosphere-el-repo-7-2.noarch.rpm
  24.  
  25. # 安装mesos
  26. [root@slave-1 ~]# yum -y install mesos
  27.  
  28. # 配置master信息
  29. # slave-1机器
  30. [root@slave-1 ~]# echo 192.168.93.136 > /etc/mesos-slave/hostname
  31. [root@slave-1 ~]# hostnamectl --static set-hostname slave-1.com
  32. [root@slave-1 ~]# echo "192.168.93.136 slave-1 slave-1.com" >/etc/hosts
  33. [root@slave-1 ~]# cat /etc/hosts
  34. 192.168.93.136 slave-1 slave-1.com
  35.  
  36. # slave-2机器
  37. [root@slave-2 ~]# echo 192.168.93.137 > /etc/mesos-slave/hostname
  38. [root@slave-2 ~]# hostnamectl --static set-hostname slave-2.com
  39. [root@slave-2 ~]# echo "192.168.93.137 slave-2 slave-1.com" >/etc/hosts
  40. [root@slave-2 ~]# cat /etc/hosts
  41. 192.168.93.137 slave-2 slave-2.com
  42.  
  43. # slave-3机器
  44. [root@slave-3 ~]# echo 192.168.93.138 > /etc/mesos-slave/hostname
  45. [root@slave-3 ~]# hostnamectl --static set-hostname slave-3.com
  46. [root@slave-3 ~]# echo "192.168.93.138 slave-3 slave-1.com" >/etc/hosts
  47. [root@slave-3 ~]# cat /etc/hosts
  48. 192.168.93.138 slave-3 slave-3.com
  49.  
  50. [root@slave-1 ~]# cat /etc/mesos/zk
  51. zk://192.168.93.133:2181,192.168.93.134:2181,192.168.93.135:2181/mesos
  52.  
  53. # 配置marathon调用mesos运行docker容器
  54. [root@slave-1 ~]# echo 'docker,mesos' > /etc/mesos-slave/containerizers
  55.  
  56. #启动slave(要保证mesos-slave启动后,读取的zk信息是那三个mesos-master的连接信息,否则mesos访问页面里就不会出现这个slave节点信息。ps -ef|grep mesos-slave,如果没有读取到zk信息,可以尝试重启服务器再查看)
  57. [root@slave-1 ~]# systemctl start mesos-slave && systemctl enable mesos-slave
  58. [root@slave-1 ~]# systemctl disable mesos-master
  59.  
  60. # 以上操作后,slave节点机不能ping通外网,是因为DNS解析文件被改变了,执行下面命令即可:
  61. [root@slave-1 ~]#echo "nameserver 114.114.114.114" >> /etc/resolv.conf
  62. [root@slave-1 ~]# ping www.baidu.com
  63. PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.
  64. 64 bytes from 14.215.177.38: icmp_seq=1 ttl=53 time=38.3 ms
  65. .......
  66.  
  67. # 如果mesos-slave启动失败,可以如下检查:
  68. [root@slave-1 ~]# journalctl -f -u mesos-slave

  

  

docker集群——搭建Mesos+Zookeeper+Marathon的Docker管理平台的更多相关文章

  1. docker集群——介绍Mesos+Zookeeper+Marathon的Docker管理平台

    容器为用户打开了一扇通往新世界的大门,真正进入这个容器的世界后,却发现新的生态系统如此庞大.在生产使用中,不论个人还是企业,都会提出更复杂的需求.这时,我们需要众多跨主机的容器协同工作,需要支持各种类 ...

  2. Mesos+Zookeeper+Marathon的Docker管理平台部署记录(2)- 负载均衡marathon-lb

    之前介绍了Mesos+Zookeeper+Marathon的Docker管理平台部署记录(1)的操作,多余的废话不说了,下面接着说下在该集群环境下的负载均衡marathon-lb的部署过程: 默认情况 ...

  3. Mesos+Zookeeper+Marathon的Docker管理平台部署记录(1)

    随着"互联网+"时代的业务增长.变化速度及大规模计算的需求,廉价的.高可扩展的分布式x86集群已成为标准解决方案,如Google已经在几千万台服务器上部署分布式系统.Docker及 ...

  4. Docker系列之(二):使用Mesos管理Docker集群(Mesos + Marathon + Chronos + Docker)

    1. Mesos简介 1.1 Mesos Apache Mesos 是一个分布式系统的管理软件,对集群的资源进行分配和管理. Mesos主要由以下几部分组成: Master: 管理各Slave节点 S ...

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

    上篇文章搭建了zookeeper集群 那好,今天就可以搭建solr搜服服务的集群了,这个和redis 集群不同,是需要zk管理的,作为一个代理层 安装四个tomcat,修改其端口号不能冲突.8080~ ...

  6. kubernetes集群搭建(2):docker私有仓库

    kubernetes集群搭建(1):环境准备 中各节点已经安装好了docker,请确认docker已启动并正常运行 1.通过命令启动私库 docker run -d -p 5000:5000 --pr ...

  7. k8s docker集群搭建

    一.Kubernetes系列之介绍篇   •Kubernetes介绍 1.背景介绍 云计算飞速发展 - IaaS - PaaS - SaaS Docker技术突飞猛进 - 一次构建,到处运行 - 容器 ...

  8. Kubernetes(k8s) docker集群搭建

    原文地址:https://blog.csdn.net/real_myth/article/details/78719244 一.Kubernetes系列之介绍篇   •Kubernetes介绍 1.背 ...

  9. kubernetes集群搭建(9):docker 镜像的导入与导出

    由于K8s搭建时官方提供的镜像不FQ是访问不了的,所以搭建过程中很多时间都耗费在去找镜像去了 下面是我搭建k8s集群用到的镜像  没有采用之前我用的二进制文件搭建(dns没成功),这里采用的Kubea ...

随机推荐

  1. k8s的Health Check(健康检查)

    强大的自愈能力是 Kubernetes 这类容器编排引擎的一个重要特性.自愈的默认实现方式是自动重启发生故障的容器.除此之外,用户还可以利用 Liveness 和 Readiness 探测机制设置更精 ...

  2. 我们应选择怎样的IT公司

    最近经常有朋友提问,同时收到几家公司的offer,应该如何选择,或者找工作的时候,找怎样的公司,我在这里阐述一下我的观点.但愿对朋友们有所帮助. 还是那句老话,选择什么样的公司,关键是你想要过什么样的 ...

  3. MAC使用homeBrew安装Redis

    homeBrew的操作命令如下: brew search ** //查找某个软件包 brew list //列出已经安装的软件的包 brew install ** //安装某个软件包,默认安装的是稳定 ...

  4. 查询oracle数据库中当前数据库所有表的名称

    http://www.cnblogs.com/hyq0002013/p/5948419.html select t.table_name from user_tables t;

  5. docker1.13新功能上要关注的点

    如果要作单点端口映射,则需要结合constraint和label来定位具体的proxy机器吧. 如果不用这种模式,,ingress确实又太浪费集群端口了.. 纠结,,看看如何和compose v3作很 ...

  6. JAVA MAC 配置

    1下载对应的JDK,并安装 查看是否成功 java -version 2配置环境变量 sudo vim /etc/profile 入一下内容: JAVA_HOME="/Library/Jav ...

  7. 最小生成树的Prim算法

       构造最小生成树的Prim算法    假设G=(V,E)为一连通网,其中V为网中所有顶点的集合,E为网中所有带权边的集合.设置两个新的集合U和T,其中集合U用于存放G的最小生成树的顶点,集合T用于 ...

  8. [BZOJ4772]显而易见的数论(数论)

    4772: 显而易见的数论 Time Limit: 40 Sec  Memory Limit: 256 MBSubmit: 76  Solved: 32[Submit][Status][Discuss ...

  9. small test on 5.29 night T1

    可以发现题目的重点是在第一个部分,因为只要信心值我们求出来了,那么第二问就是一个简单的最长上升子序列问题了,所以接下来只讲第一问. #include<iostream> #include& ...

  10. Java多线程——AQS框架源码阅读

    AQS,全称AbstractQueuedSynchronizer,是Concurrent包锁的核心,没有AQS就没有Java的Concurrent包.它到底是个什么,我们来看看源码的第一段注解是怎么说 ...