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
ペパボにおけるOpenStackHacks!
Search
Kazuhiko Yamashita
July 04, 2015
Technology
5
3.8k
ペパボにおけるOpenStackHacks!
GMO Pepabo.incのOpenStack運用事例です。
Kazuhiko Yamashita
July 04, 2015
Tweet
Share
More Decks by Kazuhiko Yamashita
See All by Kazuhiko Yamashita
Managing Database Migrations in Go Backend Systems
pyama86
0
66
新しい職場の CI が 20 分かかっていたらあなたならどうする?
pyama86
1
1.4k
事業を差別化する技術を生み出す技術
pyama86
4
1.8k
Re:Define 可用性を支える モニタリング、パフォーマンス最適化、そしてセキュリティ
pyama86
9
8.9k
AI時代におけるSRE、 あるいはエンジニアの生存戦略
pyama86
6
1.8k
Tuning GraphQL on Rails
pyama86
2
2.1k
ttlcacheのここがスゴい
pyama86
1
190
クラウドサービスの 利用コストを削減する技術 - 円安の真南風を感じて -
pyama86
3
660
実践ARMアーキテクチャ移行
pyama86
2
2.5k
Other Decks in Technology
See All in Technology
roppongirb_20250911
igaiga
1
270
20250912_RPALT_データを集める→とっ散らかる問題_Obsidian紹介
ratsbane666
0
110
Swift6.2時代のconcurrencyを考える会
yuukiw00w
0
160
日本語で指示するだけ!AIで業務効率化を実現する 〜90分で体感する実践ワークショップ〜
taka_aki
0
1.5k
Aurora DSQLはサーバーレスアーキテクチャの常識を変えるのか
iwatatomoya
1
1.3k
エンジニアリングマネージャーの成長の道筋とキャリア / Developers Summit 2025 KANSAI
daiksy
4
1.5k
Unlocking the Power of AI Agents with LINE Bot MCP Server
linedevth
0
250
Introduction to Python (under construction)
pohjus
0
510
AIエージェントで90秒の広告動画を制作!台本・音声・映像・編集をつなぐAWS最新アーキテクチャの実践
nasuvitz
3
440
メルカリIBISの紹介
0gm
1
1.1k
非エンジニアによるDevin開発のためにSREができること
shonansurvivors
0
110
そろそろ FormatStyle
treastrain
0
240
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
We Have a Design System, Now What?
morganepeng
53
7.8k
A designer walks into a library…
pauljervisheath
207
24k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
BBQ
matthewcrist
89
9.8k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
RailsConf 2023
tenderlove
30
1.2k
Building an army of robots
kneath
306
46k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.1k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.8k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Transcript
dͱՆΛҰॹʹτΡΪϟβʔ͠·ઐՊʂʂฤd GMO Pepabo, Inc. Pࢁ 2015/07/04 Pepabo Tech Conference in
Fukuoka ϖύϘʹ͓͚Δ 0QFO4UBDL)BDLT
Ͳɺ΅͘Ͱ͢ 1ࢁ (.01FQBCP*OD !QZBNB UFOTOBQPODPN
"HFOEB 0QFO4UBDLJT /ZBIJT IBDLT ࠓͬͯΔ͜ͱ
0QFO4UBDLJT Ϋϥυج൫ 7.Λཧ͢ΔͨΊͷ ιϑτΣΞ܈
ߏਤ /PWB"1* )PSJ[PO ,FZTUPOF /PWB$PNQVUF ཧϗετ /FVUSPO $JOEFS HMBODF ͜Μͳ7.࡞Γ͍ͨ
͜ͷϢʔβʔݖݶ ͋Δʁ ༻͢ΔΠϝʔδ 04͜Ε σΟεΫ͜͜Λ ͏ $16ɼϝϞϦ ͜Ε ༻͢ΔωοτϫʔΫ͜Ε ΦϨΦϨʂԶͩΑʂ
ϖύϘ͕ղܾͨ͠ ͔ͬͨ͜ͱ
ݸʑͷαʔϏεͰಠࣗʹΠϯϑϥΛߏங
αʔόΛؾܰʹ࡞Γ͍ͨ ຐ๏ͷΑ͏ʹ؆୯ʹ αʔό࡞Γ͍ͨΘ͊ɻɻ
“2014/05/01 Issueݐઃ αʔϏε͝ͱͰͳ͘ɺ શࣾڞ௨ͷΠϯϑϥج൫Λ࡞Δͧʂʂʂʂ
/ZBI
/ZBIJT ϖύϘͷԾج൫Πϯϑϥ ͜Ε·ͰαʔϏε͝ͱʹઃ͚͍ͯͨ ΠϯϑϥΛ0QFO4UBDLͰ౷߹
/ZBIJT IUUQXXXTMJEFTIBSFOFUVNF@QCUDCPC IUUQTXXXZPVUVCFDPNXBUDI W(618.;CP1T6
/ZBIͷ༝དྷ /PBIʹܾ·Δ தೋපͬΆ͍ͬͯͳΔ Ұจࣈม͑ͯ/ZBIʹ͠Α͏ͥͬͯͳΔ ޙͰ͔͍͍ͬͯ͜ࣈߟ͑Α͏ͥͬͯͳΔ /ZBIJTZFUBOPUIFSIPTUJOH
/ZBI αʔϏε͝ͱʹςφϯτΛ ׂ͠ɺݖݶ ϦιʔεΛཧ
ߏཧ
“ http://techlife.cookpad.com/entry/2015/05/12/080000
JUBNBF $JOEFS /PWB $PNQVUF /FVUSPO /PWB $PNQVUF /PWB $PNQVUF /PWB
$PNQVUF (JUͰόʔδϣϯཧ OPWBDPOG ʜ OFVUSPODPOG ʜ DJOEFSDPOG ʜ TFSWJDFOPWBSFTUBSU TFSWJDFOFVUSPOSFTUBSU TFSWJDFDJOEFSSFTUBSU
JUBNBF OPWBOPEF CBTFSPMF NBDLFSFMSFDJQF OPWBSPMF DPNQVUFSFDJQF BQJSFDJQF CVOEMFFYFDJUBNBFTTIIOPWBQCDMPVEDPNa OPEFKTPOOPEFOPWBKTPOCPPUTUSBQSC
JUBNBF TFSWJDFPQFOTUBDLOPWBDPNQVUF SFNPUF@pMFFUDOPWBOPWBDPOGEP OPUJpFTSFTUBSU TFSWJDF<PQFOTUBDLOPWBDPNQVUF> FOE
JUBNBF TFSWJDFPQFOTUBDLOPWBDPNQVUF SFNPUF@pMFFUDOPWBOPWBDPOGEP OPUJpFTSFTUBSU TFSWJDF<PQFOTUBDLOPWBDPNQVUF> FOE
ࢹ
.BDLFSFM ͯͳ͕ࣾఏڙ͢Δαʔό ࢹαʔϏε .BDLFSFMḉ ϩʔϧͰࢹઃఆΛଋͶΔ͜ͱ͕ Մೳ
.BDLFSFM NBDLFSFM\ SPMFOZBIOFVUSPOOPEF DPOG\ NPOJUPS< \ OBNFQMVHJODIFDLTOFVUSPOTFSWFS DPNNBOEVTSMJCOBHJPTQMVHJOTDIFDL@QSPDTBOFVUSPOTFSWFSD
^ \ OBNFQMVHJODIFDLTOFVUSPO DPNNBOEVTSMJCOBHJPTQMVHJOTDIFDL@UDQ)MPDBMIPTUQXD ^ ʜ > ^ ^
.BDLFSFM /FVUSPO JUBNBFNBDLSFMSC SPMFT<OZBIOFVUSPOOPEF> <QMVHJODIFDLTOFVUSPOTFSWFS> DPNNBOEVTSMJCOBHJPTQMVHJOTDIFDL@QSPDTBOFVUSPOTFSWFSD <QMVHJODIFDLTOFVUSPO>
DPNNBOEVTSMJCOBHJPTQMVHJOTDIFDL@UDQ)MPDBMIPTUQXDz ʜ NBDLFSFMḉ ࢮ׆ɺ͖͍͠ࢹ
.BDLFSFM
.BDLFSFM ઃఆϗετଆ͚ͩͰ*1ΞυϨεؾʹ ͠ͳ͍͍ͯ͘ ઃఆϑΝΠϧ͕γϯϓϧͰཧ͍͢͠ ࢹఆٛ(6*ͰαΫαΫΕΔ͔ͭɺ ҰೖΕͯ͠·͑͋ͱಉ͡ϩʔϧ ʹࢀՃͤ͞Δ͚ͩ
/ZBI·ͱΊ 0QFO4UBDLͬͯ·͢ ϖύϘͷϓϥΠϕʔτΫϥυ αʔϏε୯ҐͰϦιʔεཧ ߏཧJUBNBF
ࢹNBDLFSFM
)BDLT
य़
େମग़དྷͨ
͡Ό͋ɺ৮ͬͯΈͯ ͍͍͔͢ʂʂʂ
)PSJ[PO 7.ཧ /8ཧ ηΩϡϦςΟʔཧ Ϣʔβʔཧ
Ϧιʔεཧ
0QFO4UBDL$MJFOU 1ZUIPOͷΫϥΠϯτ OPWBMJTU OFVUSPOQPSUMJTU LFZTUPOFFOEQPJOUMJTU IUUQEPDTPQFOTUBDLPSHKBVTFSHVJEFDPOUFOUJOTUBMM@DMJFOUTIUNM
GNʜ ͡Ό͋ɺԿʁ ϗετ࡞Δͷʹճ 8*ૢ࡞ͨ͠ΓɺίϚϯυ ͛ͳ͖Ό͍͚ͳ͍Θ͚Ͱ͔͢ʁ
ͬͯΒΜͳ͍ʂʂʂ
)BDLT LBOBNFϢʔβʔཧ LBLJOFηΩϡϦςΟάϧʔϓཧ OZBIDMJ7.࡞ 1FD7.T࡞
Ϣʔβʔཧ
LBOBNF ϖύϘͰਓͷΤϯδχΞ͕ ෳͷαʔϏεʹܞΘΔ )PSJ[POͩͱมߋཤྺ͕ཧͰ͖ͳ͍ ূ͕Βͳ͍
LBOBNF ઃఆϑΝΠϧΛZBNMͰఆٛ ઃఆϑΝΠϧΛ(JUʹू ʮ୭͕ɺ͍ͭɺͲͷݖݶʯΛอ͔࣋ͨ͠Λཧ QZBNB FNBJMlQZBNB!QFQBCPDPNl UFOBOUT NVVNVVlDJUZCPZ
EFWFMPQlBENJOz UBOBLB FNBJMlUBOBLB!QFQBCPDPN UFOBOUT EFWFMPQNFOUNFNCFS
LBOBNF ొ༰ ,FZTUPOF QZBNB FNBJMlQZBNB!QFQBCPDPNl UFOBOUT NVVNVVlDJUZCPZ EFWFMPQlBENJOz UBOBLB FNBJMlUBOBLB!QFQBCPDPN
UFOBOUT EFWFMPQNFOUNFNCFS (JU)VC13 ɹొ༰ʹޡΓ͕ͳ͍͜ͱΛ ɹ֬ೝ͢Δ (JU)VCͰͷϨϏϡʔྃޙɺొ
ηΩϡϦςΟཧ
DPNQVUFOPEF ཧϗετ JOUFSGBDF 4FDVSJUZ(SPVQ Ϝʔ7. /PWB"QJ /FVUSPO Ϝʔ7.ʹΦϑΟε͔Βͷ 44)ڐՄ͍ͨ͠ Ϝʔ7.ʹ44)ڐՄ
JQUBCMFTఆٛ 7.Ͱͳ͘DPNQVUFOPEFʹ JQUBCMFTఆٛ
LBLJOF ઃఆϑΝΠϧΛZBNMͰఆٛ ઃఆϑΝΠϧΛ(JUʹू ηΩϡϦςΟઃఆͷϨϏϡʔ͕ՄೳʹͳΓɺ ·ͨɺొɺΓ͠ͷख͕ؒେ෯ʹݮ JOUFSOBM@QFSNJU SVMFT
EJSFDUJPOJOHSFTT QSPUPDPM FUIFSUZQF*1W QPSU SFNPUF@JQ EFTDSJQUJPOΠϯλʔφϧઢͷ௨৴ΛશͯڐՄ
LBLJOF طଘઃఆͷऔಘɾฤूɾొ /PWB"QJ JOUFSOBM@QFSNJU SVMFT EJSFDUJPOJOHSFTT QSPUPDPM FUIFSUZQF*1W QPSU SFNPUF@JQ
EFTDSJQUJPOΠϯλʔφϧઢͷ௨৴ΛશͯڐՄ ొ͞Εͨ༰Λө ࠷৽ొ༰Λ(JUཧ /PWB$PNQVUF /PWB$PNQVUF /PWB$PNQVUF
Πϯελϯε࡞
JNBHF
JNBHF TVEPϢʔβʔͷ࡞ TTIαʔόʔͷ࣮ߦ DMPVEJOJU PQFOTUBDLBQJDMJFOU QZUIPO ͷ Πϯετʔϧ σΟεΫ࠷খԽͱΠϯελϯεىಈ࣌ʹࣗಈ֦ு ωοτϫʔΫॳظԽ
ϑΝΠΞΥʔϧͷແޮԽ ຊ࣌ؒΛઃఆ ىಈ࣌ͷTMBDL௨
JNBHF $FOU04 XJUIDIFGQVQQFU 6CVOUV
XJUIDIFGQVQQFU $PSF04ͳͲͳͲ
JOTUBODF JNBHF CBTF &TTFODF QVQQFU DIFG DMPVEJOJU
“Πϝʔδͷىಈ࣌ʹ͞Εͨuser-dataʹج͖ͮ OSʹରͯ͠ઃఆΛߦ͑ΔΈ $MPVE*OJU DMPVEJOJU DMPVEDPOpH ϦϑΝϨϯε IUUQT[FUUBJPOCIKFMQDPNNVOJUZBSUJLMFSPHPQQMBFSJOHDMPVEJOJUSFGFSFODF
$MPVE*OJU IPTUOBNFQZBNBEFNP GREOQZBNBEFNPDPN SFQP@SFMFBTFWFS VTFST OBNFQZBNB HSPVQTQZBNB TIFMMCJOCBTI TVEP<"-- "--
/01"448%"--> TTIBVUIPSJ[FELFZT TTISTB'%"%'"%#/[B$ZD&GEMGKBTE&"R6+WTW,H)3.)E CPPUDNE FDIPSPPUQZBNBcDIQBTTXE
/ZBI$MJ (PͰ։ൃ͞Εͨ"1*ϥούʔίϚϯυ ίϚϯυҰൃͰ7.Λىಈ VTFSEBUBʹରԠ͍ͯ͠ΔͷͰҙͷઃఆ͕ىಈޙʹ ߦΘΕΔ *1ΞυϨεઃఆΛࣗಈԽ
VE[VSBOZBIDMJ 8SBQQFSPG/ZBIUIF8SBQQFSPG0QFO4UBDL OZBIJOTUBODFTUEFWOZBIa JDFOUPTOQZBNBUFTUQQZBNBQBTTa OFUXPSLFYUOFUFYU JOUOZBIa GNTNBMMVTFSEBUBVTFSEBUBZNM
1FD ઃఆϑΝΠϧʹج͖ͮෳͷ7.Λ Ұׅىಈɾఀࢭ VTFSEBUBͷςϯϓϨʔτԽΛαϙʔτ QZBNBUFTU UFOBOUQFQBCP JNBHFDFOUPT@DIFG@QVQQFU qBWPSNTNBMM
OFUXPSLT FUI CPPUQSPUPTUBUJD JQ@BEESFTT HBUFXBZ EOT TFDVSJUZ@HSPVQ EFGBVMU TTI UFNQMBUFT CBTFZBNM XFCTFSWFSZBNM
)BDLT·ͱΊ ϢʔβʔཧΛূΛͭͭ͠ ָʹʂʂ ηΩϡϦςΟʔཧΠϯελϯε ࡞ͷखؒΛίʔυͰղܾ
ࠓͬͯΔ͜ͱ
*1Λҙࣝ͠ͳ͍ ΠϯϑϥΛίʔυͰ ࡞Γ͖Δ
Α͋͘Δ%/4γεςϜ -# -# %/4 %/4 %/4 WJQ SJQ SJQ SJQ
SJQ SJQ
“)BTIJ$PSQࣾͷϓϩμΫτ *(.1Λར༻͠ಉ͡άϧʔϓͷϝϯόʔͷՃ ΛΠϕϯτ௨͠ɺεΫϦϓτͳͲͷ ࣮ߦ͕Մೳ
4FSG TFSGNFNCFST MCEFWMPDBMBMJWFSPMFMC EOTEFWMPDBMBMJWFSPMFEOT EOTEFWMPDBMBMJWFSPMFEOT DBUBHFOUMPH BHFOU&WFOUNFNCFSKPJOEOTEFWMPDBMEOTSPMFEOT ಉ͡άϧʔϓʹॴଐ͍ͯ͠Δϗετ ৽͘͠ϝϯόʔ͕Ճ͞Εͨ
ࣗಈԽ4UFQ $IFG 7. TFSGNFNCFSKPJO -#ϨγϐΛྲྀ͢ -# 7.ͷىಈͱಉ࣌ʹ ɹDMPVEJOJUͰTFSGΠϯετʔϧ Ϩγϐ͕ྲྀΕͯ-#ͷΠϯετʔϧ͕ྃ
ࣗಈԽ4UFQ -# -# %/4 %/4 %/4 WJQ SJQ SJQ
ࣗಈԽ4UFQ $IFG 7. EOTϨγϐΛྲྀ͢ %/4 Ϩγϐ͕ྲྀΕͯEOTͷΠϯετʔϧ͕ྃ -# TFSGͷNFNCFSKPJO %/4αʔϏεͷ7*1ʹKPJOͨ͠%/4Λ ɹϝϯόʔՃ
7.ͷىಈͱಉ࣌ʹ ɹDMPVEJOJUͰTFSGΠϯετʔϧ TFSGNFNCFSKPJO
ࣗಈԽ4UFQ -# -# %/4 %/4 %/4 WJQ SJQ SJQ SJQ
SJQ SJQ
ࣗಈԽ4UFQ $IFG 7. EOTϨγϐΛྲྀ͢ %/4 Ϩγϐ͕ྲྀΕͯEOTͷΠϯετʔϧ͕ྃ -# TFSGͷNFNCFSKPJO %/4αʔϏεͷ7*1ʹKPJOͨ͠%/4Λ ɹϝϯόʔՃ
7.ͷىಈͱಉ࣌ʹ ɹDMPVEJOJUͰTFSGΠϯετʔϧ TFSGͷNFNCFSKPJO
/BNJOPSJ 4FSG -WTͷϥΠϒϥϦ αʔϏεͷϔϧενΣοΫͰ͖Δ ϝϯόʔͷՃআΛ4MBDL௨ #! /usr/bin/env
ruby require 'rubygems' require 'naminori' Naminori::Notifier::Configure.instance.set({ webhook_url: "https://hooks.slack.com/services/XXXXXX", channel: "#pyama", user: "#naminori" }) service_options = { vip:"192.168.77.9" } case when Naminori::Serf.role?("dns") Naminori::Service.event("dns", "lvs", service_options) when Naminori::Serf.role?("lb") Naminori::Lb.health_check("dns", "lvs",service_options) end
·ͱΊ
શମ·ͱΊ ϓϥΠϕʔτΫϥυΛαʔϏε͝ͱʹς φϯτཧ͠ӡ༻͍ͯ͠·͢ ߏཧࢹࣗಈԽ ख͕͔͔ؒΔ͜ͱɺཧ͕ඞཁͳ͜ͱࣗ ͨͪͰίʔυॻ͍ͯղܾ
αʔϏεΛҠߦ͢Δ͚ͩͰͳͯ͘ɺΫϥ υΒ͍͜͠ͱ࢝Ίͯ·͢
͜͜Ͱঁੑਞ͔Β ࣭͕ࡴ౸͢Δ
͝ਗ਼ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠
Ҡߦࣄྫ
/ZBIͰಈ͍͍ͯΔαʔϏε ֤αʔϏεӶҙҾͬӽ͠த
None
4UFQ Ҡߦݩ -# 1SPYZ 8&# 5IF*OUFSOFU
4UFQ Ҡߦݩ -# 1SPYZ 8&# -# 1SPYZ 8&# 5IF*OUFSOFU
4UFQ Ҡߦݩ -# 1SPYZ 8&# -# 1SPYZ 8&# 5IF*OUFSOFU
ϜʔϜʔυϝΠϯ ΠϯϑϥΛͯ͢$IFGͰίʔυԽ յΕͨΒࣺͯͯɺ࡞Γ͢ -#ͷ%JSFDU3PVUJOHߏ͕ Ίͳ͍ʜ
%3ߏΊͳ͍ /PWB$PNQVUFεςʔτϑϧʹஅ͠ *OWBMJE1BDLFUΛഁغ͢Δ 5$1XBZϋϯυγΣΠΫཱ͕͠ͳ͘ͳͬͨ IPTU# IPTU" TZO TZO
BDL BDL σʔλ௨৴ͷ։࢝
DPNQVUF DPNQVUF %3ߏΊͳ͍ -# 1SPYZ TZO TZO TZO BDL TZO
BDLΛฦͨ͠ͷDPNQVUF DMJFOU
DPNQVUF DPNQVUF %3ߏΊͳ͍ -# 1SPYZ BDL DMJFOU
DPNQVUF DPNQVUF /"5ߏʹͨ͠ -# 1SPYZ TZO TZO TZO BDL DMJFOU
ϜʔϜʔυϝΠϯҠߦࣄྫ·ͱΊ Πϯϑϥͯ͢$IFGͰίʔυԽ 7.ͷσʔλͯ͢$PNQVUF OPEF ཧϗετ ͷϩʔΧϧ σΟεΫͷͨΊɺյΕͨΒ࡞Γͳ͓ ͢
-#ͷ%3ߏΊͳ͍