『高级篇』docker之Mesos微服务部署(26)
2019-02-13 00:30:28
李明
  • 访问次数: 377
  • 注册日期: 2018-07-09
  • 最后登录: 2019-10-30

原创文章,欢迎转载。转载请注明:转载自 IT人故事会 ,谢谢!原文链接地址: 『高级篇』docker之Mesos微服务部署(26)

因本人的mac本才8g,无法同时启动4个虚拟机来完成,3个server,1个harbor。所以镜像直接用 hub.docker.com 的。mac就启动3个虚拟机。代码里都增加dockerhub的方式。源码: https://github.com/limingios/msA-docker mesos分支


v2-02766ae8101a9f7d39888e52496ae7a4_hd.p


v2-0eb1feaffb67e7cf2c82f5cef725197d_hd.p

HOST运行服务

  • 启动zookeeper

通过提供的源码shell脚本直接运行。

sh start.sh
  • 启动redis

sh start.sh
  • 启动mysql

sh start.sh


v2-93004caca5fed68fc6aed2d22497b3a7_hd.p

  • 启动marathon-lb

sh start.sh


v2-1560a9cebb3aa71333c54c80701eb524_hd.p


v2-7e7f74c5906d752787b7c01079fc5b3a_hd.p

server01

编写的shell 脚本

#!/bin/bash
docker run -d --net=host --privileged \
  --hostname=192.168.66.101 \
  -e MESOS_PORT=5051 \
  -e MESOS_MASTER=zk://192.168.1.130:2181/mesos \
  -e MESOS_SWITCH_USER=0 \
  -e MESOS_CONTAINERIZERS=docker,mesos \
  -e MESOS_LOG_DIR=/var/log/mesos \
  -e MESOS_WORK_DIR=/var/tmp/mesos \
  -v "$(pwd)/mesos/log/mesos:/var/log/mesos" \
  -v "$(pwd)/mesos/tmp/mesos:/var/tmp/mesos" \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /sys:/sys \
  -v /usr/bin/docker:/usr/local/bin/docker \
  mesosphere/mesos-slave:1.7.0 --no-systemd_enable_support \
  --no-hostname_lookup --ip=192.168.66.101sh mesos-slave.sh


v2-d0b984b8435b664036d041f2da51eca6_hd.p

server02

编写的shell 脚本 mesos.sh

!/bin/bash
docker run -d --net=host \
  --hostname=192.168.66.102 \
  -e MESOS_PORT=5050 \
  -e MESOS_ZK=zk://192.168.1.130:2181/mesos \
  -e MESOS_QUORUM=1 \
  -e MESOS_REGISTRY=in_memory \
  -e MESOS_LOG_DIR=/var/log/mesos \
  -e MESOS_WORK_DIR=/var/tmp/mesos \
  -v "$(pwd)/mesos/log/mesos:/var/log/mesos" \
  -v "$(pwd)/mesos/tmp/mesos:/var/tmp/mesos" \
  mesosphere/mesos-master:1.7.0 --no-hostname_lookup --ip=192.168.66.102

编写的shell 脚本 marathon.sh

#!/bin/bash
docker run -d --net=host \
  mesosphere/marathon:v1.5.12 \
  --master zk://192.168.1.130:2181/mesos \
  --zk zk://192.168.1.130:2181/marathonsh mesos.sh
sh marathon.sh


v2-4563ce711432a779c7898e8a6f6404f2_hd.p

server03

编写的shell 脚本 marathon.sh

#!/bin/bash
docker run -d --net=host --privileged \
  --hostname=192.168.66.103 \
  -e MESOS_PORT=5051 \
  -e MESOS_MASTER=zk://192.168.1.130:2181/mesos \
  -e MESOS_SWITCH_USER=0 \
  -e MESOS_CONTAINERIZERS=docker,mesos \
  -e MESOS_LOG_DIR=/var/log/mesos \
  -e MESOS_WORK_DIR=/var/tmp/mesos \
  -v "$(pwd)/mesos/log/mesos:/var/log/mesos" \
  -v "$(pwd)/mesos/tmp/mesos:/var/tmp/mesos" \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /sys:/sys \
  -v /usr/bin/docker:/usr/local/bin/docker \
  mesosphere/mesos-slave:1.7.0 --no-systemd_enable_support \
  --no-hostname_lookup --ip=192.168.66.103sh mesos-slave.sh


