上一篇文章我們瞭解了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進行自動化部署
- 啓動zookeeper
ssh root@192.168.50.4
# 你可以改成你的路徑,但是如果你用我的,默認是這個路徑
/home/zookeeper-3.4.11/bin/zkServer.sh start
- 啓動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選項,因爲不加可能你的防火牆會攔截
- 啓動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管理界面。
- 啓動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搭建與應用的部署