Top Banner
42

廣告系統在Docker/Mesos上的可靠性實踐

Feb 20, 2017

Download

Technology

Michael Zhang
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 廣告系統在Docker/Mesos上的可靠性實踐
Page 2: 廣告系統在Docker/Mesos上的可靠性實踐

廣告系統在 Docker/Mesos上的可靠性實踐Michael Apr.2014 聚效广告 (MediaV)

Page 3: 廣告系統在Docker/Mesos上的可靠性實踐

Who Am I ?

Page 4: 廣告系統在Docker/Mesos上的可靠性實踐

Where is our system?

Page 5: 廣告系統在Docker/Mesos上的可靠性實踐

Where is our system?

Page 6: 廣告系統在Docker/Mesos上的可靠性實踐

Small Impression with Huge Computing

AD Request10億 200億+

QPS100萬+1萬

Latency500ms 10ms

60 DevOps Engineers2000+ physical server

100+ module with realtime service99.95% service availability

Page 7: 廣告系統在Docker/Mesos上的可靠性實踐

Why Container?

Why Scheduler?

Page 8: 廣告系統在Docker/Mesos上的可靠性實踐

• 人為事故, debug, env changed etc…• 非人為故意, Bug, Crash, OOM, memory leak,

disk full etc…• 外部原因, ad code• On-Call 恢復• Scaling Service• 資源利用率

Page 9: 廣告系統在Docker/Mesos上的可靠性實踐

We are in 2016

Page 10: 廣告系統在Docker/Mesos上的可靠性實踐

We are in 2014

Page 11: 廣告系統在Docker/Mesos上的可靠性實踐

2014Q4touch lmctfy

2015Q1try docker with k8s

2015Q2docker on

mesos/yarn?

2015Q3we are runningdocker/mesos

etc.

2016Q1more

batch job & LTS online

2015Q4more service

ci/release

How to start?

Page 12: 廣告系統在Docker/Mesos上的可靠性實踐

MESOS可以為團隊帶來什麼 ?

Page 13: 廣告系統在Docker/Mesos上的可靠性實踐
Page 14: 廣告系統在Docker/Mesos上的可靠性實踐

典型 LTS adhoc任务轻服务

Free Free

—100%

—100%

資源使用分佈 DEMO

Page 15: 廣告系統在Docker/Mesos上的可靠性實踐
Page 16: 廣告系統在Docker/Mesos上的可靠性實踐
Page 17: 廣告系統在Docker/Mesos上的可靠性實踐

服務 Docker容器化遇到的典型問題SE7EN

Page 18: 廣告系統在Docker/Mesos上的可靠性實踐

1/7

Page 19: 廣告系統在Docker/Mesos上的可靠性實踐

1/7

“If you run SSHD in your Docker containers, you're doing it wrong!”

https://jpetazzo.github.io/2014/06/23/docker-ssh-considered-evil/

–Jérôme Petazzoni

Page 20: 廣告系統在Docker/Mesos上的可靠性實踐

2/7 where is my debug logs?

Page 21: 廣告系統在Docker/Mesos上的可靠性實踐
Page 22: 廣告系統在Docker/Mesos上的可靠性實踐

3/7 Docker Network性能差?

Page 23: 廣告系統在Docker/Mesos上的可靠性實踐

http://machinezone.github.io/research/networking-solutions-for-kubernetes/

Page 24: 廣告系統在Docker/Mesos上的可靠性實踐

4/7 如何寫本地文件?如何存儲持久化?

Page 25: 廣告系統在Docker/Mesos上的可靠性實踐

+

Page 26: 廣告系統在Docker/Mesos上的可靠性實踐

5/7 服務的註冊和發現?

Page 27: 廣告系統在Docker/Mesos上的可靠性實踐

We’re

OR

Page 28: 廣告系統在Docker/Mesos上的可靠性實踐

6/7 如何讓服務可調度性?

Page 29: 廣告系統在Docker/Mesos上的可靠性實踐

這是一個大問題,留給每個 Dev工程師

Page 30: 廣告系統在Docker/Mesos上的可靠性實踐

7/7 服務器的數據加載問題?

Page 31: 廣告系統在Docker/Mesos上的可靠性實踐

拋棄 迎接rsynccpscpftp

Everything API/Thrift

Page 32: 廣告系統在Docker/Mesos上的可靠性實踐
Page 33: 廣告系統在Docker/Mesos上的可靠性實踐

Marathon Framework on MESOS

Page 34: 廣告系統在Docker/Mesos上的可靠性實踐
Page 35: 廣告系統在Docker/Mesos上的可靠性實踐

Chronos Framework on MESOS

Page 36: 廣告系統在Docker/Mesos上的可靠性實踐

Chronos : batch job在分布式系統上的替代品

Page 37: 廣告系統在Docker/Mesos上的可靠性實踐

chronos cron azkaban

distributed Yes No halfWeb UI Yes No Yes

Job history Yes,Simple Manual Yes,Fulldependency Yes,simple No Yes,fullUser Auth No No Yes

Resource limit(cpu/mem/disk) Yes No No

Debug log mesos sandbox Manual web UI

Page 38: 廣告系統在Docker/Mesos上的可靠性實踐

Docker/Mesos實踐過程中需要注意的地方

Page 39: 廣告系統在Docker/Mesos上的可靠性實踐

health check with

Marathonon Mesos

{ "protocol": "COMMAND", "command": { "value": "curl -f -X GET http://$HOST:$PORT0/health" }, "gracePeriodSeconds": 300, "intervalSeconds": 60, "timeoutSeconds": 20, "maxConsecutiveFailures": 3}

{ "protocol": "COMMAND", "portIndex": 0, "command": { "value": "nc localhost 8119" }, "gracePeriodSeconds": 300, "intervalSeconds": 60, "timeoutSeconds": 20, "maxConsecutiveFailures": 3, "ignoreHttp1xx": false }

Page 40: 廣告系統在Docker/Mesos上的可靠性實踐

Marathon port resource --resources="ports(*):[8000-9000, 31000-32000]"

Page 41: 廣告系統在Docker/Mesos上的可靠性實踐

Dockerfile review規則Dockerfile必須 Code ReviewEverything in codebase: code/config禁止使用不穩定的wget/curl源Port資源必須申請並註冊

Page 42: 廣告系統在Docker/Mesos上的可靠性實踐

Q&A ?

[email protected]@mvad.com