Docker容器與虛擬化技術——Apache Mesos

                                                      Apache Mesos

一、Apache Mesos概述
1、工作原理
    mesos採用了master/slave結構來假話設計,將master做的儘可能輕量級,僅保存了各種計算框架(Framwork)和mesos slave信息,這些狀態很容易在mesos出現故障時被重構,除此之外mesos還可以使用zookeeper解決單點故障問題
    mesos master充當全局資源調度器角色,採用某種策略算法將某個slave上的空閒資源分配給某個framework,而各種framework則是通過自己的調度器向master註冊進行接入。slave則是手機任務狀態和啓動各個framework的executor。

2、基本術語
(1)Mesos master:負責管理各個Framework和Slave,並將Slave上的資源分配給各個Framework
(2)Mesos Slave:負責管理本節點上的各個Mesos Task,爲各個Executor分配資源(負責彙報本節點上的資源給 master,並負責隔離資源並執行具體的任務)
(3)Framework:計算框架,如:Hadoop、Spark等,可以通過MesosSchedulerDiver接入Mesos(framework 是實際幹活的,可以理解爲 mesos 上跑的應用,需要註冊到 master 上)
①scheduler:註冊到主節點,按照作業分解爲任務,並申請資源並監控任務運行狀況
②executor:安裝在 slave 節點上,負責執行本 framework 的具體任務

二、Apache Mesos配置
1、準備服務器環境
    準備5臺centos7,關閉防火牆及selinux,修改計算機名並配置hosts文件
    Master:安裝jdk、mesos、zookeeper、marathon
    Slave:安裝jdk、mesos、docker

2、單臺mast及slave配置
(1)Mesos Master
①安裝jdk(注意最後的環境變量設置)
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
②安裝mesos
1)配置yum源
rpm -Uvh http://repos.mesosphere.io/el/7/noarch/RPMS/mesosphere-el-repo-7-3.noarch.rpm
2)安裝mesos
yum -y install mesos
systemctl disable mesos-master
systemctl disable mesos-slave
③簡配啓動Mesos Master
mesos-master --work_dir=/home/mesos/data --log_dir=/home/mesos/logs --no-hostname_lookup --ip=0.0.0.0
(2)Mesos Slave
①安裝docker及mesos
wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce-18.09.6
②安裝mesos並啓動
mesos-slave --containerizers="mesos,docker" --work_dir=/home/mesos/data --log_dir=/home/mesos/logs --master=192.168.100.11:5050 --no-hostname_lookup --ip=0.0.0.0

3、單臺mesos-master配置zookeeper
    ZooKeeper是一個開源的分佈式應用程序協調服務,可以爲分佈式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分佈式同步、組服務等。
    它的目標就是將複雜易出錯的關鍵服務進行封裝,提供給用戶性能高效、功能穩定、簡單易用的系統
(1)下載ZooKeeper後,只需要將配置文件模板改名即可使用
下載地址:http://mirrors.cnnic.cn/apache/zookeeper/
配置文件:mv zoo_sample.cfg zoo.cfg
(2)啓動服務
./bin/zkServer.sh start conf/zoo.cfg
單機模式處於standalone狀態
(3)測試連接
./bin/zkCli.sh
(4)運行mesoso-master及slave
mesos-master --work_dir=/home/mesos/data --log_dir=/home/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://192.168.11.52:2181/mesos --quorum=2
mesos-slave --containerizers="mesos,docker" --work_dir=/home/mesos/data --log_dir=/home/mesos/logs --master=zk://192.168.11.52:2181/mesos --no-hostname_lookup --ip=0.0.0.0
①--zk:ZooKeeper地址,用於leader選舉,指定zk端口號
②--zk_session_timeout:根據網絡環境調整zk session超時時間(默認10s)
③--quorum:master replica logs多寫數量,多master場景下此值要超過master數量的一半
④--credential:提供祕鑰對,介入集羣時用於驗證

4、配置多mesos-master環境
(1)所有master節點安裝zookeeper
(2)配置zookeeper
dataDir=/usr/local/zookeeper-3.4.14/data
dataLogDir=/usr/local/zookeeper-3.4.14/datalog
server.1=192.168.11.52:2888:3888
server.2=192.168.11.54:2888:3888
server.3=192.168.11.55:2888:3888
2888:服務器交換信息的端口
3888:leader選舉所用端口
(3)創建data、datalog目錄及myid文件
mkdir /usr/local/zookeeper-3.4.14/data
dataLogDir=/usr/local/zookeeper-3.4.14/datalog
echo 1 > /usr/local/zookeeper-3.4.14/data/myid
(4)啓動zookeeper服務
./zkServer.sh start /conf/zoo.cfg
(5)查看狀態:zkServer.sh status
(6)啓動mesos-master
mesos-master --work_dir=/home/mesos/data --log_dir=/home/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://192.168.11.52:2181/mesos --quorum=2
(7)啓動mesos-slave
mesos-slave --containerizers="mesos,docker" --work_dir=/home/mesos/data --log_dir=/home/mesos/logs --master=zk://192.168.11.52:2181,192.168.11.54:2181,192.168.11.55:2181/mesos --no-hostname_lookup --ip=0.0.0.0
(8)其他配置參數
--vhitelist:master參數,白名單,用來限制task調度
--authenticate:master參數,開啓接入認證,一旦開啓,無證書的slave將無法接入
--credentials:master參數,搭配--authenticate。提供祕鑰對
--roles:master參數,定義整個mesos中的角色,用於資源分配
--resources:slave參數,針對master預定義的roles,用於聲明靜態資源,比如/cpu/mem/disk/port等

5、mesos其他配置方式
(1)配置文件(etc下mesos、mesos-master及mesos-slave目錄內)
按照啓動項的名稱創建文件名,將值寫入文件內即可
(2)默認設置(/etc/default下mesos、mesos-master及mesos-slave文件)
默認配置項寫入三個文件內

6、部署運行Marathon
(1)安裝及運行
①下載安裝
http://mesosphere.github.io/marathon/
將marathon安裝到master主機上
②啓動
marathon --hostname 192.168.11.52 --master zk://192.168.11.52:2181,192.168.11.54:2181,192.168.11.55:2181/mesos --http_address 0.0.0.0
③瀏覽器訪問192.168.11.52:8080
(2)創建測試任務

 

 

 

 

 

 

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