CentOS7部署Apache Mesos
Apache Mesos是由加州大學伯克利分校的AMPLab首先開發的一款開源群集管理軟件,支持Hadoop、ElasticSearch、Spark、Storm 和Kafka等應用架構。Mesos使用了與Linux內核相似的規則來構造,僅僅是不同抽象層級的差別。Mesos從設備(物理機或虛擬機)抽取 CPU,內存,存儲和其他計算資源,讓容錯和彈性分布式系統更容易使用。Mesos內核運行在每個機器上,在整個數據中心和雲環境內向應用程序(Hadoop、Spark、Kafka、Elastic Serarch等等)提供資源管理和資源負載的API接口。
Apache Mesos工作原理
Apache Mesos采用了Master/Slave結構來簡化設計,將Master做得盡量輕量級,僅保存了各種計算框架(Framework)和Mesos Slave的狀態信息,這些狀態很容易在Mesos出現故障的時候被重構,除此之外Mesos還可以使用Zookeeper解決Master單點故障。
Mesos Master充當全局資源調度器角色,采用某種策略算法將某個Slave上的空閑資源分配給某個Framework,而各種Framework則是通過自己的調度器向Master註冊進行接入。Mesos Slave則是通過收集任務狀態和啟動各個Framework的Executor。工作原理圖如下。
Apache Mesos配置要求
本實驗都是使用的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,可以向不同的調度器提供統一的接入方式
配置java環境
首先從官網上下載JDK軟件包,地址為https://www.oracle.com/technetwork/java/,可以選擇合適的版本下載,我這裏使用的jdk-8u91-linux-x64.tar.gz。
[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查看已經安裝的工具組。
- 添加apache-maven源
為Mesos提供項目管理和構建自動化工具的支持[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
- 配置WANdiscoSVN網絡源
[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
- 配置Mesos環境變量
[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
- 構建Mesos
我們這裏采用的是源碼編譯的方式安裝,當然也可以使用yum倉庫的安裝方式[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的克隆十分方便,要善於利用。配置單臺Mesos-Apache與Mesos-slave
配置Mesos-master
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克隆介紹
vm14的克隆功能很強大,首先需要先關閉被克隆的虛擬機。
配置Mesos-slave
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。
CentOS7部署Apache Mesos