mesos+marathon+zookeeper的docker管理集群亲手搭建实例(环境Centos6.8)
资源:3台centos6.8虚拟机 4cpu 8G内存 ip 10.19.54.111-113
1台centos6.8虚拟机2cpu 8G ip 10.19.53.55
1、System Requirements及安装环境配置并关闭防火墙与SELinux
For full support of process isolation under Linux a recent kernel >=3.10 is required.
由于我使用的centos6.8,所以要升级内核(http://www.cnblogs.com/zhangmingcheng/p/6046274.html)
关闭防火墙
关闭命令: service iptables stop
永久关闭防火墙:chkconfig iptables off
两个命令同时运行,运行完成后查看防火墙关闭状态 service iptables status
关闭selinux
Redhat应用了SELinux去加强平安,永久封闭的举措为:
Mesos runs on Linux (64 Bit) and Mac OS X (64 Bit). To build Mesos from source, GCC 4.8.1+ or Clang 3.5+ is required.
根据官方文档进行配置(http://mesos.apache.org/gettingstarted/)
注意:每次ssh连接到服务器时,需要输入:scl enable devtoolset-2 bash 暂时改变GCC版本
2、这几台CentOS服务器时间同步(NTP时间同步)
博客地址:http://www.cnblogs.com/zhangmingcheng/p/6047052.html
3、设置hostname 添加映射
修改/etc/sysconfig/network配置文件来修改主机名:

需重启机器: shutdown -r now
修改/etc/hosts文件添加局域网内主机映射:

4、因为要安装marathon,由于mesos官方文档中安装的jdk是1.7版本,所以我们要换成1.8 :sudo yum install -y java-1.8.0-openjdk-devel
5、在这几台服务其上面安装安装Zookeeper
安装:
wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz -P /usr/local/src/
tar zxvf zookeeper-3.4.8.tar.gz -C /opt
cd /opt && mv zookeeper-3.4.8 zookeeper
cd zookeeper
cp conf/zoo_sample.cfg conf/zoo.cfg
#把zookeeper加入到环境变量
echo -e "# append zk_env\nexport PATH=$PATH:/opt/zookeeper/bin" >> /etc/profile Zookeeper集群配置:
注意:搭建zookeeper集群时,一定要先停止已经启动的zookeeper节点。
#修改过后的配置文件zoo.cfg,如下:
cat zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper/data
dataLogDir=/opt/zookeeper/logs
clientPort=2181
autopurge.snapRetainCount=500
autopurge.purgeInterval=24
server.1=10.19.54.111:2888:3888
server.2=10.19.54.112:2888:3888
server.3=10.19.54.113:2888:3888
#创建相关目录,三台节点都需要
mkdir -p /opt/zookeeper/{logs,data}
#其余zookeeper节点安装完成之后,同步配置文件zoo.cfg。
创建ServerID标识
除了修改zoo.cfg配置文件外,zookeeper集群模式下还要配置一个myid文件,这个文件需要放在dataDir目录下。
这个文件里面有一个数据就是A的值(该A就是zoo.cfg文件中server.A=B:C:D中的A),在zoo.cfg文件中配置的dataDir路径中创建myid文件。
#在110.19.54.111服务器上面创建myid文件,并设置值为1,同时与zoo.cfg文件里面的server.1保持一致,如下
echo "1" > /opt/zookeeper/data/myid
#在10.19.54.112服务器上面创建myid文件,并设置值为1,同时与zoo.cfg文件里面的server.2保持一致,如下
echo "2" > /opt/zookeeper/data/myid
#在10.19.54.113服务器上面创建myid文件,并设置值为1,同时与zoo.cfg文件里面的server.3保持一致,如下
echo "3" > /opt/zookeeper/data/myid
到此,相关配置已完成 启动每个服务器上面的zookeeper节点
/opt/zookeeper/bin/zkServer.sh start PS:Zookeeper一些常用命令:
在准备好相应的配置之后,可以直接通过zkServer.sh 这个脚本进行服务的相关操作
- 1. 启动ZK服务: sh bin/zkServer.sh start
- 2. 查看ZK服务状态: sh bin/zkServer.sh status
- 3. 停止ZK服务: sh bin/zkServer.sh stop
- 4. 重启ZK服务: sh bin/zkServer.sh restart
通过sh bin/zkServer.sh status命令发现当前113主机是leader。
6、在这几台服务器上面安装mesos
先下载Mesos
$ wget http://www.apache.org/dist/mesos/0.28.2/mesos-0.28.2.tar.gz $ tar -zxf mesos-0.28.2.tar.gz
我都安装在/opt/mesos底下
cd mesos
mkdir build
cd build
../configure
make 编译
make check 编译检查
make install 安装
在以上步骤里,只要环境配置有误(如缺少软件,或者环境版本过低都会导致失败,如gcc版本低,根据提示错误进行解决),因为这几台服务器使用代理进行连网,所以我遇 到一个比较坑的地方,在make时一直提示不能下载.pom,之后发现是需要在/root/.m2底下配置settings.xml
<proxies>
<proxy>
<id>myProxy</id>
<active>true</active>
<protocol>http</protocol>
<host>123.123.123.123</host>
<port>8080</port>
<username>XXXXX</username>
<password>XXXXX</password>
<nonProxyHosts>*.XXX.com|XXX.org</nonProxyHosts>
</proxy>
</proxies>
在<settings>标签中添加如上代码,说明如下:
1、proxies中可以配置多个proxy,但是默认第一个proxy生效。
2、active中的TRUE表示该代理目前生效状态。
3、http协议、主机地址、端口不在赘述。
4、用户名密码按需配置即可。
5、nonProxyHost表示不需要代理访问的地址。中间的竖线分隔多个地址,此处可以使用星号作为通配符号。
7、配置Mesos(Master与Slave)
首先开启cgconfig服务并设为开机自启
service cgconfig start
chkconfig cgconfig on
PS:查看Linux启动的服务
chkconfig --list 查询出所有当前运行的服务
chkconfig --list atd 查询atd服务的当前状态
表示每个运行级别下,服务的启动状态
运行级别0:系统停机状态
运行级别1:单用户工作状态
运行级别2:多用户状态(没有NFS)
运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并重启
查看服务的状态:service cgconfig status
1、增加、修改配置文件
在节点上安装好Mesos后,默认的配置文件在/usr/local/etc/mesos目录下,刚开始目录下只有mesos-deploy-env.sh.template、mesos-master-env.sh.template和 mesos-slave-env.sh.template这三个模版文件。我们需要新建masters和slaves文件、根据原有的文件复制出mesos-deploy-env.sh、mesos-master-env.sh(仅master复制)和mesos- slave-env.sh(仅slave复制)这三个文件。
1) masters和slaves
这两个文件分别写入运行Master的主机名或IP以及Slave运行的主机名或IP,每行一个。
masters:10.19.54.111
slaves: 10.19.54.112
10.19.54.113
2) mesos-master-env.sh
该文件是关于Master的相关配置。单点Master集群的需要配置的参数是:MESOS_log_dir:log输出的目录,如果不设置,默认不会产生log、MESOS_worker_dir:存放元数据的目录。

