Apache Mesos是由加州大學伯克利分校的AMPLab首先開發的一款開源羣集管理軟件,支持Hadoop、ElasticSearch、Spark、Storm 和Kafka等應用架構。Mesos使用了與Linux內核類似的規則來構造,僅僅是不一樣抽象層級的差異。Mesos從設備(物理機或虛擬機)抽取 CPU,內存,存儲和其餘計算資源,讓容錯和彈性分佈式系統更容易使用。Mesos內核運行在每一個機器上,在整個數據中心和雲環境內向應用程序(Hadoop、Spark、Kafka、Elastic Serarch等等)提供資源管理和資源負載的API接口。java
Apache Mesos採用了Master/Slave結構來簡化設計,將Master作得儘可能輕量級,僅保存了各類計算框架(Framework)和Mesos Slave的狀態信息,這些狀態很容易在Mesos出現故障的時候被重構,除此以外Mesos還可使用Zookeeper解決Master單點故障。python
Mesos Master充當全局資源調度器角色,採用某種策略算法將某個Slave上的空閒資源分配給某個Framework,而各類Framework則是經過本身的調度器向Master註冊進行接入。Mesos Slave則是經過收集任務狀態和啓動各個Framework的Executor。工做原理圖以下。linux
本實驗都是使用的CentOS7系統,由於Mesos配置最低要求內核爲3.10以上。算法
[root@master ~]# uname -r 3.10.0-693.el7.x86_64
主機名 | IP地址 |
---|---|
master | 192.168.58.152 |
slave | 192.168.58.162 |
當前的Mesos支持三種語言編寫的調度器,分別是C++、Java、Python,能夠向不一樣的調度器提供統一的接入方式docker
首先從官網上下載JDK軟件包,地址爲https://www.oracle.com/technetwork/java/,能夠選擇合適的版本下載,我這裏使用的jdk-8u91-linux-x64.tar.gz。apache
[root@master ~]# tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/ #將jdk包解壓到指定目錄中 [root@master ~]# vim /etc/profile export JAVA_HOME=/usr/local/jdk1.8.0_91 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar [root@master ~]# source /etc/profile #將java添加到環境變量中,方便識別
[root@master ~]# yum groupinstall "Development tools" -y
安裝完後,使用yum group list查看已經安裝的工具組。vim
[root@master ~]# wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
[root@master ~]# 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
[root@master ~]# 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
[root@master ~]# vim /etc/profile export MESOS_NATIVE_JAVA_LIBRARY=/usr/local/lib/libmesos.so export MESOS_NATIVE_LIBRARY=/usr/local/lib/libmesos.so [root@master ~]# source /etc/profile
[root@master ~]# wget http://archive.apache.org/dist/mesos/0.25.0/mesos-0.25.0.tar.gz #首先先下載mesos軟件包 [root@master ~]# tar xf mesos-0.25.0 #將mesos軟件包解壓到當前目錄 [root@master ~]# cd mesos-0.25.0/ #進入到解壓完的目錄中 [root@master mesos-0.25.0]# mkdir build/ #建立一個build目錄,具體爲何這麼操做,參考http://mesos.mydoc.io/官方文檔 [root@master mesos-0.25.0]# cd build/ [root@master build]# ../configure #進入到build目錄中,注意是../configure,由於configure在上一層目錄中 [root@master build]# make #注意這個環節時間特別長,要有耐心 [root@master build]# make check #make編譯完後,進行測試,最後可能會有兩個報錯,不過不影響 [root@master build]# make install #最後就是安裝
另外可能在make過程當中會有下圖報錯,那是因爲網絡緣由,致使部分文件沒法下載,致使超時退出,將build目錄下文件都刪除,從新編譯安裝便可。
因爲安裝Mesos時間比較長,因此這裏推薦安裝一臺,其餘的都使用克隆,wmworkstation14的克隆十分方便,要善於利用。centos
Mesos-master負責維護slave羣集的心跳,從slave中提取資源信息,配置以前應該先作好相應的解析工做。瀏覽器
[root@master ~]# hostnamectl set-hostname master #將本機的主機名改成master [root@master ~]# vim /etc/hosts 192.168.58.152 master 192.168.58.162 slave #在hosts文件中寫入ip和主機名的對應關係 [root@master ~]# ping slave PING slave (192.168.58.162) 56(84) bytes of data. 64 bytes from slave (192.168.58.162): icmp_seq=1 ttl=64 time=0.262 ms ^C --- slave ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.262/0.262/0.262/0.000 ms #可使用主機名,直接ping通 [root@master ~]# ln -sf /root/mesos-0.25.0/build/bin/mesos-master.sh /usr/sbin/mesos-master #這是創建軟連接,方便使用mesos的相關命令
配置啓動Mesos-master服務器
[root@master ~]# mesos-master --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --no-hostname_lookup --ip=0.0.0.0 #--work-dir:運行期間數據的存放路徑,包含sanbox、slave meta信息 #--log——dir:日誌存放路徑 #--no-hostname_lookup:是否從DNS獲取主機名,這裏是關閉這個功能,直接從本地hosts文件獲取 #--ip:Mesos進程綁定的IP
配置完成後可使用瀏覽器訪問本地的5050端口進行驗證,記得關閉防火牆和SELinux。
vm14的克隆功能很強大,首先須要先關閉被克隆的虛擬機。
Mesos-slave負責接受並執行來自Mesos-master傳遞的任務以及監控任務狀態,手機任務使用系統的狀況,配置以前也要先作好相應的解析工做。
[root@slave ~]# hostnamectl set-hostname slave #將Mesos-slave服務器主機名改成slave [root@slave ~]# vim /etc/hosts 192.168.58.152 master 192.168.58.162 slave #和Mesos-master同樣
Mesos 0.20.0 開始支持經過 Docker 鏡像來啓動任務,同時也支持部分的 Docker 參數。固然咱們計劃在將來支持更多的參數。用戶能夠將 Docker 鏡像做爲一個任務啓動,也能夠做爲一個 Executor 啓動。爲了運行支持 Docker 容器的 slave,在啓動slave的時候,你必須將 " docker" 做爲 Containerizer ( 容器化 )選項之一 。
[root@slave ~]# yum install docker -y #先安裝docker服務 [root@slave ~]# systemctl start docker.service [root@slave ~]# systemctl enable docker.service #啓動docker服務已經設置爲開機啓動
配置啓動mesos-slave
[root@slave ~]# mesos-slave --containerizers="mesos,docker" --work_dir=/home/q/mesos/data \ > --log_dir=/home/q/mesos/logs --master=192.168.58.152:5050 --no-hostname_lookup --ip=0.0.0.0 #--containerizers 支持docker虛擬化的slave #--master:指定mesos-master地址及端口
運行後,刷新http://192.168.58.152:5050,能夠看到有一個激活的mesos-slave。