规划
Vmware11.1 os: ubuntu-14.04.3
mesos0.26.0-0.2.145 zookeeper3.4.5 marathon0.13.0-1.0.440 (需要java8)
对象机器:
192.168.13.130 master1
192.168.13.134 master2
192.168.13.135 master3
192.168.13.136 slave1
192.168.13.137 slave2
192.168.13.138 slave3
1. 修改hostname和hosts配置文件
#vi /etc/hostname
六太机器分别修改为
master2
master3
slave1
slave2
slave3
#vi /etc/hosts
去掉127.0.0.1 ubuntu1,只保留127.0.0.1 localhost
然后在六太机器里都把下面的ip加上去。
192.168.13.130 master1
192.168.13.134 master2
192.168.13.135 master3
192.168.13.136 slave1
192.168.13.137 slave2
192.168.13.138 slave3
修改完毕后重启机器,然后互相ping master1~slave3,确保6太机器之间互相连通。
2.由于使用的是marathon0.13.0-1.0.440,要求openjdk-8-jre-headless,所以需要安装java8
- 截至目前ubuntu的镜像库里没有java8(最高是java7),直接使用apt-get install jdk1.8是无法安装的。
所以需要添加oracle的镜像库才能安装。(手动下载安装容易出错,会出现openjdk-8-jre-headless没有被安装的情况,建议自动安装)
#sudo apt-get update
#sudo apt-get install oracle-java8-installer (download jdk-8u66-linux-x64.tar.gz需要些时间)
#sudo apt-get install oracle-java8-set-default
检查安装结果
#java -version
root@master3:~# java -version java version "1.8.0_66" Java(TM) SE Runtime Environment (build 1.8.0_66-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode) |
3.安装mesos,zookeeper,marathon (由于最新的mesos版本里已经包含了zookeeper,只需install mesos即可)
a.master1
$ DISTRO=$(lsb_release -is | tr '[:upper:]' '[:lower:]')
$ CODENAME=$(lsb_release -cs)
$ echo "deb http://repos.mesosphere.io/${DISTRO} ${CODENAME} main" | \
sudo tee /etc/apt/sources.list.d/mesosphere.list
$ sudo apt-get -y update
$ sudo apt-get -y install mesos marathon
$ echo manual | sudo tee /etc/init/mesos-slave.override
$ echo 192.168.13.130 | sudo tee /etc/mesos-master/hostname
$ echo 192.168.13.130 | sudo tee /etc/mesos-master/ip
$ echo Cluster01 | sudo tee /etc/mesos-master/cluster
$ echo 2 | sudo tee /etc/mesos-master/quorum
$ echo zk://master1:2181,master2:2181,master3:2181/mesos | sudo tee /etc/mesos/zk
$ echo 1 | sudo tee /etc/zookeeper/conf/myid
$ sudo reboot
修改/etc/zookeeper/conf/zoo.cfg
设置marathon配置文件
$mkdir -p /etc/marathon/conf
$ echo 192.168.13.130 | sudo tee /etc/marathon/conf/hostname
$ echo zk://master1:2181,master2:2181,master3:2181/marathon | sudo tee /etc/marathon/conf/zkb.master2
$ DISTRO=$(lsb_release -is | tr '[:upper:]' '[:lower:]')
$ CODENAME=$(lsb_release -cs)
$ echo "deb http://repos.mesosphere.io/${DISTRO} ${CODENAME} main" | \
sudo tee /etc/apt/sources.list.d/mesosphere.list
$ sudo apt-get -y update
$ sudo apt-get -y install mesos
$ echo manual | sudo tee /etc/init/mesos-slave.override
$ echo 192.168.13.134 | sudo tee /etc/mesos-master/hostname
$ echo 192.168.13.134 | sudo tee /etc/mesos-master/ip
$ echo Cluster01 | sudo tee /etc/mesos-master/cluster
$ echo 2 | sudo tee /etc/mesos-master/quorum
$ echo zk://master1:2181,master2:2181,master3:2181/mesos | sudo tee /etc/mesos/zk
$ echo 2 | sudo tee /etc/zookeeper/conf/myid
$ sudo reboot
修改/etc/zookeeper/conf/zoo.cfg
设置marathon配置文件
$mkdir -p /etc/marathon/conf
$ echo 192.168.13.134 | sudo tee /etc/marathon/conf/hostname
$ echo zk://master1:2181,master2:2181,master3:2181/marathon | sudo tee /etc/marathon/conf/zk
c.master3
$ DISTRO=$(lsb_release -is | tr '[:upper:]' '[:lower:]')
$ CODENAME=$(lsb_release -cs)
$ echo "deb http://repos.mesosphere.io/${DISTRO} ${CODENAME} main" | \
sudo tee /etc/apt/sources.list.d/mesosphere.list
$ sudo apt-get -y update
$ sudo apt-get -y install mesos
$ echo manual | sudo tee /etc/init/mesos-slave.override
$ echo 192.168.13.135 | sudo tee /etc/mesos-master/hostname
$ echo 192.168.13.135 | sudo tee /etc/mesos-master/ip
$ echo Cluster01 | sudo tee /etc/mesos-master/cluster
$ echo 2 | sudo tee /etc/mesos-master/quorum
$ echo zk://master1:2181,master2:2181,master3:2181/mesos | sudo tee /etc/mesos/zk
$ echo 2 | sudo tee /etc/zookeeper/conf/myid
$ sudo reboot
修改/etc/zookeeper/conf/zoo.cfg
设置marathon配置文件
$mkdir -p /etc/marathon/conf
$ echo 192.168.13.135 | sudo tee /etc/marathon/conf/hostname
$ echo zk://master1:2181,master2:2181,master3:2181/marathon | sudo tee /etc/marathon/conf/zk
d.slave1
$ DISTRO=$(lsb_release -is | tr '[:upper:]' '[:lower:]')
$ CODENAME=$(lsb_release -cs)
$ echo "deb http://repos.mesosphere.io/${DISTRO} ${CODENAME} main" | \
sudo tee /etc/apt/sources.list.d/mesosphere.list
$ sudo apt-get -y update
$ sudo apt-get -y install mesos
$ echo manual | sudo tee /etc/init/mesos-master.override
$ echo manual | sudo tee /etc/init/zookeeper.override
$ echo 192.168.13.136 | sudo tee /etc/mesos-slave/hostname
$ echo 192.168.13.136 | sudo tee /etc/mesos-slave/ip
$ echo "cgroups/cpu,cgroups/mem" | sudo tee /etc/mesos-slave/isolation
$ echo zk://master1:2181,master2:2181,master3:2181/mesos | sudo tee /etc/mesos/zk
$ sudo reboot
e.slave2
$ DISTRO=$(lsb_release -is | tr '[:upper:]' '[:lower:]')
$ CODENAME=$(lsb_release -cs)
$ echo "deb http://repos.mesosphere.io/${DISTRO} ${CODENAME} main" | \
sudo tee /etc/apt/sources.list.d/mesosphere.list
$ sudo apt-get -y update
$ sudo apt-get -y install mesos
$ echo manual | sudo tee /etc/init/mesos-master.override
$ echo manual | sudo tee /etc/init/zookeeper.override
$ echo 192.168.13.137 | sudo tee /etc/mesos-slave/hostname
$ echo 192.168.13.137 | sudo tee /etc/mesos-slave/ip
$ echo "cgroups/cpu,cgroups/mem" | sudo tee /etc/mesos-slave/isolation
$ echo zk://master1:2181,master2:2181,master3:2181/mesos | sudo tee /etc/mesos/zk
$ sudo reboot
e.slave2
$ DISTRO=$(lsb_release -is | tr '[:upper:]' '[:lower:]')
$ CODENAME=$(lsb_release -cs)
$ echo "deb http://repos.mesosphere.io/${DISTRO} ${CODENAME} main" | \
sudo tee /etc/apt/sources.list.d/mesosphere.list
$ sudo apt-get -y update
$ sudo apt-get -y install mesos
$ echo manual | sudo tee /etc/init/mesos-master.override
$ echo manual | sudo tee /etc/init/zookeeper.override
$ echo 192.168.13.137 | sudo tee /etc/mesos-slave/hostname
$ echo 192.168.13.137 | sudo tee /etc/mesos-slave/ip
$ echo "cgroups/cpu,cgroups/mem" | sudo tee /etc/mesos-slave/isolation
$ echo zk://master1:2181,master2:2181,master3:2181/mesos | sudo tee /etc/mesos/zk
$ sudo reboot
f.slave3
$ DISTRO=$(lsb_release -is | tr '[:upper:]' '[:lower:]')
$ CODENAME=$(lsb_release -cs)
$ echo "deb http://repos.mesosphere.io/${DISTRO} ${CODENAME} main" | \
sudo tee /etc/apt/sources.list.d/mesosphere.list
$ sudo apt-get -y update
$ sudo apt-get -y install mesos
$ echo manual | sudo tee /etc/init/mesos-master.override
$ echo manual | sudo tee /etc/init/zookeeper.override
$ echo 192.168.13.138 | sudo tee /etc/mesos-slave/hostname
$ echo 192.168.13.138 | sudo tee /etc/mesos-slave/ip
$ echo "cgroups/cpu,cgroups/mem" | sudo tee /etc/mesos-slave/isolation
$ echo zk://master1:2181,master2:2181,master3:2181/mesos | sudo tee /etc/mesos/zk
$ sudo reboot
3.web url确认安装结果
http://master1:5050 查看master,zookeeper会自动选举一个master出来,该url也会自动跳转到被选举的master上
http://master1:8080 查看marahon,并可以提交一个任务。
安装过程中遇到的2个问题
1./etc/mesos-master/quorum的设置问题,导致zookeeper虽然正常启动,但是处于waiting状态,造成http://master1:8080无法打开的问题。
查看marathon的log,会有如下message
INFOOpening socket connection to server localhost/master1:2181.Willnot attempt to authenticateusing SASL (unknownerror) (org.apache.zookeeper.ClientCnxn:975)
解决方法quorum的值> master个数/2,本例的话,3个master,所以应该设置成2,同时必须要启动2个以上的master,否则zookeeper不能正常选举,同样marahon无法正常运行。
2./etc/mesos-slave/hostname的漏设。造成http://master1:5050里,查看slave2的log的时候出现下面问题
Theslave's hostname, 'slave2', is not accessible from your network
Theslave's port, '5051', is not accessible from your network
解决方法:
etc/mesos-slave下面添加
hostname ip isolation
。