Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Blue-Green Deployment with ECS and monitoring
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Shinji Tanaka
September 14, 2015
Technology
660
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Blue-Green Deployment with ECS and monitoring
JAWS コンテナ支部 #2
Shinji Tanaka
September 14, 2015
More Decks by Shinji Tanaka
See All by Shinji Tanaka
Mackerel loves Machine Learnings
stanaka
0
3.2k
How to Contribute Go
stanaka
4
19k
Introduction to Mackerel
stanaka
0
1.1k
Upcoming features in 2016, Mackerel
stanaka
0
3.6k
Mackerel's first year and onward
stanaka
0
3.2k
Mackerel's first year and onward (in English)
stanaka
0
450
Mackerel Meetup #4 (in Eng)
stanaka
0
630
Mackerel Meetup #4
stanaka
0
3.5k
Monitoring Docker with Mackerel (2015 ver.)
stanaka
1
290
Other Decks in Technology
See All in Technology
新しいUbuntu/GNOMEが使いたいからXからWaylandへ移行頑張ってるの巻 2026-06-20
nobutomurata
0
150
AIチャット検索改善の3週間
kworkdev
PRO
2
140
自宅LLMの話
jacopen
1
670
ACE-Step-1.5で見る 音楽生成AIのしくみと“破綻だけ直す”Retake機能の開発【zennfes spring 2026 登壇資料】
personabb
1
540
いまさら聞けない「仕様駆動開発入門」 〜AI活用時代の開発プロセスを考える〜
findy_eventslides
2
160
Claude Codeをどのように キャッチアップしているか
oikon48
13
8.6k
徹底討論!ECS vs EKS!
daitak
3
900
FPC(フレキシブル)基板にZephyr実装してみた。
iotengineer22
0
130
【Cyber-sec+】経営層を"動かす"ための考え方
hssh2_bin
0
200
Agent Skills設計で柔軟性と硬さのバランスが難しい話
nassy20
0
150
白金鉱業Meetup_Vol.24_「AIエージェントは分けるほど良い」は本当か? / Is it true that “the more you divide AI agents, the better”?
brainpadpr
1
420
Chainlitで作るお手軽チャットUI
ynt0485
0
280
Featured
See All Featured
Building the Perfect Custom Keyboard
takai
2
800
sira's awesome portfolio website redesign presentation
elsirapls
0
280
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.6k
BBQ
matthewcrist
89
10k
The Limits of Empathy - UXLibs8
cassininazir
1
360
How to train your dragon (web standard)
notwaldorf
97
6.7k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.5k
Producing Creativity
orderedlist
PRO
348
40k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
30 Presentation Tips
portentint
PRO
1
330
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
210
Transcript
Blue-Green Deployment with ECS and monitoring Hatena Co., Ltd. Shinji
Tanaka @stanaka
Shinji Tanaka / ాத৻࢘ @stanaka / id:stanaka גࣜձࣾͯͳ ࣥߦһCTO 2
͋͋ ࠷ۙɺిࢠ൛ग़ͨΑ͏Ͱ͢
Agenda • Blue-Green Deployment with AWS ECS • Docker (cgroup)
Statics • Monitoring Docker with Mackerel
1 Blue-Green Deployment with AWS ECS
Immutable Infrastructure http://chadfowler.com/blog/2013/06/23/immutable-‐deployments/
Immutable Infrastructure • Immutable server • Stateless / Disposable •
ઃఆΛมߋ͢Δࡍ࠶࡞͢Δ • ίʔυσϓϩΠؚΉ
Blue-Green Deployment Host Host Host AWS Host Host Host Load
Balancer Dispose Old hosts Create New hosts
Pattern 1 • 2 Autoscaling Group • as ECS Cluster
• Blue / Green • TaskΛ֤άϧʔϓʹσϓϩΠ
Pattern 1 • ελϯόΠʹ৽͍͠AppΛσϓϩΠ • ELBͰάϧʔϓΛΓସ͑ • Ұ࣌తʹ྆ํͷάϧʔϓʹଓ͢Δ
Pattern 2 • 1 Autoscaling Group • 2 ECS Tasks
• Blue / Green Auto Scaling Group
Pattern 2 • ৽͍͠ίʔυΛ৽Taskͱͯ͠σϓϩΠ • Delete/CreateLoadBalancerListeners • Ұॠɺ Listener ͕ͳ͘ͳΔ
{ "containerDefinitions": [ … "portMappings": [ { "containerPort": 80, "hostPort": 80 } … ϙʔτΛͣΒ͢
Pros/Cons of Pattern 1 • ҆શɾ࣮֬ͳΓସ͑ • Ұ࣌తʹ྆ํͷάϧʔϓʹଓ͢Δ • Ϧιʔεޮѱ͍
• Auto Scaling Group͕ཁஆؾ
Pros/Cons of Pattern 2 • Ϧιʔεޮ͕ྑ͍ • ಉ͡ΠϯελϯεͰಈ͔ͤΔ • Delete/CreateLoadBalancerListners
͕ΞτϛοΫͳૢ࡞Ͱͳ͍
Pattern 2’ • ֤ΠϯελϯεʹNginx(HAProxy)Λ ஔ • ϙʔτϑΥϫʔμʔ • ৽چΛΞτϛοΫʹΓସ͑Մ •
શΠϯελϯεʹૢ࡞͕ඞཁ
2 Monitoring ECS with Mackerel
2-a Docker (cgroup) Statistics
DockerͷϞχλϦϯάͷجຊ • cgroupͷ࡞๏ʹै͏ • ίϯςφଆ͔Βɺϗετશମ͔͠ ݟ͑ͳ͍ • /proc/loadavg, /proc/stat
• ݟ͍ͨ߹`-‐v`ͰऔΓࠐΉ
ϗετଆ͔ΒͷϞχλϦϯά • cgroupͷϨϙʔτΛར༻ • /sys/fs/cgroup/ {cpuacct,
memory} • ଞʹblkio, cpu, devicesͳͲͷα ϒγεςϜ͕͋Δ(֤छ੍ݶͳͲͷ੍ ޚ༻) VCVOUVͷ߹ LFSOFMHFOFSJDEPDLFS
CPU༻ • /sys/fs/cgroup/cpuacct/docker/{ίϯςφID}/cpuacct.stat • user … ϢʔβʔϞʔυͷCPU ࣌ؒ • system
… γεςϜϞʔυͷCPU ࣌ؒ • CPU࣌ؒͷ୯Ґ: USER_HZ (σϑΥϧτ10ms) user 480 system 116
cpuacctͷଞͷࢦඪ • cpuacct.usage: ૯CPU࣌ؒ (φϊඵ) echo 0 > /cgroup/cpuacct/cpuacct.usage
ͰϦηοτ • cpuacct.usage_percpu: ֤CPUͷCPU ࣌ؒ (φϊඵ)
ϝϞϦ༻ • /sys/fs/cgroup/memory/docker/{ίϯςφID}/memory.stat cache 761856 rss 25681920 rss_huge
0 mapped_file 16384 pgpgin 12569 … total_cache 761856 total_rss 25681920 … ͍ΘΏΔ344STT NBQQFE@pMF
memory.statৄࡉ • cache • rss • mapped_file
• pgpgin • pgpgout • swap • active_anon • inactive_anon • active_file • inactive_file • unevictable • hierarchical_memory _limit • hierarchical_memsw • total_ࢠάϧʔϓΛ ؚΉ ৄࡉIUUQTXXXLFSOFMPSHEPD%PDVNFOUBUJPODHSPVQTNFNPSZUYU
memoryؔ࿈(ͦͷଞ) memory.usage_in_bytes ϝϞϦ༻ྔ memory.memsw.usage_in_bytes ϝϞϦ༻ྔͱεϫοϓྖҬͷ memory.max_usage_in_bytes ϝϞϦ࠷େ༻ྔ memory.memsw.max_usage_in_bytes εϫοϓ࠷େ༻ྔ memory.limit_in_bytes
ϝϞϦͷ੍ݶ memory.memsw.limit_in_bytes ϝϞϦͱεϫοϓ੍ݶ memory.failcnt ϝϞϦ੍ݶʹୡͨ͠ճ memory.memsw.failcnt ϝϞϦ੍ݶʹୡͨ͠ճ
ڞ௨Ϩϙʔτ • tasks ࣮ߦதͷϓϩηεͷҰཡ(PID) • cgroup.procs ࣮ߦதͷεϨουάϧʔϓͷҰཡ(TGID) % cat /sys/fs/cgroup/memory/docker/…./cgroup.procs
31218 31307 % ps aux | egrep '(31218|31307)' root 31218 0.0 0.0 4408 164 ? Ss 13:15 0:00 /bin/sh -‐ c rackup -‐p4567 root 31307 0.0 5.2 281364 26336 ? Sl 13:15 0:06 ruby1.9.1 /usr/local/bin/rackup -‐p4567
2-b Monitoring Docker with Mackerel
Mackerel https://mackerel.io/
ಛ • ʮׂʯʹΑΔϗετ܈ͷཧ • ΤʔδΣϯτʹΑΔϦιʔεࢹ ϩ ʔ ϧ
ϩʔϧຖͷάϥϑͰՄࢹԽ
mackerel-agent • Go Ͱॻ͔ΕͨެࣜΤʔδΣϯτ • Linux / Windows αϙʔτ •
ϗετεϖοΫͱϝτϦοΫΛऩू mackerelio/mackerel-agent
Blue-green DeploymentରԠ • ϩʔϧ୯ҐͰͷՄࢹԽ • ୀࡁΈίϯςφͷάϥϑอ࣋ Deployment
ΦʔτεέʔϧରԠ • αʔό͕ॖୀͯ͠άϥϑΔ
Raspberry Pi Ͱಈ͖·͢ • Թɾ࣪ηϯα → Slack௨
Docker with Mackerel
mackerel/mackerel-agent on Docker Hub https://registry.hub.docker.com/u/stanaka/mackerel-‐agent/
How to Use • ίϚϯυҰൃ • ඞཁͳύεɾAPIKEYΛ͢ docker run -‐h
`hostname` \ -‐v /var/run/docker.sock:/var/run/docker.sock \ -‐v /var/lib/mackerel-‐agent/:/var/lib/mackerel-‐agent/ \ -‐v /proc/mounts:/host/proc/mounts:ro \ -‐v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro -‐e 'apikey=<APIKEY>‘ \ mackerel/mackerel-‐agent
DockerFile(ൈਮ) FROM debian:jessie # setup mackerel-‐agent RUN apt-‐get
update \ .. && apt-‐get -‐y install mackerel-‐agent \ .. # setup docker plugin COPY mackerel-‐plugin-‐docker.rb /mackerel-‐plugin-‐docker.rb RUN echo [plugin.metrics.docker] \ >> /etc/mackerel-‐agent/mackerel-‐agent.conf RUN echo command = \"ruby /mackerel-‐plugin-‐docker.rb\" \ >> /etc/mackerel-‐agent/mackerel-‐agent.conf # boot mackerel-‐agent CMD /startup.sh
֤ίϯςφͷใΛऩू )PTU qVFOUE NBDLFSFM BHFOU "QQ
༷ࢠ(ίϯςφຖͷCPU)
ίϯςφͷதͷ ใΛऩू͍ͨ͠
ίϯςφͷதͷใΛऩू )PTU NBDLFSFM BHFOU "QQ
Memcachedͷྫ % docker run -‐d -‐P \
-‐-‐name memcached -‐p 11211:11211 \ sylvainlasnier/memcached )PTU NBDLFSFM BHFOU NFNDBDIFE
linkΦϓγϣϯͰଓ % docker run -‐i -‐t -‐h `hostname` \
-‐v /var/run/docker.sock:/var/run/docker.sock \ -‐v /proc/mounts:/host/proc/mounts:ro \ -‐v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \ -‐e 'apikey=<APIKEY>' -‐-‐link memcached:memcached \ mackerel-‐agent /bin/bash root@dev:/# env HOSTNAME=develop04.host.h MEMCACHED_PORT_11211_TCP_PORT=11211 MEMCACHED_PORT_11211_TCP_PROTO=tcp MEMCACHED_NAME=/tender_curie/memcached MEMCACHED_PORT=tcp://172.17.0.88:11211 MEMCACHED_PORT_11211_TCP_ADDR=172.17.0.88 MEMCACHED_PORT_11211_TCP=tcp://172.17.0.88:11211 ݱঢ়Pattern2’ͰରԠ
ڥมͰΞυϨεࢦఆ root@dev:/# /usr/local/bin/mackerel-‐plugin-‐memcached \ -‐host=$MEMCACHED_PORT_11211_TCP_ADDR memcached.connections.curr_connections
10 1427507503 memcached.cmd.cmd_get 0 1427507503 memcached.cmd.cmd_set 0 1427507503
ϓϥάΠϯઃఆΛࠐΉ % docker run -‐h `hostname` \ -‐v
/var/run/docker.sock:/var/run/docker.sock \ -‐v /var/lib/mackerel-‐agent/:/var/lib/mackerel-‐agent/ \ -‐v /proc/mounts:/host/proc/mounts:ro \ -‐v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro -‐e 'apikey=<APIKEY>‘ \ -‐-‐link memcached:memcached \ -‐v /etc/mackerel-‐agent/conf.d:/etc/mackerel-‐agent/conf.d:ro -‐e ‘include=/etc/mackerel-‐agent/conf.d/*' \ mackerel/mackerel-‐agent % cat /etc/mackerel-‐agent/conf.d/memcached.conf [plugin.metrics.memcached] command = "/usr/local/bin/mackerel-‐plugin-‐memcached -‐ host=$MEMCACHED_PORT_11211_TCP_ADDR"
MemcachedͷϝτϦοΫ
·ͱΊ • ECSͰBlue-Green Deployment • Patten 1, 2, 2’ •
Monitoring Docker with Mackerel