3) mesos-slave-env.sh
该文件是Slave相关的配置文件。MESOS_log_dir:log输出的目录,如果不设置,默认不会产生log;MESOS_worker_dir:存放framework工作目录的目录路径(默认: /tmp/mesos)。MESOS_master这个参数是必不可少的,这里设为Master节点的主机名:端口。

在mesos-slave.env.sh里再添加一句:export MESOS_containerizers=docker,mesos
4)mesos-deploy-env.sh
该文件包含了部署脚本运行的环境变量。只要从模版文件复制过来即可,不需要添加其他参数。

这样配置文件的相关参数就设置好了。需要将这些配置文件复制给每一个mesos所在的节点。
后台启动:
mesos-daemon.sh mesos-master

mesos-daemon.sh mesos-slave --master=10.19.54.111:5050

8、在Mesos-Master上安装并后台运行Marathon
# wget http://downloads.mesosphere.com/marathon/v1.1.1/marathon-1.1.1.tgz
第一次下载的是最新版本的marathon,运行时看见说Mesos JAR版本不够,之后选择安装1.1.1
# tar zxf marathon-1.1.1.tgz
后台运行:nohup ./start --master 10.19.54.111:5050 --zk zk://10.19.54.111:2181/marathon &
9、在Mesos-slave上安装docker
yum update
添加yum仓库:$ sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo] name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
安装docker包:yum install docker-engine
因为网络使用了代理,所以必须透过代理进行docker pull
修改/etc/sysconfig/docker
HTTP_PROXY=代理主机/域名:端口
http_proxy=$HTTP_PROXY
HTTPS_PROXY=$HTTP_PROXY
https_proxy=$HTTP_PROXY
export HTTP_PROXY HTTPS_PROXY http_proxy https_proxy
开启docker deamon并设为开机自启:service docker start 、chkconfig docker on
10、在10.19.53.55上安装docker私库
sudo docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry
:前面的是宿主机的地址(/opt/data/registry),后面是容器的地址(/var/lib/registry)
修改mesos-slave的/etc/sysconfig/docker配置文件,添加:
other_args=’–insecure-registry 10.19.53.55:5000 –graph=/data/docker/images’
OPTIONS=’–selinux-enabled –insecure-registry 10.19.53.55:5000′
使其可以通过http的方式到私库里pull镜像。
mesos+marathon+zookeeper的docker管理集群亲手搭建实例(环境Centos6.8)的更多相关文章
- Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例
目录 [TOC] 1.环境准备 本文中的案例会有四台机器,他们的Host和IP地址如下 c1 -> 10.0.0.31 c2 -> 10.0.0.32 c3 -> 10.0.0. ...
- [转载] Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例
1.环境准备 本文中的案例会有四台机器,他们的Host和IP地址如下 c1 -> 10.0.0.31 c2 -> 10.0.0.32 c3 -> 10.0.0.33 c4 -&g ...
- zookeeper 同一docker伪集群
1).集群目录 cd /usr/local/zookeeper01/data touch myid vi 输入 cd /usr/local/zookeeper01/data touch myid v ...
- Zookeeper 三台主机 Ha集群的搭建
前期准备1.修改Linux主机名 2.修改IP 3.修改主机名和IP的映射关系 /etc/hosts ######注意######如果你们公司是租用的服务器或是使用的云主机(如华为用主机.阿里云主机等 ...
- docker swarm集群搭建及使用Portainer、shipyard
一.规划 1.swarm01作为manager节点,swarm02和swarm03作为worker节点. # cat /etc/hosts 127.0.0.1 localhost 192.168. ...
- hadoop学习第二天-了解HDFS的基本概念&&分布式集群的搭建&&HDFS基本命令的使用
一.HDFS的相关基本概念 1.数据块 1.在HDFS中,文件诶切分成固定大小的数据块,默认大小为64MB(hadoop2.x以后是128M),也可以自己配置. 2.为何数据块如此大,因为数据传输时间 ...
- Docker容器集群管理之Swarm
Docker容器集群管理主流方案 Swarm Docker公司自研发的集群管理系统. Kubernetes Google开源的一个容器集群管理系统,用于自动化部署.扩展和管理容器应用.也称为K8S ...
- 使用 Docker 一步搞定 ZooKeeper 集群的搭建
背景 原来学习 ZK 时, 我是在本地搭建的伪集群, 虽然说使用起来没有什么问题, 但是总感觉部署起来有点麻烦. 刚好我发现了 ZK 已经有了 Docker 的镜像了, 于是就尝试了一下, 发现真是爽 ...
- 非节点主机通过内网远程管理docker swarm集群
这是今天使用 docker swarm 遇到的一个问题,终于在睡觉前解决了,在这篇随笔中记录一下. 在 docker swarm 集群的 manager 节点上用 docker cli 命令可以正常管 ...
随机推荐
- UVa 10870 & 矩阵快速幂
题意: 求一个递推式(不好怎么概括..)的函数的值. 即 f(n)=a1f(n-1)+a2f(n-2)+...+adf(n-d); SOL: 根据矩阵乘法的定义我们可以很容易地构造出矩阵,每次乘法即可 ...
- HTTP协议---HTTP请求中的常用请求字段和HTTP的响应状态码及响应头
http://blog.csdn.net/qxs965266509/article/details/8082810 用于HTTP请求中的常用请求头字段 Accept:用于高速服务器,客户机支持的数据类 ...
- Leetcode Combination Sum II
Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in ...
- 读书笔记:javascript高级技巧(二)
四.惰性载入函数 因为浏览器兼容的原因,我们的javascript代码会有大量的if语句,将执行引导到正确的代码中,看如下函数: function createXHR(){ if (typeof XM ...
- 【wikioi】1003 电话连线
题目链接 算法: 最小生成树 PS:被卡过2天(中间的时间没去做).日期:2013-09-13 13:49:47 ~ 2013-09-17 13:01:07 此题为基础题 刚开始学图论时只会用Krus ...
- qt播放器
播放器 http://blog.csdn.net/foruok/article/details/39005703 图片 http://blog.csdn.net/liyinhuicc/article/ ...
- 翻译-In-Stream Big Data Processing 流式大数据处理
相当长一段时间以来,大数据社区已经普遍认识到了批量数据处理的不足.很多应用都对实时查询和流式处理产生了迫切需求.最近几年,在这个理念的推动下,催生出了一系列解决方案,Twitter Storm,Yah ...
- CSS样式优化
一.css代码优化作用与意义 1.减少占用网页字节.在同等条件下缩短浏览器下载css代码时间,相当于加快网页打开速度2.便于维护.简化和标准化css代码让css代码减少,便于日后维护3.让自己写的cs ...
- 李洪强漫谈iOS开发[C语言-052]-for循环
- console ouput 与 重定向输出 效率对比
昨天做一个程序的性能测试的时候,由于用了自动化脚本,测试的时候直接把结果(包括执行时间等信息)输出到文件.后来我在调整源代码的时候单独跑了可执行文件,此时结果是输出到控制台(printf).大约100 ...