其他分享
首页 > 其他分享> > 功夫

功夫

作者:互联网


1.环境部署(因为配置有限,此操作使用了2台虚拟机)

IP

描述

192.168.253.55

Mesos-master  mesos-slave  marathon  docker

192.168.253.55

Zookeeper  mesos-slave  docker

备注:Zookeeper使用伪分布式部署,也就是一台虚拟机上启动三个不同端口的Zookeeper实例

 

1.1同步时间

yum -y install ntp ntpdate

ntpdate cn.pool.ntp.org

hwclock --systohc

 

1.2关闭防火墙


systemctl stop firewalld

systemctl disable firewalld

1.3关闭selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

 

1.4创建工作目录


mkdir /data

 

2. 官网地址


Mesos:http://mesos.apache.org/

Marathon:https://mesosphere.github.io/marathon/

 

3.jdk安装(三个节点都要执行)

3.1解压jdk1.8 

tar zxf jdk-8u161-linux-x64.tar.gz -C /data/ cd /data mv jdk1.8.0_161/ jdk`

3.2配置环境变量 

vim /etc/profile

export JAVA_HOME=/data/jdk
export JRE_HOME=/data/jdk/jre
export PATH=$PATH:/data/jdk/bin
export CLASSPATH=./:/data/jdk/lib:/data/jdk/jre/lib

source /etc/profile`

3.3测试是否成功

4. 安装zookeeper(192.168.253.56)

4.1解压 

tar xzf apache-zookeeper-3.6.1-bin.tar.gz -C /data

cd /data

mv apache-zookeeper-3.6.1-bin zookeeper

4.2修改配置文件 

cd /data/zookeeper/conf

cp zoo_sample.cfg zoo.cfg

vim zoo.cfg

[root@localhost conf]# vim zoo.cfg

tickTime=2000

initLimit=10

syncLimit=5

maxClientCnxns=200

dataDir=/data/zookeeper/data/zk1

clientPort=2181

server.1=192.168.253.56:3181:4181

server.2=192.168.253.56:3182:4182

server.3=192.168.253.56:3183:4183

 

4.3创建三个目录存放zookeeper数据


mkdir -p /data/zookeeper/data/{zk1,zk2,zk3}

 

4.4 创建myid文件

echo 1 >/data/zookeeper/data/zk1/myid

echo 2 >/data/zookeeper/data/zk2/myid

echo 3 >/data/zookeeper/data/zk3/myid

 

4.5 生成三份zookeeper配置文件

cd /data/zookeeper/conf/

cp zoo.cfg zk1.cfg

cp zoo.cfg zk2.cfg

cp zoo.cfg zk3.cfg

 

4.6 修改zk2,zk3对应的数据存放目录以及端口

sed -i 's#zk1#zk2#g' zk2.cfg #修改数据存放目录

sed -i 's#zk1#zk3#g' zk3.cfg

sed -i 's#2181#2182#g' zk2.cfg #修改客户端端口

sed -i 's#2181#2183#g' zk3.cfg

4.7 zookeeper角色查看


4.7.1 启动zookeeper

/data/zookeeper/bin/zkServer.sh start /data/zookeeper/conf/zk1.cfg

/data/zookeeper/bin/zkServer.sh start /data/zookeeper/conf/zk2.cfg

/data/zookeeper/bin/zkServer.sh start /data/zookeeper/conf/zk3.cfg

 

4.7.2 查看集群状态 

 

/data/zookeeper/bin/zkServer.sh status /data/zookeeper/conf/zk1.cfg

/data/zookeeper/bin/zkServer.sh status /data/zookeeper/conf/zk2.cfg

/data/zookeeper/bin/zkServer.sh status /data/zookeeper/conf/zk3.cfg

 

 

 

5. mesos集群部署


192.168.253.55,192.168.253.56

5.1 安装mesos 

yum install mesos-1.9.0-2.0.1.el7.x86_64.rpm -y

5.2 增添zookeeper配置
cd /etc/mesos

vim zk

zk://192.168.253.56:2181,192.168.253.56:2182,192.168.253.56:2183/mesos

 

5.3 192.168.253.55


5.3.1 mesos-master配置


cd /etc/mesos-master

 

echo 192.168.253.55 > ip

echo 192.168.253.55 > hostname

echo 1 > quorum #这个数字要大于安装的master节点的总数的一半

