mesos入门(二)——简单环境搭建

上一篇文章我们了解了mesos解决的问题以及其大致的原理,这篇文章就开始实战搭建一个mesos实战环境
简介
具体地址+操作: https://github.com/ncuwaln/mesos-learn
环境搭建我们采用vagrant来最大程度的模拟真实环境,采用ansible来进行分布式自动运维
环境组成:mesos+docker+marathon,目前暂时只是单master,单zookeeper,单slave,和单marathon,后续会加上HA模式的部署
大致组成
主要看一下Vagrantfile+主要的playbook的yml文件+inventory.cfg
Vagrantfile

Vagrant.configure("2") do |config| config.vm.define "master" do |master| master.vm.box = "CentOS7" master.vm.network "private_network", ip: "192.168.50.4" master.vm.provision :shell, inline: "echo 'root:root' | sudo chpasswd" config.vm.provider "virtualbox" do |v| v.memory = 2048 v.cpus = 4 end endconfig.vm.define "slave" do |slave| slave.vm.box = "CentOS7" slave.vm.network "private_network", ip: "192.168.50.5" slave.vm.provision :shell, inline: "echo 'root:root' | sudo chpasswd" config.vm.provider "virtualbox" do |v| v.memory = 2048 v.cpus = 4 end end end

我特意指定了虚拟机的cpu和内存大小,因为初始编译mesos时很慢而且编译中途抛了oom异常,其实2核+1024应该就够用了
inventory.cfg
[all] 192.168.50.4 192.168.50.5[master] 192.168.50.4[slave] 192.168.50.5

mesos.yml
---- hosts: all remote_user: root roles: - install tags: install_denpendencies- hosts: all remote_user: root vars: software_path: /tmp remote_dir: /tmp test: false roles: - install_mesos tags: install_mesos- hosts: slave remote_user: root roles: - install_docker tags: install_docker- hosts: master remote_user: root vars: software_path: /tmp remote_dir: /home roles: - install_zk tags: install_zk- hosts: master remote_user: root vars: software_path: /tmp remote_dir: /home roles: - install_marathon tags: install_marathon

我把步骤分的很细,避免一次失败全部重来
tips: 各个组件的下载和安装真的很耗时,我觉得可以做一个安装好了各个组件的镜像,这样可以节省大量时间
安装好后的运行
暂时直接进入虚拟机里执行命令,后续会用ansible的API进行自动化部署
  1. 启动zookeeper
ssh root@192.168.50.4 # 你可以改成你的路径,但是如果你用我的,默认是这个路径 /home/zookeeper-3.4.11/bin/zkServer.sh start

  1. 启动mesos master
ssh root@192.168.50.4 mesos-master --hostname=192.168.50.4 --quorum=1 --zk=zk://192.168.50.4:2181/mesos --work_dir=/var/lib/mesos/master --advertise_ip=192.168.50.4&

建议一定加上–advertise_ip选项,因为不加可能你的防火墙会拦截
  1. 启动mesos slave
ssh root@192.168.50.5 mesos-agent --hostname=192.168.50.5 --master=zk://192.168.50.4:2181/mesos --work_dir=/var/lib/mesos/agent --advertise_ip=192.168.50.5 --containerizers=docker,mesos &

此时你可以进入http://192.168.50.4:5050,你会看到mesos的web管理界面。
  1. 启动marathon
MESOS_NATIVE_JAVA_LIBRARY=/usr/local/lib/libmesos.so /home/marathon-1.5.0-96-gf84298d/bin/marathon --master zk://192.168.50.4:2181/mesos --zk zk://192.168.50.4:2181/marathon&

前面的环境变量是用来指定mesos的动态链接库的位置的,此时你可以进入http://192.168.50.4:8080来查看marathon的web管理界面
后续我将会用marathon部署一个我编写的用于测试的web服务,用docker,其实这个很简单,但是我碰到了一些问题,就是目前的文档中都是直接运行一个docker镜像,我在想有没有办法在mesos上从dockerfile开始build一个镜像并进行部署。
【mesos入门(二)——简单环境搭建】后续还会在此基础上进行HA模式的mesos搭建与应用的部署

    推荐阅读