GMO Pepabo.incのOpenStack運用事例です。
dͱՆΛҰॹʹτΡΪϟβʔ͠·ઐՊʂʂฤdGMO Pepabo, Inc.Pࢁ2015/07/04 Pepabo Tech Conference in FukuokaϖύϘʹ͓͚Δ 0QFO4UBDL)BDLT
View Slide
Ͳɺ΅͘Ͱ͢ 1ࢁ (.01FQBCP*OD !QZBNBUFOTOBQPODPN
"HFOEB 0QFO4UBDLJT /ZBIJT IBDLT ࠓͬͯΔ͜ͱ
0QFO4UBDLJTΫϥυج൫7.Λཧ͢ΔͨΊͷ ιϑτΣΞ܈
ߏਤ/PWB"1*)PSJ[PO,FZTUPOF/PWB$PNQVUFཧϗετ/FVUSPO$JOEFSHMBODF͜Μͳ7.࡞Γ͍ͨ͜ͷϢʔβʔݖݶ͋Δʁ༻͢ΔΠϝʔδ04͜ΕσΟεΫ͜͜Λ͏$16ɼϝϞϦ͜Ε༻͢ΔωοτϫʔΫ͜ΕΦϨΦϨʂԶͩΑʂ
ϖύϘ͕ղܾ͔ͨͬͨ͜͠ͱ
ݸʑͷαʔϏεͰಠࣗʹΠϯϑϥΛߏங
αʔόΛؾܰʹ࡞Γ͍ͨຐ๏ͷΑ͏ʹ؆୯ʹαʔό࡞Γ͍ͨΘ͊ɻɻ
“2014/05/01 IssueݐઃαʔϏε͝ͱͰͳ͘ɺ શࣾڞ௨ͷΠϯϑϥج൫Λ࡞Δͧʂʂʂʂ
/ZBI
/ZBIJT ϖύϘͷԾج൫Πϯϑϥ ͜Ε·ͰαʔϏε͝ͱʹઃ͚͍ͯͨ ΠϯϑϥΛ0QFO4UBDLͰ౷߹
/ZBIJTIUUQXXXTMJEFTIBSFOFUVNF@QCUDCPCIUUQTXXXZPVUVCFDPNXBUDI 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ʜTFSWJDFOPWBSFTUBSUTFSWJDFOFVUSPOSFTUBSUTFSWJDFDJOEFSSFTUBSU
JUBNBFOPWBOPEF CBTFSPMF NBDLFSFMSFDJQFOPWBSPMF DPNQVUFSFDJQFBQJSFDJQFCVOEMFFYFDJUBNBFTTIIOPWBQCDMPVEDPNaOPEFKTPOOPEFOPWBKTPOCPPUTUSBQSC
JUBNBFTFSWJDFPQFOTUBDLOPWBDPNQVUFSFNPUF@pMFFUDOPWBOPWBDPOGEPOPUJpFTSFTUBSU TFSWJDFFOE
ࢹ
.BDLFSFM ͯͳ͕ࣾఏڙ͢Δαʔό ࢹαʔϏε .BDLFSFMḉ ϩʔϧͰࢹઃఆΛଋͶΔ͜ͱ͕ Մೳ
.BDLFSFMNBDLFSFM\SPMFOZBIOFVUSPOOPEF DPOG\NPOJUPS<\OBNFQMVHJODIFDLTOFVUSPOTFSWFS DPNNBOEVTSMJCOBHJPTQMVHJOTDIFDL@QSPDTBOFVUSPOTFSWFSD^ \OBNFQMVHJODIFDLTOFVUSPO DPNNBOEVTSMJCOBHJPTQMVHJOTDIFDL@UDQ)MPDBMIPTUQXD^ ʜ>^^
.BDLFSFM/FVUSPOJUBNBFNBDLSFMSCSPMFT<OZBIOFVUSPOOPEF>DPNNBOEVTSMJCOBHJPTQMVHJOTDIFDL@QSPDTBOFVUSPOTFSWFSDDPNNBOEVTSMJCOBHJPTQMVHJOTDIFDL@UDQ)MPDBMIPTUQXDzʜNBDLFSFMḉࢮ׆ɺ͖͍͠ࢹ
.BDLFSFM
.BDLFSFM ઃఆϗετଆ͚ͩͰ*1ΞυϨεؾʹ͠ͳ͍͍ͯ͘ ઃఆϑΝΠϧ͕γϯϓϧͰཧ͍͢͠ ࢹఆٛ(6*ͰαΫαΫΕΔ͔ͭɺҰೖΕͯ͠·͑͋ͱಉ͡ϩʔϧʹࢀՃͤ͞Δ͚ͩ
/ZBI·ͱΊ 0QFO4UBDLͬͯ·͢ ϖύϘͷϓϥΠϕʔτΫϥυ αʔϏε୯ҐͰϦιʔεཧ ߏཧJUBNBF ࢹNBDLFSFM
)BDLT
य़
େମग़དྷͨ
͡Ό͋ɺ৮ͬͯΈ͍͍͔ͯ͢ʂʂʂ
)PSJ[PO 7.ཧ /8ཧ ηΩϡϦςΟʔཧ Ϣʔβʔཧ Ϧιʔεཧ
0QFO4UBDL$MJFOU 1ZUIPOͷΫϥΠϯτ OPWBMJTU OFVUSPOQPSUMJTU LFZTUPOFFOEQPJOUMJTUIUUQEPDTPQFOTUBDLPSHKBVTFSHVJEFDPOUFOUJOTUBMM@DMJFOUTIUNM
GNʜ͡Ό͋ɺԿʁϗετ࡞Δͷʹճ8*ૢ࡞ͨ͠ΓɺίϚϯυ͛ͳ͖Ό͍͚ͳ͍Θ͚Ͱ͔͢ʁ
ͬͯΒΜͳ͍ʂʂʂ
)BDLT LBOBNFϢʔβʔཧ LBLJOFηΩϡϦςΟάϧʔϓཧ OZBIDMJ7.࡞ 1FD7.T࡞
Ϣʔβʔཧ
LBOBNF ϖύϘͰਓͷΤϯδχΞ͕ ෳͷαʔϏεʹܞΘΔ )PSJ[POͩͱมߋཤྺ͕ཧͰ͖ͳ͍ ূ͕Βͳ͍
LBOBNF ઃఆϑΝΠϧΛZBNMͰఆٛ ઃఆϑΝΠϧΛ(JUʹू ʮ୭͕ɺ͍ͭɺͲͷݖݶʯΛอ͔࣋ͨ͠ΛཧQZBNBFNBJMlQZBNB!QFQBCPDPNlUFOBOUTNVVNVVlDJUZCPZEFWFMPQlBENJOzUBOBLBFNBJMlUBOBLB!QFQBCPDPNUFOBOUTEFWFMPQNFOUNFNCFS
LBOBNFొ༰,FZTUPOFQZBNBFNBJMlQZBNB!QFQBCPDPNlUFOBOUTNVVNVVlDJUZCPZEFWFMPQlBENJOzUBOBLBFNBJMlUBOBLB!QFQBCPDPNUFOBOUTEFWFMPQNFOUNFNCFS(JU)VC13ɹొ༰ʹޡΓ͕ͳ͍͜ͱΛ ɹ֬ೝ͢Δ(JU)VCͰͷϨϏϡʔྃޙɺొ
ηΩϡϦςΟཧ
DPNQVUFOPEF ཧϗετJOUFSGBDF4FDVSJUZ(SPVQϜʔ7./PWB"QJ/FVUSPOϜʔ7.ʹΦϑΟε͔Βͷ44)ڐՄ͍ͨ͠Ϝʔ7.ʹ44)ڐՄJQUBCMFTఆٛ7.Ͱͳ͘DPNQVUFOPEFʹJQUBCMFTఆٛ
LBLJOF ઃఆϑΝΠϧΛZBNMͰఆٛ ઃఆϑΝΠϧΛ(JUʹू ηΩϡϦςΟઃఆͷϨϏϡʔ͕ՄೳʹͳΓɺ ·ͨɺొɺΓ͠ͷख͕ؒେ෯ʹݮJOUFSOBM@QFSNJUSVMFTEJSFDUJPOJOHSFTTQSPUPDPMFUIFSUZQF*1WQPSUSFNPUF@JQEFTDSJQUJPOΠϯλʔφϧઢͷ௨৴ΛશͯڐՄ
LBLJOFطଘઃఆͷऔಘɾฤूɾొ/PWB"QJJOUFSOBM@QFSNJUSVMFTEJSFDUJPOJOHSFTTQSPUPDPMFUIFSUZQF*1WQPSUSFNPUF@JQEFTDSJQUJPOΠϯλʔφϧઢͷ௨৴ΛશͯڐՄొ͞Εͨ༰Λө࠷৽ొ༰Λ(JUཧ/PWB$PNQVUF/PWB$PNQVUF/PWB$PNQVUF
Πϯελϯε࡞
JNBHF
JNBHFTVEPϢʔβʔͷ࡞TTIαʔόʔͷ࣮ߦDMPVEJOJU PQFOTUBDLBQJDMJFOU QZUIPOͷ ΠϯετʔϧσΟεΫ࠷খԽͱΠϯελϯεىಈ࣌ʹࣗಈ֦ுωοτϫʔΫॳظԽϑΝΠΞΥʔϧͷແޮԽຊ࣌ؒΛઃఆىಈ࣌ͷTMBDL௨
JNBHF $FOU04 XJUIDIFGQVQQFU 6CVOUV XJUIDIFGQVQQFU $PSF04ͳͲͳͲ
JOTUBODFJNBHFCBTF&TTFODFQVQQFUDIFGDMPVEJOJU
“Πϝʔδͷىಈ࣌ʹ͞Εͨuser-dataʹج͖ͮOSʹରͯ͠ઃఆΛߦ͑ΔΈ$MPVE*OJUDMPVEJOJU DMPVEDPOpHϦϑΝϨϯεIUUQT[FUUBJPOCIKFMQDPNNVOJUZBSUJLMFSPHPQQMBFSJOHDMPVEJOJUSFGFSFODF
$MPVE*OJUIPTUOBNFQZBNBEFNPGREOQZBNBEFNPDPNSFQP@SFMFBTFWFSVTFSTOBNFQZBNBHSPVQTQZBNBTIFMMCJOCBTITVEP<"-- "--/01"448%"-->TTIBVUIPSJ[FELFZTTTISTB'%"%'"%#/[B$ZD&GEMGKBTE&"R6+WTW,H)3.)ECPPUDNEFDIPSPPUQZBNBcDIQBTTXE
/ZBI$MJ (PͰ։ൃ͞Εͨ"1*ϥούʔίϚϯυ ίϚϯυҰൃͰ7.Λىಈ VTFSEBUBʹରԠ͍ͯ͠ΔͷͰҙͷઃఆ͕ىಈޙʹ ߦΘΕΔ *1ΞυϨεઃఆΛࣗಈԽVE[VSBOZBIDMJ8SBQQFSPG/ZBIUIF8SBQQFSPG0QFO4UBDLOZBIJOTUBODFTUEFWOZBIaJDFOUPTOQZBNBUFTUQQZBNBQBTTaOFUXPSLFYUOFUFYU JOUOZBIaGNTNBMMVTFSEBUBVTFSEBUBZNM
1FD ઃఆϑΝΠϧʹج͖ͮෳͷ7.Λ Ұׅىಈɾఀࢭ VTFSEBUBͷςϯϓϨʔτԽΛαϙʔτQZBNBUFTUUFOBOUQFQBCPJNBHFDFOUPT@DIFG@QVQQFUqBWPSNTNBMMOFUXPSLTFUICPPUQSPUPTUBUJDJQ@BEESFTTHBUFXBZEOTTFDVSJUZ@HSPVQEFGBVMUTTIUFNQMBUFTCBTFZBNMXFCTFSWFSZBNM
)BDLT·ͱΊ ϢʔβʔཧΛূΛͭͭ͠ ָʹʂʂ ηΩϡϦςΟʔཧΠϯελϯε࡞ͷखؒΛίʔυͰղܾ
ࠓͬͯΔ͜ͱ
*1Λҙࣝ͠ͳ͍ΠϯϑϥΛίʔυͰ࡞Γ͖Δ
Α͋͘Δ%/4γεςϜ-# -#%/4 %/4 %/4WJQSJQ SJQSJQSJQSJQ
“)BTIJ$PSQࣾͷϓϩμΫτ*(.1Λར༻͠ಉ͡άϧʔϓͷϝϯόʔͷՃΛΠϕϯτ௨͠ɺεΫϦϓτͳͲͷ࣮ߦ͕Մೳ
4FSGTFSGNFNCFSTMCEFWMPDBMBMJWFSPMFMCEOTEFWMPDBMBMJWFSPMFEOTEOTEFWMPDBMBMJWFSPMFEOTDBUBHFOUMPHBHFOU&WFOUNFNCFSKPJOEOTEFWMPDBMEOTSPMFEOTಉ͡άϧʔϓʹॴଐ͍ͯ͠Δϗετ৽͘͠ϝϯόʔ͕Ճ͞Εͨ
ࣗಈԽ4UFQ$IFG7.TFSGNFNCFSKPJO-#ϨγϐΛྲྀ͢-#7.ͷىಈͱಉ࣌ʹ ɹDMPVEJOJUͰTFSGΠϯετʔϧϨγϐ͕ྲྀΕͯ-#ͷΠϯετʔϧ͕ྃ
ࣗಈԽ4UFQ-# -#%/4 %/4 %/4WJQSJQ SJQ
ࣗಈԽ4UFQ$IFG7.EOTϨγϐΛྲྀ͢%/4Ϩγϐ͕ྲྀΕͯEOTͷΠϯετʔϧ͕ྃ-#TFSGͷNFNCFSKPJO%/4αʔϏεͷ7*1ʹKPJOͨ͠%/4ΛɹϝϯόʔՃ7.ͷىಈͱಉ࣌ʹ ɹDMPVEJOJUͰTFSGΠϯετʔϧTFSGNFNCFSKPJO
ࣗಈԽ4UFQ-# -#%/4 %/4 %/4WJQSJQ SJQSJQSJQSJQ
ࣗಈԽ4UFQ$IFG7.EOTϨγϐΛྲྀ͢%/4Ϩγϐ͕ྲྀΕͯEOTͷΠϯετʔϧ͕ྃ-#TFSGͷNFNCFSKPJO%/4αʔϏεͷ7*1ʹKPJOͨ͠%/4ΛɹϝϯόʔՃ7.ͷىಈͱಉ࣌ʹ ɹDMPVEJOJUͰTFSGΠϯετʔϧTFSGͷNFNCFSKPJO
/BNJOPSJ 4FSG-WTͷϥΠϒϥϦ αʔϏεͷϔϧενΣοΫͰ͖Δ ϝϯόʔͷՃআΛ4MBDL௨#! /usr/bin/env rubyrequire '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"}casewhen 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Ͱಈ͍͍ͯΔαʔϏε֤αʔϏεӶҙҾͬӽ͠த
4UFQҠߦݩ-#1SPYZ85IF*OUFSOFU
4UFQҠߦݩ-#1SPYZ8-#1SPYZ85IF*OUFSOFU
ϜʔϜʔυϝΠϯ ΠϯϑϥΛͯ͢$IFGͰίʔυԽ յΕͨΒࣺͯͯɺ࡞Γ͢ -#ͷ%JSFDU3PVUJOHߏ͕ Ίͳ͍ʜ
%3ߏΊͳ͍ /PWB$PNQVUFεςʔτϑϧʹஅ͠ *OWBMJE1BDLFUΛഁغ͢Δ 5$1XBZϋϯυγΣΠΫཱ͕͠ͳ͘ͳͬͨIPTU#IPTU"TZOTZOBDLBDLσʔλ௨৴ͷ։࢝
DPNQVUFDPNQVUF%3ߏΊͳ͍-#1SPYZTZOTZOTZOBDLTZOBDLΛฦͨ͠ͷDPNQVUFDMJFOU
DPNQVUFDPNQVUF%3ߏΊͳ͍-#1SPYZBDLDMJFOU
DPNQVUFDPNQVUF/"5ߏʹͨ͠-#1SPYZTZOTZOTZOBDLDMJFOU
ϜʔϜʔυϝΠϯҠߦࣄྫ·ͱΊ Πϯϑϥͯ͢$IFGͰίʔυԽ 7.ͷσʔλͯ͢$PNQVUFOPEF ཧϗετͷϩʔΧϧ σΟεΫͷͨΊɺյΕͨΒ࡞Γͳ͓͢ -#ͷ%3ߏΊͳ͍