CentOS7部署Apache Mesos

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查看已經安裝的工具組。
    CentOS7部署Apache Mesos

  • 添加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

    CentOS7部署Apache Mesos

  • 安裝相關依賴包
    [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目錄下文件都刪除,重新編譯安裝即可。
    CentOS7部署Apache Mesos
    由於安裝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。
    CentOS7部署Apache Mesos

    vm14克隆介紹

    vm14的克隆功能很強大,首先需要先關閉被克隆的虛擬機。
    CentOS7部署Apache Mesos
    CentOS7部署Apache Mesos
    CentOS7部署Apache Mesos
    CentOS7部署Apache Mesos
    CentOS7部署Apache Mesos
    CentOS7部署Apache Mesos

    配置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
    CentOS7部署Apache Mesos

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章