Mesos

Mesos是Apache下的开源分布式资源管理框架,它被称为是分布式系统的内核。(分布式系统管理调度和资源分配机制)

Mesos 缺点 :

需要独立部署mesos-slave 进程;依赖 framework 的功能;成本比较高;

Mesos 优点 :

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

Mesos 结构大概图

搭建 Marathon+Mesos+Docker 架构_第1张图片

组成 :

  • 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+Mesos+Docker 架构_第2张图片
搭建 Marathon+Mesos+Docker 架构_第3张图片

部署 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 架构_第4张图片