>原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!
>原文鏈接地址:『高級篇』docker之Mesos微服務部署(26)因本人的mac本才8g,無法同時啓動4個虛擬機來完成,3個server,1個harbor。所以鏡像直接用hub.docker.com的。mac就啓動3個虛擬機。代碼裏都增加dockerhub的方式。源碼:https://github.com/limingios/msA-docker mesos分支
HOST運行服務
- 啓動zookeeper
通過提供的源碼shell腳本直接運行。
sh start.sh
- 啓動redis
sh start.sh
- 啓動mysql
sh start.sh
- 啓動marathon-lb
sh start.sh
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.101
sh mesos-slave.sh
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/marathon
sh mesos.sh
sh marathon.sh
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.103
sh mesos-slave.sh
memsos配置微服務
我部署下,看我分配的內存和cpu就知道爲什麼叫微服務了
- message-thrift-python-service 部署
0.1cpu和128Mb內存足夠了。
連接是hub.docker.com,上邊說了內存太低了沒辦法啓動那邊多鏡像。
點擊json mode 修改,其實就是修改json文件
修改成畫紅色部分的內容,containerPort是應用內的端口,servicePort是marathon控制的端口(上一節統計過外部端口的數字)。
- user-thrift-service 部署
- user-edge-service 部署
跟上邊一樣修改端口
- course-dubbo-service 部署
它不需要端口的映射,直接刪除portMappings就可以了
- zhugeaming/course-edge-service 部署
- gataway-zuul 部署
上邊六個服務都需要增加一個labels
key:HAPROXY_GROUP
value:external
external 跟原來marathon-lb裏面的分組名稱一致
部署完成,因爲用的dockerhub的倉庫,真心慢
本身就是掩飾,家裏的筆記本壞了,不好製作局域網的docker倉庫,所以比較麻煩。 不過大概就是這麼操作的。如果照着我做的老鐵,因爲我之前跑起來沒問題了,建議找個內存大的至少16g的老玩我說的配置。
marathon 健康檢查的類型
3種類型
- http
- command
- tcp
- 如果是查看端口的話,需要使用tcp的形式
- command類型,也就是shell腳本的形式,可以隨意發揮
判斷是否成功是看命令退出的返回值是不是0
- http類型,也就是直接返回某個網址看看是否返回code=200
項目的根路徑開始的
環境變量的配置
容器的掛載
那些服務適合那些主機標籤和權限都在optional裏面
PS:基本的mesos和marathon講述完成了,因爲主機內存後面的結果沒有演示但是基本的命令和鏡像有了後面基本是,基本操作啦!下次一起學學docker swarm!