Apache Mesos是一個集羣管理器,可跨分佈式應用程序或框架提供有效的資源隔離和共享。它位於應用程序層和操做系統之間,能夠更加輕鬆地在大規模集羣環境中更有效地部署和管理應用程序。它能夠在動態共享節點池上運行許多應用程序。Apache Mesos將CPU,內存,存儲和其餘計算資源從機器(物理或虛擬)中抽象出來,使容錯和彈性分佈式系統可以輕鬆構建並有效運行。
Apache Mwsos的特色是須要獨立部署mesos-slave進程,依賴framework的功能,能夠管理docker容器,可是成本相對較高,主要優點是穩定性具備保障。java
Apache Mesos採用了Master/Slave結構來簡化設計,將master作的儘量輕量級,僅保存了各類計算機框架(framework)和mesos slave的狀態信息,這些狀態很容易在mesos出現故障時被重構。除此以外mesos還可使用zookeeper解決master單點故障問題。
Mesos Master充當全局資源調度器角色,採用某種算法策略將某個slave上的空閒資源分配給某個framework,而各類framework則是經過本身的調度器項master註冊進行鏈接。mesos slave則是收集任務狀態和啓動各個framework的executor,工做原理以下圖
python
setenforce 0 systemctl stop firewalld.service
主機名 | IP地址 | 安裝軟件 |
---|---|---|
master | 172.16.10.23 | jdk-8u144-linux-x64.tar.gz、mesos-0.25.0.tar.gz |
slave | 172.16.10.43 | jdk-8u144-linux-x64.tar.gz、mesos-0.25.0.tar.gz |
tar zxf jdk-8u144-linux-x64.tar.gz mv jdk1.8.0_144 /usr/local/java
vim /etc/profile export JAVA_HOME=/usr/local/java export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar source /etc/profile //刷新使環境變量生效
yum -y groupinstall "Development Tools"
wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
yum -y install apache-maven \ -- python-devel \ -- zlib-devel \ -- libcurl-devel \ -- openssl-devel \ -- cyrus-sasl-devel \ -- cyrus-sasl-md5 \ -- apr-devel \ -- apr-util-devel \ -- subversion-devel \ -- cyrus-sasl
vim /etc/yum.repo.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 //刷新使環境變量當即生效
tar zxvf mesos-0.25.0.tar.gz -C /root //解壓軟件包 cd /root/mesos-0.25.0 mkdir build //構建配置 cd build ../configure make //編譯 make check //運行測試集 make install //安裝
由於在安裝apache mesos時耗時一個多小時,在配置羣集時都須要安裝此軟件,因此建議採用克隆的方式減小用時。linux
Mesos-master負責維護slave集羣的心跳,從slave提取資源信息。本地實驗沒有作dns解析,因此在這裏修改hosts文件。算法
hostnamectl set-hostname master //設置完成以後需重啓,使修改生效 vim /etc/hosts 172.16.10.23 master 172.16.10.43 slave ln -sf /root/mesos-0.25.0/build/bin/mesos-master.sh /usr/sbin/mesos-master
mesos-master --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --no-hostname_lookup --ip=0.0.0.0
參數釋義:docker
http://192.168.175.145:5050/
Mesos-slave負責接收並執行來自動Mesos-master傳遞的任務以及監控任務狀態,收集任務使用系統的狀況,配置以前仍修改主機名和hosts文件apache
hostnamectl set-hostname slave vim /etc/hosts 172.16.10.23 master 172.16.10.43 slave ln -sf /root/mesos-0.25.0/build/bin/mesos-slave.sh /usr/sbin/mesos-slave
yum install docker -y systemctl start docker.service systemctl enable docker.service
mesos-slave --containerizers="mesos,docker" --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --master=172.16.10.23:5050 --no-hostname_lookup --ip=0.0.0.0
再次對master的5050端口進行驗證,查看slave的狀態
vim