1. 程式人生 > >搭建 Marathon+Mesos+Docker 架構

搭建 Marathon+Mesos+Docker 架構

mode sla exe lock 位置 重命名 containe firewalld 機制

Mesos

Mesos是Apache下的開源分布式資源管理框架,它被稱為是分布式系統的內核。(分布式系統管理調度和資源分配機制)

Mesos 缺點 :

需要獨立部署mesos-slave 進程;依賴 framework 的功能;成本比較高;

Mesos 優點 :

可以管理 docker 容器;穩定性具有保障;

Mesos 結構大概圖

技術分享圖片

組成 :

  • framework:計算機框架

  • executor:執行器task任務

  • mesos-master:管理slave 調度分配資源

  • mesos-slave:執行task

本案環境

主機名 系統 IP地址 軟件包
master CentOS 7.4 192.168.100.136 jdk、mesos、zookeeper、marathon
master1 CentOS 7.4 192.168.100.129 jdk、mesos、zookeeper
master2 CentOS 7.4 192.168.100.138 jdk、mesos、zookeeper
slave CentOS 7.4 192.168.100.139 jdk、mesos、docker
slave1 CentOS 7.4 192.168.100.140 jdk、mesos、docker

安裝 Mesos (所有主機搭建)

1.配置 java 環境 :

systemctl stop firewalld.service
setenforce 0

uname -r    #查看內核版本(需要內核3.10以上)
tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/   
cd /usr/local/
mv jdk1.8.0_91/ java   #重命名
vim /etc/profile    

export JAVA_HOME=/usr/local/java   
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar

source /etc/profile   #刷新

2.安裝環境 :

yum groupinstall -y "Development Tools"   #安裝開發工具
wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
#添加apache-maven源
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
#安裝依賴包 
vim /etc/yum.repos.d/wandisco-svn.repo   #配置WANdiscoSVN網絡源

[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

3.配置Mesos環境變量 :

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

3.安裝 mesos :

wget http://archive.apache.org/dist/mesos/0.25.0/mesos-0.25.0.tar.gz  #下載mesos包
tar zxvf mesos-0.25.0.tar.gz -C /opt/
mv mesos-0.25.0/ /root/
cd /root/mesos-0.25.0
mkdir build

cd build

../configure

make               #等待時間長
make check         #檢查
make install 

配置 Mesos-master

1.修改主機名 :

hostnamectl set-hostname master   #所有master依次修改
bash   #立即生效

2.配置解析(所有主機添加) :

vim /etc/hosts
192.168.100.136 master
192.168.100.129 master1
192.168.100.138 master2
192.168.100.139 slave
192.168.100.140 slave1

3.啟動 mesos :

ln -sf /root/mesos-0.25.0/build/bin/mesos-master.sh /usr/sbin/mesos-master

mesos-master  #啟動 

4.配置 master-zookeeper :

tar zxvf zookeeper-3.4.10.tar.gz -C /home/

cd /home/zookeeper-3.4.10/

mv conf/zoo_sample.cfg conf/zoo.cfg   #配置文件模板重命名,不能同時存在

5.編輯 zookeeper 配置文件 :

vim /home/zookeeper-3.4.10/conf/zoo.cfg

dataDir=/home/zookeeper-3.4.10/data         #重新定義 datadir 位置
dataLogDir=/home/zookeeper-3.4.10/datalog   #data、datalog 不存在創建
server.1=192.168.100.136:2888:3888          #三臺master服務器地址
server.2=192.168.100.129:2888:3888
server.3=192.168.100.138:2888:3888
格式 :server.A=B:C:D
A:表示第幾號服務器
B:服務器IP地址
C: 群集中 leader 服務器交換信息端口
D:在 leader 選舉時所用的端口
scp /home/zookeeper-3.4.10/conf/zoo.cfg 192.168.100.138:/home/zookeeper-3.4.10/conf/
#把配置文件服務復制過去,前提所有master配置文件已修改
scp /home/zookeeper-3.4.10/conf/zoo.cfg 192.168.100.139:/home/zookeeper-3.4.10/conf/
[root@master ~]# cd /home/zookeeper-3.4.10/
[root@master zookeeper-3.4.10]# mkdir data
[root@master zookeeper-3.4.10]# mkdir datalog
[root@master zookeeper-3.4.10]# echo 1 > data/myid   #添加相對應的第幾號服務器  依次添加 要和配置文件相對應
[root@master zookeeper-3.4.10]# cat data/myid 
1

6.啟動服務 :

[root@master zookeeper-3.4.10]# ./bin/zkServer.sh start conf/zoo.cfg   #開啟服務
ZooKeeper JMX enabled by default
Using config: conf/zoo.cfg
Starting zookeeper ... STARTED

7.查看狀態 :

[root@master zookeeper-3.4.10]#  ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/q/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower  #負責接收客戶請求,向客戶端返回結果,並在選舉過程中參與投票

[root@master1 zookeeper-3.4.10]#  ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/q/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower

[root@master2 zookeeper-3.4.10]#  ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/q/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: leader   #負責投票發起和決議、更新系統狀態。

8.分別開啟 mesos-master (和mesos-slave 一起啟動) :

[root@master zookeeper-3.4.10]#mesos-master --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://192.168.100.136:2181/mesos --quorum=2
#--quorum=2  還剩余2臺服務器

[root@master1 zookeeper-3.4.10]#mesos-master --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://192.168.100.129:2181/mesos --quorum=2  

[root@master2 zookeeper-3.4.10]#mesos-master --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://192.168.100.138:2181/mesos --quorum=2

配置 Mesos-slave

1.修改主機名 :

hostnamectl set-hostname slave   #所有 slave 依次修改
bash   #立即生效

2.配置解析(所有主機添加) :

vim /etc/hosts
192.168.100.136 master
192.168.100.129 master1
192.168.100.138 master2
192.168.100.139 slave
192.168.100.140 slave1

3.建立軟連接 :

ln -sf /opt/mesos-0.25.0/build/bin/mesos-slave.sh /usr/sbin/mesos-slave

4.安裝 docker :

yum install docker -y
systemctl start docker.service
systemctl enable docker.service  

5.啟動 mesos-slave :

mesos-slave --containerizers="mesos,docker" --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --master=zk://192.168.100.136:2181,192.168.100.129:2181,192.168.100.138:2181/mesos --no-hostname_lookup --ip=0.0.0.0

測試訪問 mesos-master

隨意訪問一臺 master ,若指定非 leader 狀態的 mesos-master 地址,頁面會自動跳轉 leader 狀態下的地址 :

技術分享圖片
技術分享圖片

部署 Marathon

1.安裝服務(只需要在一臺 master 部署) :

http://downloads.mesosphere.com/marathon/v0.15.2/marathon-0.15.2.tgz

tar zxvf marathon-0.15.2.tgz -C /home/

2.將 Marathon 安裝到多 mesos-master 環境的 master 主機上 :

cd /home/marathon-0.15.2
[root@master marathon-0.15.2]#./bin/start --hostname 192.168.100.136 --master zk://192.168.100.136:2181,192.168.100.129:2181,192.168.100.138:2181/mesos --http_address 0.0.0.0

測試訪問 marathon

技術分享圖片

搭建 Marathon+Mesos+Docker 架構