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.6k
ペパボにおけるOpenStackHacks!
GMO Pepabo.incのOpenStack運用事例です。
Kazuhiko Yamashita
July 04, 2015
Tweet
Share
More Decks by Kazuhiko Yamashita
See All by Kazuhiko Yamashita
AI時代におけるSRE、 あるいはエンジニアの生存戦略
pyama86
6
1.4k
Tuning GraphQL on Rails
pyama86
2
1.4k
ttlcacheのここがスゴい
pyama86
1
84
クラウドサービスの 利用コストを削減する技術 - 円安の真南風を感じて -
pyama86
3
510
実践ARMアーキテクチャ移行
pyama86
2
2.3k
リモートワーク時代の守護神 PHP開発者のためのセキュリティ強化術
pyama86
3
1k
実践DevSecOps~クラウドネイティブとオンプレミスの間から~
pyama86
1
75
ペパボOpenTelemetry革命
pyama86
2
2k
Site Reliability Engineering for GMO
pyama86
10
1.3k
Other Decks in Technology
See All in Technology
継続的にアウトカムを生み出し ビジネスにつなげる、 戦略と運営に対するタイミーのQUEST(探求)
zigorou
0
500
非機能品質を作り込むための実践アーキテクチャ
knih
2
660
watsonx.ai Dojo #5 ファインチューニングとInstructLAB
oniak3ibm
PRO
0
160
AIのコンプラは何故しんどい?
shujisado
1
190
複雑性の高いオブジェクト編集に向き合う: プラガブルなReactフォーム設計
righttouch
PRO
0
110
10個のフィルタをAXI4-Streamでつなげてみた
marsee101
0
160
How to be an AWS Community Builder | 君もAWS Community Builderになろう!〜2024 冬 CB募集直前対策編?!〜
coosuke
PRO
2
2.8k
成果を出しながら成長する、アウトプット駆動のキャッチアップ術 / Output-driven catch-up techniques to grow while producing results
aiandrox
0
180
AWS re:Invent 2024 ふりかえり
kongmingstrap
0
130
Wvlet: A New Flow-Style Query Language For Functional Data Modeling and Interactive Data Analysis - Trino Summit 2024
xerial
1
110
生成AIをより賢く エンジニアのための RAG入門 - Oracle AI Jam Session #20
kutsushitaneko
4
210
PHPからGoへのマイグレーション for DMMアフィリエイト
yabakokobayashi
1
160
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
RailsConf 2023
tenderlove
29
940
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Designing Experiences People Love
moore
138
23k
Embracing the Ebb and Flow
colly
84
4.5k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Raft: Consensus for Rubyists
vanstee
137
6.7k
What's in a price? How to price your products and services
michaelherold
243
12k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.9k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Writing Fast Ruby
sferik
628
61k
A Tale of Four Properties
chriscoyier
157
23k
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ߏΊͳ͍