mesos+marathon+docker搭建的平台属于docker的集群管理,也属于资源调度管理平台,用于docker应用的集中化部署,云计算等。
平台的优点
抽象化
平台的目的是将多台机器的资源集中管理并抽象成一个计算资源对象,如机房现在有上百台机器运行,则抽象化后平台的计算能力为100cores、500mem、200Tdisk。
资源利用率高
使用者可以将自己的docker应用直接交付给平台,平台来自动分配资源,至于这个应用部署到哪台机器上,使用者无须担心这个问题。而且这些资源是集中管理的,保证每台机器的资源都能最大化利用。
自动容灾
自动部署的应用,会在marathon里面管理,当部署应用的机器出现故障,marathon会自动将这些应用迁移到别的机器上。
类似的管理平台有docker官方的swarm,google的kubernetes,kubernetes出现的比较晚些,个人认为kubernetes比这套更完善一些,下次可以讲下kubernetes的相关介绍。
注:docker在centos6上面运行很不稳定,如果要在mesos上运行docker的话,建议用centos7
根据官网说明安装的过程记录,linux不同版本操作系统安装不太一样,官网看这里mesosphere官网安装
由于mesos的master和slave节点之间是通过zookeeper进行关联通信的,而且zookeeper建议master至少是三个节点,这里测试用一个也可以
添加阿里云yum
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
添加mesosphere源
sudo rpm -Uvh http://repos.mesosphere.com/el/7/noarch/RPMS/mesosphere-el-repo-7-1.noarch.rpm
sudo yum -y install mesos marathon
(下面是安装zookeeper的,安装过的就不用安装了)
sudo yum -y install mesosphere-zookeeper
touch /var/lib/zookeeper/myid
echo 1 > /var/lib/zookeeper/myid
vi /etc/zookeeper/conf/zoo.cfg
(在结尾添加)
server.1=192.168.1.24:2888:3888
touch /etc/mesos/zk
echo "zk://192.168.1.24:2181/mesos" > /etc/mesos/zk
touch /etc/mesos-master/quorum
echo 1 > /etc/mesos-master/quorum
(在里面添加一个数字,数字大小不小于master的数量除以2,这里测试一个master,填1就可以)
touch /etc/mesos-master/ip
echo "192.168.1.24" > /etc/mesos-master/ip
(添加master的ip,默认是127.0.0.1,只做显示用)
touch /etc/mesos-master/hostname
echo "192.168.1.24" > /etc/mesos-master/hostname
(添加master的hostname,默认为localhost,主要在mesos集群间使用,不是机器的hostname,只做显示用)
这个设置和上面配置mesos的hostname效果一样,不配置会显示默认的localhost,不影响使用
mkdir -p /etc/marathon/conf/ && touch hostname
echo 192.168.1.24 | sudo tee /etc/marathon/conf/hostname
#关机开启启动
systemctl stop mesos-slave.service
systemctl disable mesos-slave.service
#设置开机启动
systemctl enable mesos-master.service
systemctl enable marathon.service
systemctl enable zookeeper.service
注意:如果master多个,每一个机器上面都要启动
service zookeeper start(stop,restart)
service mesos-master start(stop,restart)
service marathon start(stop,restart)
#安装mesos
sudo yum -y install mesos
#安装docker
curl -fsSL https://get.docker.com/ | sh
touch /etc/mesos/zk
echo "zk://192.168.1.24:2181/mesos" > /etc/mesos/zk
touch /etc/mesos-slave/ip
echo "192.168.1.25" > /etc/mesos-slave/ip
(添加slave的ip,默认是127.0.0.1,只做显示用)
touch /etc/mesos-slave/hostname
echo "192.168.1.25" > /etc/mesos-slave/hostname
(添加slave的hostname,默认为localhost,主要在mesos集群间使用,不是机器的hostname,只做显示用)
echo 'docker,mesos' > /etc/mesos-slave/containerizers
echo '5mins' > /etc/mesos-slave/executor_registration_timeout
##关闭开机启动
sudo systemctl stop mesos-master.service
sudo systemctl disable mesos-master.service
##设置开机启动
systemctl enable mesos-slave.service
systemctl enable docker.service
注意:如果slave多个,每一个机器上面都要启动
service mesos-slave start(stop,restart)
service docker start