Mesos单点Master集群部署和High Availability集群部署

参考的网址:Mesos Deploy Scripts、Mesos High Availability Mode、Mesos Configuration、Re:Problems Of Running mesos-0.20.0 with ZooKeeper

实验环境:mesos版本:0.21.0、操作系统:Red Hat 6  

 

经过三天的折腾,终于将Mesos编译好,并进行了单点Master集群的部署和High Availability集群的部署,官方文档对集群的部署写得比较简略,Mesos的下载、编译和安装可以参考 Mesos Getting Started 或者我的上一篇博文。现在假定我们已经在三台机子上安装了Mesos,接下来是进行集群的配置。以下是两种方式的配置和部署:

 

单点Master集群

集群架构如下:

 

IP 主机名 运行的进程或应用
192.168.70.130 worker00 Mesos Master、Mesos Slave
192.168.70.131 worker01 Mesos Slave
192.168.70.132 worker02 Mesos Slave

注意:如果节点够多的话,建议Master和Slave进程运行在不同的节点中,我只在三个节点中安装了Mesos,所以Master和Slave共享了worker00这个节点
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和mesos-slave-env.sh这三个文件,如下图:

 

1) masters和slaves

这两个文件分别写入运行Master的主机名或IP以及Slave运行的主机名或IP,每行一个,如下图。

Mesos单点Master集群部署和High Availability集群部署_第1张图片

 

 

 

2) mesos-master-env.sh

该文件是关于Master的相关配置。单点Master集群的需要配置的参数是:MESOS_log_dir:log输出的目录,如果不设置,默认不会产生log、MESOS_worker_dir:存放元数据的目录。

Mesos单点Master集群部署和High Availability集群部署_第2张图片

 

 

 

3) mesos-slave-env.sh

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

Mesos单点Master集群部署和High Availability集群部署_第3张图片

 

4)mesos-deploy-env.sh

该文件包含了部署脚本运行的环境变量。只要从模版文件复制过来即可,不需要添加其他参数。

Mesos单点Master集群部署和High Availability集群部署_第4张图片

这样配置文件的相关参数就设置好了。需要将这些配置文件复制给每一个mesos所在的节点。

2、启动集群

在/usr/local/sbin目录下有一些脚本,可以用来启动集群和关闭集群。mesos-start-masters.sh 用于启动所有的Masters; mesos-start-slaves.sh 用于启动所有的Slaves; mesos-start-cluster.sh 用于启动所有的Masters和Slaves; mesos-stop-masters.sh 用于关闭所有的Masters; mesos-stop-slaves.sh 用于关闭所有的Slaves; mesos-stop-cluster.sh 用于关闭所有的Masters和Slaves; 

现在我们执行./mesos-start-cluster.sh启动集群:

 

 

 

3、查看集群启动情况

在浏览器中输入http://192.168.70.130:5050来查看Web UI。可以看到集群已经跑起来了。

Mesos单点Master集群部署和High Availability集群部署_第5张图片

点击Slaves,可以看到从节点的状态。

Mesos单点Master集群部署和High Availability集群部署_第6张图片

High  Availability集群

 

IP 主机名 运行的进程或应用
192.168.70.130 worker00 Mesos Master、Mesos Slave
192.168.70.131 worker01 Mesos Master、Mesos Slave
192.168.70.132 worker02 Mesos Master、Mesos Slave
192.168.70.135 worker05 ZooKeeper
192.168.70.136 worker06 ZooKeeper
192.168.70.137 worker07 ZooKeeper

注意:如果节点够多的话,建议Master和Slave进程运行在不同的节点中,我只在三个节点中安装了Mesos,所以worker00~worker02上都运行了Master和Slave进程。

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和mesos-slave-env.sh这三个文件,如下图:

1) masters和slaves

这两个文件分别写入运行Master的主机名或IP以及Slave运行的主机名或IP,每行一个,如下图。

Mesos单点Master集群部署和High Availability集群部署_第7张图片

2) mesos-master-env.sh