work_dir为默认

 

5.3.2 mesos-slave配置 


cd /etc/mesos-slave/

 

echo 192.168.253.55 > ip

echo 192.168.253.55 > hostname

work_dir为默认

5.3.3 安装marathon


tar zxf marathon-1.5.1.tgz

mv marathon-1.5.0-96-gf84298d/ /data/marathon

 

5.3.4 启动mesos-master mesos-slave marathon 


systemctl start mesos-master mesos-slave

systemctl enable mesos-master mesos-slave #设为开机自启

 

/data/marathon/bin/marathon --master zk://192.168.253.56:2181,192.168.253.56:2182,192.168.253.56:2183/mesos --zk zk://192.168.253.56:2181,192.168.253.56:2182,192.168.253.56:2183/marathon

 

5.3.5 浏览器访问


Mesos

 

Marathon

 

 

5.4 192.168.253.56


5.4.1 mesos-slave配置


cd /etc/mesos-slave/

 

echo 192.168.253.56 > ip

echo 192.168.253.56 > hostname

work_dir为默认

 

5.4.2 启动mesos-slave


systemctl start mesos-slave

systemctl enable mesos-slave

 

6. marathon调用mesos运行docker(192.168.253.55,192.168.253.56)


6.1 解压docker


tar zxf docker-18.06.3-ce.tgz

mv docker /data

6.2 把命令拷贝到/usr/bin

 

cd /data/docker

cp ./* /usr/bin

6.3 创建docker家目录


mkdir /home/docker

6.4 启动docker


dockerd -g /home/docker &

6.5 查看进程


ps -ef |grep docker

6.6 拉取nginx


docker pull nginx

 

6.7 在mesos-slave上增加配置参数,并重启


echo 'docker,mesos' | tee /etc/mesos-slave/containerizers

systemctl restart mesos-slave

 

 

7. 测试


7.1 运行mesos任务,可以在web界面上查看task:


MASTER=$(mesos-resolve `cat /etc/mesos/zk`)

mesos-execute --master=$MASTER --name="cluster-test" --command="sleep 60"

 

7.2 marathon测试

 

浏览器输入:http://192.168.253.55:8080/

创建一个first的任务

然后去mesos网页查看:http://192.168.253.55:5050/

可以看到任务已经分配给slave1(192.168.253.55) 和slave2(192.168.253.56)

点击

 

 

 

 

7.2.1 查看执行时间相关信息


Id根据实际情况查看

cd /var/lib/mesos/slaves/167b7f7c-1441-4755-ab15-ee6c33486c98-S0/frameworks/c3d564b2-6b6b-4468-b467-b413f61b9180-0001/executors

 

cd first.2e24d54e-cb1c-11ea-abb0-0242467fbcb0/runs/latest/

 

#标准错误和标准输出信息

stderr

#查看输出字符串

stdout

 

 

7.3 marathon通过API创建一个nginx的docker容器


下面通过Mesos调度,使用marathon来创建一个nginx镜像的Docker容器,Marathon启动时会读取/etc/mesos/zk配置文件,Marathon通过Zookeeper来找到Mesos Master。

 

#在marathon服务所在节点创建json文件;

7.3.1 写json文件


vim nginx.json

{

"id":"nginx-first", #容器名,只在marathon生效

"cpus":0.2, #cpu用量

"mem":20.0, #mem用量

"instances": 1, #容器数量

"constraints": [["hostname", "UNIQUE",""]], #限制

"container": {

"type":"DOCKER", #应用类型

"docker": { #docker具体配置

"image": "nginx", #采用的image

"network": "BRIDGE", #网络模式

"portMappings": [

{"containerPort": 80, "hostPort": 0,"servicePort": 0, "protocol": "tcp" }

]}#端口映射,”0”表示任意端口,"servicePort"服务端口

}

}

 

7.3.2 curl方式调用


curl -X POST http://192.168.253.55:8080/v2/apps -d @/root/nginx.json -H "Content-type: application/json"

 

7.3.3 查看容器是否存在(此处有一个容器就证明成功,我这里执行了两遍curl,所以出现两个容器)

 

192.168.253.55

 

 

 

 

 

192.168.253.56

 

 

访问页面:

 

标签:mesos,cfg,zookeeper,192.168,253.56,功夫,data
来源: https://www.cnblogs.com/lanist/p/13356529.html