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