您的位置:首页 > 其它

Mesos zookeeper marathon 多节点高可靠性部署方案

2018-01-12 21:21 323 查看

目录

[TOC]
来生成目录:

目录

Mesos 的集群实践
搭建3节点的zookeeper集群

搭建3节点的mesos集群

部署marathon集群

Mesos 的集群实践

搭建mesos集群包含以下组件,zookeeper, mesos, marathon。

如果实现服务发现,可以利用mesos-dns或者第三方组件consul。

本文主要介绍如何搭建一个多节点的稳定的mesos集群,并分别利用mesos-dns和consul实现服务发现的方案。

搭建mesos集群之前先要搭建一个zookeeper集群,可以是单节点也可以多节点,目的是利用zookeeper集群保存mesos节点的信息。本文搭建3个节点的zookeeper集群

1. 搭建3节点的zookeeper集群

下载zookeeper安装包。 https://zookeeper.apache.org/releases.html

我用的是zookeeper-3.4.9.tar.gz

解压tar包到每个zookeeper节点。

$ tar -zxvf zookeeper-3.4.9.tar.gz -C /usr/local
$ cp /usr/local/zookeeper-.3.4.9/conf/zoo_sample.cfg /usr/local/zookeeper-3.4.9/conf/zoo.cfg
$ vim /usr/local/zookeeper-3.4.9/conf/zoo.cfg

dataDir=/usr/local/zookeeper-3.4.9/data
dataLogDir=/usr/local/zookeeper-3.4.9/log

server.1=<zookeeper_ip_01>:2888:3888
server.2=<zookeeper_ip_02>:2888:3888
server.3=<zookeeper_ip_03>:2888:3888

$ mkdir /usr/local/zookeeper-3.4.9/data
$ mkdir /usr/local/zookeeper-3.4.9/log


注意:

Server.A = B:C:D

A表示zookeeper节点的编号, B表示对应主机节点的IP, C表示leader节点与其他follower节点交换信息的端口号,D表示当现在的leader节点down掉之后,所有节点互相通信选择新的leader节点时通信的端口。

分别在3台主机节点上编辑myid文件, 第一行在主机zookeeper_ip_01上执行,第二行在主机zookeeper_ip_02上执行,第三行在主机zookeeper_ip_03上执行

$ echo 1 > /usr/local/zookeeper-3.4.9/data/myid
$ echo 2 > /usr/local/zookeeper-3.4.9/data/myid
$ echo 3 > /usr/local/zookeeper-3.4.9/data/myid


启动zookeeper集群,并查看集群状态。

$ cd /usr/local/zookeeper-3.4.9/bin
$ ./zkServer.sh start
$ ./zkServer.sh status


2. 搭建3节点的mesos集群

下载mesos安装包 http://mesos.apache.org/downloads

本文用的mesos-1.1.0

在所有节点上编译并安装mesos

首先解压mesos源码包到/opt目录,然后下载编译mesos所需的依赖包

$ tar -zxvf mesos-1.1.0.tar.gz -C /opt
$ apt-get update
$ apt-get install -y tar wget git
$ apt-get install -y openjdk-8-jdk
$ apt-get install build-essential python-dev libcurl4-nss-dev libsasl2-dev libsasl2-modules maven libapr1-dev libsvn-dev zlib1g-dev


编译mesos

$ cd /opt/mesos-1.1.0
$ mkdir build
$ mkdir /usr/local/mesos
$ cd build
$ ../configure --prefix=/usr/local/mesos
$ make
$ make install


编译完成之后,需要在每个节点上配置些信息。

在每个节点上创建 masters, slaves文件

$ vim /usr/local/mesos/etc/mesos/masters
master_ip_01
master_ip_02
master_ip_03

$ vim /usr/local/mesos/etc/mesos/slaves
slave_ip_01
slave_ip_02
slave_ip_03


在所有master节点上配置mesos-master-env.sh

$ vim /usr/local/mesos/etc/mesos/mesos-master-env.sh

export MESOS_log_dir=/var/log/mesos
export MESOS_work_dir=/var/lib/mesos
export MESOS_cluster=Mesos-Cluster
export MESOS_zk=zk://<zookeeper_ip_01>:2181,<zookeeper_ip_02>:2181,<zookeeper_ip_03>:2181/mesos
export MESOS_quorum=3


在所有的slave(agent)节点上配置mesos-agent-env.sh

export MESOS_log_dir=/var/log/mesos
export MESOS_work_dir=/var/lib/mesos
export MESOS_containerizers=docker,mesos
export MESOS_master=zk://<zookeeper_ip_01>:2181,<zookeeper_ip_02>:2181,<zookeeper_ip_03>:2181/mesos


配置完成之后,需要在每个master和slave(agent)节点上配置免密钥登录,方便启动mesos集群,否则还需要输入每个节点的密码。

$ ssh-keygen


在每个主机上生成公私钥之后,将自己的公钥 ~/.ssh/id_rsa.pub 拷贝到其他所有节点的~/.ssh/authorized_keys

然后就可以启动mesos集群了。

$ cd /usr/local/mesos
$ ./sbin/mesos-start-cluster.sh


3. 部署marathon集群

marathon部署比较简单。

下载Marathon安装包。http://mesosphere.github.io/marathon

只需要解压开就可以用。

$ tar -zxf marathon-1.3.9.tgz -C /usr/local


启动marathon

$ MESOS_NATIVE_JAVA_LIBRARY=/usr/local/mesos/lib/libmesos.so ./bin/start --master zk://<zookeeper-ip-01>:2181,<zookeeper-ip-02>:2181,<zookeeper-ip-03>:2181/mesos --zk zk://<zookeeper-ip-01>:2181,<zookeeper-ip-02>:2181,<zookeeper-ip-03>:2181/marathon >> /var/log/marathon.log 2>&1 &
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: