设为首页 收藏本站
查看: 1233|回复: 0

[经验分享] centos7安装mesos_marathon_zookeeper

[复制链接]
累计签到:19 天
连续签到:1 天
发表于 2017-7-19 16:43:25 | 显示全部楼层 |阅读模式
本帖最后由 jrldc 于 2017-7-19 16:47 编辑

环境
ip:192.168.99.117-119
系统:centos7
结构:zookeeper集群分布在以上三个服务器上
布局:
192.168.99.119     master  slave  zookeeper
192.168.99.118                  slave   zookeeper
192.168.99.117                  slave   zookeeper


1、安装zookeeper集群(三个服务器上都安装)
#wget https://www.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
#tar -zxvf zookeeper-3.4.6.tar.gz  -C /usr/local/
#cd  /usr/local/zookeeper-3.4.6/
# mkdir  /data/zookeeper
# echo "2" > /data/zookeeper/myid   (设置zookeeper的id,对应配置文件中的 server.2)
[iyunv@node1 conf]# cat  zoo.cfg     (每个服务器的配置文件都相同)
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper
clientPort=2181
server.1=192.168.99.117:3181:4181
server.2=192.168.99.118:3181:4181
server.3=192.168.99.119:3181:4181

#./bin/zkServer.sh start ./conf/zoo.cfg
#./bin/zkServer.sh status ./conf/zoo.cfg   (查看状态,leader  or  fllower)
连接Zookeeper
# ./bin/zkCli.sh -server 192.168.99.117:2181
当启动第一个zookeeper是日志会报错,因为找不到集群中的其他服务端口,可忽略,当都启动起来后报错消失。
2、安装mesos  marathons
mesos-master安装:
rpm -Uvh http://repos.mesosphere.io/el/7/ ... o-7-1.noarch.rpmrpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-mesosphereyum install mesos marathon

mesos-slave安装:
rpm -Uvh http://repos.mesosphere.io/el/7/ ... o-7-1.noarch.rpmrpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-mesosphereyum install mesos

3、 mesos-master和marathon配置
1)每个master和slave节点的/etc/mesos/zk配置文件中设置zk的地址(master和slave主要通过这个进行通信)
zk://192.168.99.117:2181,192.168.99.118:2181,192.168.99.119:2181/mesos
2)/etc/mesos-master/quorum中设置quorum值
#touch /etc/mesos-master/quorum
#echo 1 > /etc/mesos-master/quorum
#(在里面添加一个数字,数字大小不小于master的数量除以2,这里测试一个master,填1就可以)
3)其他配置
#touch /etc/mesos-master/ip
#echo "192.168.99.119" > /etc/mesos-master/ip
#(添加master的ip,默认是127.0.0.1,只做显示用)
#touch /etc/mesos-master/hostname
#echo "192.168.99.119" > /etc/mesos-master/hostname
(添加master的hostname,默认为localhost,主要在mesos集群间使用,不是机器的hostname,只做显示用)
4)marathon配置
这个设置和上面配置mesos的hostname效果一样,不配置会显示默认的localhost,不影响使用
#mkdir -p /etc/marathon/conf/ && touch hostname
#echo 192.168.99.119 |  tee /etc/marathon/conf/hostname
4、
master启动
# systemctl enable mesos-master
# systemctl start mesos-master
# systemctl enable marathon
# systemctl start marathon
slave启动
# systemctl enable mesos-slave
# systemctl start mesos-slave

可以通过http://:5050来访问Mesos的web界面,通过http://:8080来访问Marathon的web界面。可以是任意一个master节点的IP。
最后提醒一下需要注意的是:
1)服务器的jdk要是1.8以上版本的,不然会有报错,因为marathon是要求jdk1.8以上的;
2)各节点配一下/etc/hosts或指向一个共用的DNS,确保相互能够访问。如果不想配hosts,在启动时指定–hostname为IP即可;
3)如果想在marathon上运行Docker,则需要一些额外的配置:
//指定使用docker容器化echo 'docker,mesos' > /etc/mesos-slave/containerizers//考虑到拉取容器镜像等的操作,适当增加timeout的时间echo '5mins' > /etc/mesos-slave/executor_registration_timeout//重启mesos-slave以使上面配置生效systemctl restart mesos-slave

几个配置启动参数的目录:
/etc/mesos-master/
/etc/mesos-slave/
/etc/marathon/conf/
在这些目录分别用来配置mesos-master,mesos-slave,marathon的启动参数。以参数名为文件名,参数值为文件内容即可。

