搭建 Marathon+Mesos+Docker 架構
阿新 • • 發佈:2018-08-17
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 架構