使用Docker部署Mesos

使用Docker部署Mesos

部署環境

  • 宿主機: macOS Sierra 10.12.1
  • VirtualBox: Version 5.1.8 r111374 (Qt5.5.1)
  • Vagrant: 1.8.7
  • Vagrant Box: CentOS/7

虛擬機啓動環境

Host IP 作用
mesos-01 172.20.201.101 master,slave1,marathon
mesos-02 172.20.201.102 slave2
mesos-03 172.20.201.103 slave3

Vagrantfile內容如下:

$num_instances = 3
$vm_gui = false
$vm_memory = 1024
$vm_cpus = 1
$instance_name_prefix = "mesos"
$vb_cpuexecutioncap = 100

def vm_gui
  $vb_gui.nil? ? $vm_gui : $vb_gui
end

def vm_memory
  $vb_memory.nil? ? $vm_memory : $vb_memory
end

def vm_cpus
  $vb_cpus.nil? ? $vm_cpus : $vb_cpus
end

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"

  (1..$num_instances).each do |i|
    config.vm.define vm_name = "%s-%02d" % [$instance_name_prefix, i] do |config|
      config.vm.hostname = vm_name

      config.vm.provider :virtualbox do |vb|
        vb.gui = vm_gui
        vb.memory = vm_memory
        vb.cpus = vm_cpus
        vb.customize ["modifyvm", :id, "--cpuexecutioncap", "#{$vb_cpuexecutioncap}"]
      end

      ip = "172.20.201.#{i+100}"
      config.vm.network :private_network, ip: ip

      # config.vm.synced_folder "./data", "/vagrant_data"
    end
    config.vm.provision "shell", inline: <<-SHELL
      # apt-get update
      curl -s https://get.docker.com/ | sudo sh
    SHELL
  end
end

啓動虛擬機

vagrant up

執行上述命令後,虛擬機在啓動之後將自動安裝最新版本Docker

ZooKeeper啓動

只是爲了測試,啓單節點的ZooKeeper

docker run --name zookeeper \
  --restart always \
  -d \
  -p 2181:2181 \
  zookeeper

master安裝

# 登錄mesos-01:
vagrant ssh mesos-01

# 啓動Docker
sudo systemctl enable docker && systemctl restart docker

啓動Master

docker run -d --net=host \
  --name mesos_master \
  -e MESOS_PORT=5050 \
  -e MESOS_ZK=zk://172.20.201.101:2181/mesos \
  -e MESOS_QUORUM=1 \
  -e MESOS_REGISTRY=in_memory \
  -e MESOS_LOG_DIR=/var/log/mesos \
  -e MESOS_WORK_DIR=/var/tmp/mesos \
  -v "$(pwd)/log/mesos:/var/log/mesos" \
  -v "$(pwd)/tmp/mesos:/var/tmp/mesos" \
  mesosphere/mesos-master:1.1.0-2.0.107.ubuntu1404 \
  --ip=172.20.201.101 \
  --advertise_ip=172.20.201.101

啓動slave


docker run -d --net=host --privileged \
  --name mesos_slave \
  -e MESOS_PORT=5051 \
  -e MESOS_MASTER=zk://172.20.201.101:2181/mesos \
  -e MESOS_SWITCH_USER=0 \
  -e MESOS_CONTAINERIZERS=docker,mesos \
  -e MESOS_LOG_DIR=/var/log/mesos \
  -e MESOS_WORK_DIR=/var/tmp/mesos \
  -v "$(pwd)/log/mesos:/var/log/mesos" \
  -v "$(pwd)/tmp/mesos:/var/tmp/mesos" \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /sys/fs/cgroup:/cgroup \
  -v /sys:/sys \
  -v /usr/bin/docker:/usr/local/bin/docker \
  mesosphere/mesos-slave:1.1.0-2.0.107.ubuntu1404 \
  --ip=172.20.201.101 \
  --launcher=posix

啓動marathon

docker run -d --net=host --privileged \
  --name mesos_marathon \
  mesosphere/marathon:latest \
  --master zk://172.20.201.101:2181/mesos \
  --zk zk://172.20.201.101:2181/marathon \
  --http_port 8080 \
  --http_address 172.20.201.101 

安裝其他節點

docker run -d --net=host --privileged \
  --name mesos_slave \
  -e MESOS_PORT=5051 \
  -e MESOS_MASTER=zk://172.20.201.101:2181/mesos \
  -e MESOS_SWITCH_USER=0 \
  -e MESOS_CONTAINERIZERS=docker,mesos \
  -e MESOS_LOG_DIR=/var/log/mesos \
  -e MESOS_WORK_DIR=/var/tmp/mesos \
  -v "$(pwd)/log/mesos:/var/log/mesos" \
  -v "$(pwd)/tmp/mesos:/var/tmp/mesos" \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /sys/fs/cgroup:/cgroup \
  -v /sys:/sys \
  -v /usr/bin/docker:/usr/local/bin/docker \
  mesosphere/mesos-slave:1.1.0-2.0.107.ubuntu1404 \
  --ip=[其他節點IP] \
  --launcher=posix

檢查

安裝完成後,打開地址http://172.20.201.101:5050,打開如下頁面:
這裏寫圖片描述

打開marathon地址http://172.20.201.101:8080,顯示如下:
這裏寫圖片描述

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