Apache Mesos是一款基於多資源調度的開源集羣管理套件,使容錯和分佈式系統更加容易使用實現,採用Master/Slave結構簡化設計,將Master儘量輕量級,進保存了Mesos Slave的狀態信息java
工具 | 特色 | 優點 |
---|---|---|
Apache Mesos | 須要獨立部署mesos-slave進程;依賴framework的功能;可管理docker容器;成本較高 | 應爲通過許多互聯網公司的大規模實踐,穩定性具備保障 |
Docker Swarm | Docker 官方羣集工具,須要Docker deamon 啓用tcp端口學習;Swarm的命令兼容Docker;學習成本很是低 | 公有云環境Machine 和 Swarm 搭配使用效率更高 |
Google Kubernetes | 徹底DOcker化的管理工具,功能迭代很是快;羣集管理能力比mesos稍差 | 功能模塊集成度高 |
實驗環境 | IP地址 | 內核版本3.10以上 |
---|---|---|
master | 192.168.10.157 | 3.10.0-693.el7.x86_64 |
master1 | 192.168.10.132 | 3.10.0-693.el7.x86_64 |
master2 | 192.168.10.133 | 3.10.0-693.el7.x86_64 |
slave1 | 192.168.10.135 | 3.10.0-693.el7.x86_64 |
slave2 | 192.168.10.134 | 3.10.0-693.el7.x86_64 |
tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/ cd /usr/local mv jdk1.8.0_91/ java #在/etc/profile配置環境變量 vim /etc/profile export JAVA_HOME=/usr/local/java export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar //末行添加 source /etc/profile //加載當即生效
(1)安裝開發工具python
yum groupinstall -y "Development Tools" //安裝開發工具的時候可能會出現沒有相關的軟件包這時候要根據報錯提示先安裝相關依賴包
(2)添加Apache-maven源linux
wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
(3)安裝相關依賴包docker
yum install -y apache-maven python-devel zlib-devel libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 apr-devel apr-util-devel subversion-devel
(4)配置WANdiscoSVN網絡源apache
vim /etc/yum.repos.d/wandisco-svn.repo [WANdiscoSVN] name=WANdisco SVN Repo 1.9 enabled=1 baseurl=http://opensource.wandisco.com/centos/7/svn-1.9/RPMS/$basearch/ gpgcheck=1 gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
vim /etc/profile export MESOS_NATIVE_JAVA_LIBRARY=/usr/local/lib/libmesos.so export MESOS_NATIVE_LIBRARY=/usr/local/lib/libmesos.so source /etc/profile
編譯安裝Mesosvim
wget http://www.apache.org/dist/mesos/0.25.0/mesos-0.25.0.tar.gz //下載軟件包 tar zxvf mesos-0.25.0.tar.gz -C /opt/ mv mesos-0.25.0/ /root/ cd /root/mesos-0.25.0 mkdir build cd build ../configure make //等待時間長(在線狀態) make check make install 因爲安裝mesos用時較長,而實驗每臺主機都需安裝mesos,因此建議克隆虛擬機
hostnamectl set-hostname master //修改主機名 #在hosts文件裏面寫入三臺master 兩臺slave的主機IP地址 vim /etc/hosts 192.168.10.157 master 192.168.10.132 master1 192.168.10.133 master2 192.168.10.135 slave1 192.168.10.134 slave2 #能夠直接用scp發送至另外四臺服務器 scp /etc/profile 192.168.10.132:/etc/profile //其餘主機相似 #創建軟鏈接 ln -sf /root/mesos-0.25.0/build/bin/mesos-slave.sh /usr/sbin/mesos-slave
此前應已經安裝完mesos,並修改了主機名和/etc/hosts文件 ln -sf /root/mesos-0.25.0/build/bin/mesos-slave.sh /usr/sbin/mesos-slave //創建軟連接 //安裝docker並開啓 yum install docker -y systemctl start docker.servicev #運行 systemctl enable docker.service #開機自啓動
在三個Mesos-master節點上安裝Zookeepercentos
tar zxvf zookeeper-3.4.6.tar.gz -C /home/q/ cd /home/q/zookeeper-3.4.6/conf/ mv zoo_sample.cfg zoo.cfg vim zoo.cfg dataDir=/home/q/zookeeper-3.4.6/data //從新定義數據存放位置 dataLogDir=/home/q/zookeeper-3.4.6/datalog server.1=192.168.10.157:2888:3888 server.2=192.168.10.132:2888:3888 server.3=192.168.10.133:2888:3888
#按照zoo.cfg配置文件的swerver一、二、3修改每臺master的myid //在master主機上操做(/opt/home/zookeeper-3.4.6/中) mkdir data datalog echo 1 > data/myid cat data/myid
//在master1主機上操做(/opt/home/zookeeper-3.4.6/中) mkdir data datalog echo 2 > data/myid cat data/myid
//在master2主機上操做(/opt/home/zookeeper-3.4.6/中) mkdir data datalog echo 3 > data/myid cat data/myid
啓動zookeeper服務器
//在master主機上啓動服務 ./bin/zkServer.sh start conf/zoo.cfg //查看zookeeper狀態 ./bin/zkServer.sh status
//在master1主機上啓動服務 ./bin/zkServer.sh start conf/zoo.cfg //查看zookeeper狀態 ./bin/zkServer.sh status
//在master2主機上啓動服務 ./bin/zkServer.sh start conf/zoo.cfg //查看zookeeper狀態 ./bin/zkServer.sh status
啓動master服務
先啓動leader服務器上的zookeeper,這是採用雙選舉機制先zookeeper選舉出個leader而後mesos第一臺啓動默認就是leader網絡
//master1 mesos-master --work_dir=/opt/home/mesos/data --log_dir=/opt/home/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://192.168.10.132:2181/mesos --quorum=2 //master mesos-master --work_dir=/opt/home/mesos/data --log_dir=/opt/home/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://192.168.10.157:2181/mesos --quorum=2 //master2 mesos-master --work_dir=/opt/home/mesos/data --log_dir=/opt/home/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://192.168.10.133:2181/mesos --quorum=2
啓動mesos-slavecurl
slave1 mesos-slave --containerizers="mesos,docker" --work_dir=/opt/home/mesos/data --log_dir=/opt/home/mesos/logs --master=zk://192.168.10.157:2181,192.168.10.132:2181,192.168.10.133:2181/mesos --no-hostname_lookup --ip=0.0.0.0 slave2 mesos-slave --containerizers="mesos,docker" --work_dir=/opt/home/mesos/data --log_dir=/opt/home/mesos/logs --master=zk://192.168.10.157:2181,192.168.10.132:2181,192.168.10.133:2181/mesos --no-hostname_lookup --ip=0.0.0.0
此時用網頁訪問http://192.168.10.132:5050
若訪問的IP不是leader的IP則會向leaderIP跳轉
兩臺從服務器的信息