此时打开Mesos的Web管理界面,这时候你将得到下图的页面但可能在‘Tasks’表格没有任何的条目。 1.png 运行第一mesos任务,可以在web界面查看到task
  • [root@docker-master ~]# MASTER=$(mesos-resolve `cat /etc/mesos/zk`)
  • [root@docker-master ~]# mesos-execute --master=$MASTER --name="cluster-test" --command="sleep 60"
5、使用marathon调用mesos管理docker容器
下载docker,并pull下来nginx镜像(两个node均操作)
  • [root@docker-slave ~]# yum install -y docker
  • [root@docker-master ~]# systemctl enable docker
  • [root@docker-master ~]# systemctl start docker
  • [root@docker-master ~]# docker pull nginx
再所有mesos-slave上增加配置参数,并重启
  • [root@docker-master ~]# echo 'docker,mesos' | tee /etc/mesos-slave/containerizers
  • [root@docker-master ~]# systemctl restart mesos-slave
  • [root@docker-slave ~]# echo 'docker,mesos' | tee /etc/mesos-slave/containerizers
  • [root@docker-slave ~]# systemctl restart mesos-slave


通过mesos调度,使用marathon来创建一个nginx镜像的docker容器,matathon默认监听8080端口,如图:
2.png
matathon通过zookeeper,marathon启动的时候会读取/etc/mesos/zk配置文件,通过Zookeeper来找到Mesos Master。marathon有自己的REST API,我们通过API的方式来创建一个nginx的docker容器。首先创建如下的配置文件nginx.json:
  • [root@docker-master ~]# cat nginx.json
  • {
  •   "id":"nginx",
  •   "cpus":0.2,
  •   "mem":20.0,
  • "instances": 1,
  • "constraints": [["hostname", "UNIQUE",""]],
  • "container": {
  •     "type":"DOCKER",
  •    "docker": {
  •      "image": "nginx",
  •      "network": "BRIDGE",
  •      "portMappings": [
  •         {"containerPort": 80, "hostPort": 0,"servicePort": 0, "protocol": "tcp" }
  •       
  •     }
  •   }
  • }
使用curl的方式调用测试
  • [root@docker-master ~]# curl -X POST http://192.168.100.5:8080/v2/apps -d @/root/nginx.json -H "Content-type: application/json"
  • {"id":"/nginx","cmd":null,"args":null,"user":null,"env":{},"instances":1,"cpus":0.2,"mem":20,"disk":0,"executor":"","constraints":[["hostname","UNIQUE",""]],"uris":[],"fetch":[],"storeUrls":[],"ports":[0],"requirePorts":false,"backoffSeconds":1,"backoffFactor":1.15,"maxLaunchDelaySeconds":3600,"container":{"type":"DOCKER","volumes":[],"docker":{"image":"nginx","network":"BRIDGE","portMappings":[{"containerPort":80,"hostPort":0,"servicePort":0,"protocol":"tcp"}],"privileged":false,"parameters":[],"forcePullImage":false}},"healthChecks":[],"dependencies":[],"upgradeStrategy":{"minimumHealthCapacity":1,"maximumOverCapacity":1},"labels":{},"acceptedResourceRoles":null,"ipAddress":null,"version":"2016-03-01T07:19:44.339Z","tasksStaged":0,"tasksRunning":0,"tasksHealthy":0,"tasksUnhealthy":0,"deployments":[{"id":"502712f0-dc3a-44f8-a9cf-0dfa7407ec94"}],"tasks":[]}
查看通过API和手动创建的容器
现在你就可以通过31705来访问到nginx了。当然了,你也可以在mesos-slave上来寻找一下这个容器:
  • [root@docker-master ~]# docker ps -a
  • CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                            NAMES
  • 2e333092a383        nginx               "nginx -g 'daemon off"   About a minute ago   Up About a minute   443/tcp, 0.0.0.0:31705->80/tcp   mesos-46abb5e7-3775-4383-b953-c5b2b9ae5c9f-S0.00229c83-5505-400d-984f-4849e9850b71
访问31705端口,查看nginx
  • [root@docker-master ~]# curl 192.168.100.5:31705
在marathonweb界面查看
3.png

在mesos的web界面查看
C:/Users/Administrator/AppData/Local/YNote/data/qq41E380972A3128D92AECC7E981CEFD76/c6c1abc494084281bf538b3c42a49b27/0-2095150261.png
4.png
  如果你想创建同样的容器,可以点击上图中德Scale Application来体验一下。同样的,你也可以通过marathon的Web界面来进行容器的创建、扩展和销毁。






运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-394848-1-1.html 上篇帖子: docker的使用场景 下篇帖子: centos7安装elasticsearch-5.0.0
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表