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
  end

  config.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一个镜像并进行部署。

后续还会在此基础上进行HA模式的mesos搭建与应用的部署

你可能感兴趣的:(分布式)