v2-506e70c5d4e172cf53529373bcff3fac_hd.p

memsos配置微服务

我部署下,看我分配的内存和cpu就知道为什么叫微服务了

  • message-thrift-python-service 部署

0.1cpu和128Mb内存足够了。


v2-a30b52548fc37c4d6567fd880a08436a_hd.p

连接是hub.docker.com,上边说了内存太低了没办法启动那边多镜像。


v2-0c8094411cf8fc1f72bf5596ff63b26b_hd.p

点击json mode 修改,其实就是修改json文件


v2-b162270555ea0ffbcca630d019b24e0b_hd.p

修改成画红色部分的内容,containerPort是应用内的端口,servicePort是marathon控制的端口(上一节统计过外部端口的数字)。


v2-19fec560bf2d327485299d0c55ed2349_hd.p

  • user-thrift-service 部署


v2-1bbbfe57a916e28b9a9732d355d70104_hd.p


v2-8ff80e30287a7762c68308d7bed41da2_hd.p


v2-f2db6c098587fb1c4d37fa50c2cf5ac9_hd.p

  • user-edge-service 部署


v2-5131ed8eae485007dd20e85e6958d5da_hd.p


v2-7210105553b08112bc4a2ce75f0ad546_hd.p

跟上边一样修改端口


v2-c41f12d5df9729467d0bd501e02dd82f_hd.p

  • course-dubbo-service 部署


v2-35b175254a0209ca0121657ca395626a_hd.p


v2-c22bef383b395b7382a6f8bce36c1a07_hd.p


v2-9ee4c45bdcb17794fe5dff664ee85382_hd.p

它不需要端口的映射,直接删除portMappings就可以了


v2-2add0a70e693fe63ac81faeea2340550_hd.p

  • zhugeaming/course-edge-service 部署


v2-3bf0b84341eafe638dfd0f02f864a7ec_hd.p


v2-3e47e43fcefa7031f97ed6a9d6aea9cc_hd.p


v2-6f33649d43e5a30ca5c26e0ac5e1dd6f_hd.p

  • gataway-zuul 部署


v2-061e472246349ec89a48fc8c2da822d5_hd.p


v2-a3ae4f6b87fa792ca3913eed6e793871_hd.p


v2-1335dbba995d8ca940162d8dd1bd72ba_hd.p

上边六个服务都需要增加一个labels

key:HAPROXY_GROUPvalue:external

external 跟原来marathon-lb里面的分组名称一致


v2-41d69efc26aa3d2c8e9ff322f23b7ca6_hd.p


v2-7c2d4183f97a6c1d8b9269413cd50b86_hd.p

部署完成,因为用的dockerhub的仓库,真心慢

本身就是掩饰,家里的笔记本坏了,不好制作局域网的docker仓库,所以比较麻烦。 不过大概就是这么操作的。如果照着我做的老铁,因为我之前跑起来没问题了,建议找个内存大的至少16g的老玩我说的配置。


v2-5d45eb64d4c073815f7d51d89af1f6ea_hd.p

marathon 健康检查的类型

3种类型

  1. http

  2. command

  3. tcp

  • 如果是查看端口的话,需要使用tcp的形式


v2-4ad48760d9c9b82b7166a3c9b4c99e24_hd.p

  • command类型,也就是shell脚本的形式,可以随意发挥

判断是否成功是看命令退出的返回值是不是0


v2-6fb3b7c006f627530755dbec2344f016_hd.p

  • http类型,也就是直接返回某个网址看看是否返回code=200

项目的根路径开始的


v2-00304488fa55ef15d43ed18a984b3239_hd.p

环境变量的配置


v2-52cbb746acb7b3e4d11c5efd2e9350da_hd.p

容器的挂载


v2-49e006cf254416e72035739b10a588ee_hd.p

那些服务适合那些主机标签和权限都在optional里面


v2-a436e4d2ddb7a8562ed0c500d3e3465f_hd.p

PS:基本的mesos和marathon讲述完成了,因为主机内存后面的结果没有演示但是基本的命令和镜像有了后面基本是,基本操作啦!下次一起学学docker swarm!


v2-7f75c93f587eca2c35da2664ce67e513_hd.p