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搭建與應用的部署

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章