该文件是关于Master的相关配置。主要需要配置的参数是MESOS_zk:Zookeeper的相关信息、MESOS_log_dir:log输出的目录,如果不设置,默认不会产生log、MESOS_worker_dir:存放元数据的目录,如果对配置文件修改后,可能需要删除该目录下的文件,然后再重新启动。之前启动时发现有问题,删除该目录中的数据,重启后,运行正常,但删除该目录下的文件需要谨慎,会使你元数据丢失,个人感觉跟Hadoop的HDFS格式化差不多。MESOS_quorum这个参数在HA中是必不可少的,Master的个数最好是奇数个的,而MESOS_quorum这个参数需要根据Mesos的Master的个数而设定,如

如果你有1个master,MESOS_quorum=1

如果你有3个master,MESOS_quorum=2

如果你有5个master,MESOS_quorum=3

如果你设置成2个master,MESOS_quorum=2或者有2个master,MESOS_quorum=1,这样启动后,当Active 的 Master挂掉后,将无法实现Standby的Master切换成Active。这就是为什么我在这里采用3个master,以及MESOS_quorum设为2的原因。

Mesos单点Master集群部署和High Availability集群部署_第8张图片

3) mesos-slave-env.sh

该文件是Slave相关的配置文件。MESOS_log_dir:log输出的目录,如果不设置,默认不会产生log;MESOS_worker_dir:存放framework工作目录的目录路径(默认: /tmp/mesos)

Mesos单点Master集群部署和High Availability集群部署_第9张图片

4)mesos-deploy-env.sh

该文件包含了部署脚本运行的环境变量。只要从模版文件复制过来即可,不需要添加其他参数。

Mesos单点Master集群部署和High Availability集群部署_第10张图片

这样配置文件的相关参数就设置好了。需要将这些配置文件复制给每一个mesos所在的节点。

2、启动集群

在/usr/local/sbin目录下有一些脚本,可以用来启动集群和关闭集群。mesos-start-masters.sh 用于启动所有的Masters; mesos-start-slaves.sh 用于启动所有的Slaves; mesos-start-cluster.sh 用于启动所有的Masters和Slaves; mesos-stop-masters.sh 用于关闭所有的Masters; mesos-stop-slaves.sh 用于关闭所有的Slaves; mesos-stop-cluster.sh 用于关闭所有的Masters和Slaves; 

在启动集群之前,首先要确定ZooKeeper集群已经启动。ZooKeeper集群的部署和启动这边就不说了,大家应该都是会的(关于ZooKeeper可以参看我之前的  Zookeeper 简要介绍和安装 和 ZooKeeper集群搭建 这两篇文章)。现在我们执行./mesos-start-cluster.sh启动集群:

Mesos单点Master集群部署和High Availability集群部署_第11张图片

3、查看集群启动情况

在浏览器中输入http://192.168.70.130:5050来查看Web UI。可以看到集群已经跑起来了,worker00这个主机上的Master是leader。

Mesos单点Master集群部署和High Availability集群部署_第12张图片

点击Slave,可以看到三个从节点,工作正常。

Mesos单点Master集群部署和High Availability集群部署_第13张图片

在浏览器中输入http://192.168.70.131:5050,显示worker01这个节点的Master不是leader,与我们预期一样。

Mesos单点Master集群部署和High Availability集群部署_第14张图片

在浏览器中输入http://192.168.70.132:5050,显示worker02这个节点的Master也不是leader,也是我们想要的结果。

Mesos单点Master集群部署和High Availability集群部署_第15张图片

 

4、测试High Availability

现在三个Master中worker00上的Master已经被选举为leader,那么如果这个Master进程死掉后,其他worker01和worker02上的两个Master中的其中一个能否被选为leader呢?如果可以,就说明我们的Mesos  High Availability是正常运行的。现在来测试下,在worker00上查找占用5050端口的进程,查找到进程号之后,将它杀掉:

Mesos单点Master集群部署和High Availability集群部署_第16张图片

查看web页面,发现在http://192.168.70.130:5050 (http://worker00:5050)上已经访问不到管理页面了。现在由worker01被选举为leader来接管工作,并且worker01工作正常,至此,大功告成,Mesoso High  Availability集群部署完成了。

虽说配置文件中的内容不多,但是由于参考资料较少,官方文档给出的部署步骤也很简略,所以这是经过我一番折腾,才搞出来的,特意将这些记录下来,方便自己和他人查阅。

Mesos单点Master集群部署和High Availability集群部署_第17张图片

Mesos单点Master集群部署和High Availability集群部署_第18张图片

Mesos单点Master集群部署和High Availability集群部署_第19张图片

你可能感兴趣的:(Mesos)