Slide 1

Slide 1 text

໺ాफҰ࿠(.01&1"#0JOD  ϩϦϙοϓʂϚωʔδυΫϥ΢υ::NFFUJOH ϚωʔδυΫϥ΢υͱ$ͷੈք 

Slide 2

Slide 2 text

ΠϯϑϥΤϯδχΞ ໺ాफҰ࿠ !OETPFB ϗεςΟϯάࣄۀ෦ϚωʔδυΫϥ΢υνʔϜ 

Slide 3

Slide 3 text

$ͷੈքͱ͸ 

Slide 4

Slide 4 text

ੜࢮʹؔ܎ͳ͘ɺ ਓͷ৺ͱهԱ͕ू·Δੈքʢू߹ແҙࣝʣ XJLJQFEJBҾ༻ IUUQTKBXJLJQFEJBPSHXJLJ&#&#$&&"&&"&#@&'%&&"&&"#&"#&#$&#&"&"&&"&#&"&" 

Slide 5

Slide 5 text

ੜࢮʹؔ܎ͳ͘ɺ ਓͷ৺ͱهԱ͕ू·Δੈքʢू߹ແҙࣝʣ XJLJQFEJBҾ༻ ίʔυΪΞε൓ٯͷϧϧʔγϡ IUUQTKBXJLJQFEJBPSHXJLJ&#&#$&&"&&"&#@&'%&&"&&"#&"#&#$&#&"&"&&"&#&"&" 

Slide 6

Slide 6 text

ϚωʔδυΫϥ΢υͷ$ͱ͸ 

Slide 7

Slide 7 text

օ͞Μ͜ͷϩΰݟͨ͜ͱ͋Γ·͔͢ʁ 

Slide 8

Slide 8 text



Slide 9

Slide 9 text

ͦ͏Ͱ͢Ͷ 

Slide 10

Slide 10 text



Slide 11

Slide 11 text

8IBUJT$POTVM w)BTIJ$PSQ͕ࣾఏڙ͍ͯ͠ΔΫϥελͷ؅ཧπʔϧͰ͢
 wެࣜϖʔδ͸ͪ͜ΒIUUQTXXXDPOTVMJP
 w(JU)VC͸ͪ͜ΒIUUQTHJUIVCDPNIBTIJDPSQDPOTVM
 w։ൃݴޠ͸ɺ(Pݴޠ 

Slide 12

Slide 12 text

8IBUJT$POTVM w)BTIJ$PSQ͕ࣾఏڙ͍ͯ͠ΔΫϥελͷ؅ཧπʔϧͰ͢ʁʁ
 wެࣜϖʔδ͸ͪ͜ΒIUUQTXXXDPOTVMJP
 w(JU)VC͸ͪ͜ΒIUUQTHJUIVCDPNIBTIJDPSQDPOTVM
 w։ൃݴޠ͸ɺ(Pݴޠ 

Slide 13

Slide 13 text

8IBUJT$POTVM $POTVMIBTNVMUJQMFDPNQPOFOUT 
 CVUBTBXIPMF JUJTBUPPMGPSEJTDPWFSJOHBOEDPOpHVSJOHTFSWJDFTJO
 ZPVSJOGSBTUSVDUVSF Β͍͠ʂʂ $POTVMʹ͸ෳ਺ͷίϯϙʔωϯτ͕͋Γ·͕͢ɺ
 શମͱͯ͠ɺΠϯϑϥετϥΫνϟ಺ͷαʔϏεΛൃݟͯ͠
 ߏ੒͢ΔͨΊͷπʔϧͰ͢ɻ ެࣜతʹ͸ 

Slide 14

Slide 14 text

8IBUJT$POTVM ΠϯϑϥετϥΫνϟ಺ͷαʔϏεΛൃݟͯ͠
 ߏ੒͢ΔͨΊͷπʔϧͱ͸ʁʁ 

Slide 15

Slide 15 text

8IBUJT$POTVM $POTVM͸ɺҎԼͷͭͷॏཁͳػೳ͕૊Έ߹Θ͞Δ͜ͱʹΑΓɺ
 ࣗಈͰΠϯϑϥ಺ͷαʔϏεΛൃݟ͠ઃఆߏ੒Λ͍ͯ͠·͢ɻ 4FSWJDF %JTDPWFSZ )FBMUI $IFDLJOH ,74UPSF .VMUJ %BUBDFOUFS 

Slide 16

Slide 16 text

8IBUJT$POTVM $POTVM͸ɺҎԼͷͭͷॏཁͳػೳ͕૊Έ߹Θ͞Δ͜ͱʹΑΓɺ
 ࣗಈͰΠϯϑϥ಺ͷαʔϏεΛൃݟ͠ઃఆߏ੒Λ͍ͯ͠·͢ɻ 4FSWJDF %JTDPWFSZ )FBMUI $IFDLJOH ,74UPSF .VMUJ %BUBDFOUFS 

Slide 17

Slide 17 text

8IBUJT$POTVM 4FSWJDF %JTDPWFSZ $POTVMΫϥΠΞϯτͰʮBQJʯ΍ʮNZTRMʯͳͲͷαʔϏεΛఆٛ͢Δͱɺ ଞͷΫϥΠΞϯτ͸$POTVMͰಛఆͷαʔϏεΛൃݟʢ%JTDPWFSZʣ͢Δ͜ͱ͕ग़དྷΔ ·ͨɺ%/4·ͨ͸)551Λར༻͢Δ͜ͱͰɺ ΞϓϦέʔγϣϯ͸ґଘ͍ͯ͠ΔαʔϏεͷ৘ใΛ؆୯ʹݟ͚ͭΔ͜ͱ͕ग़དྷΔ ܰ͘۷ΓԼ͛Δͱ 

Slide 18

Slide 18 text

{ "service": { { “name”: “keepalived”, “tags”: [“keepalived”], “checks”: [ { "script”: "/usr/lib/nagios/plugins/check_procs -c 1: -a keepalived”, “interval”: "30s” } ] } } 8IBUJT$POTVM ˝LFFQBMJWFEKTPO ͜Μͳײ͡Ͱɺ+40/Ͱ$POTVMʹαʔϏεΛఆٛ͢Δͱ 

Slide 19

Slide 19 text

# consul catalog services keepalived # dig keepalived.service.consul ;; ANSWER SECTION: keepalived.service.consul. 0 IN A 172.16.1.1 # curl http://127.0.0.1:8500/v1/catalog/services | jq. { "weblb-keepalived": [ "weblb-keepalived" ] } 8IBUJT$POTVM $POTVMΫϥΠΞϯτ΍%/4΍)551͔Β؆୯ʹಛఆͷαʔϏεΛݟ͚ͭΕΔΑ͏ʹͳΓ·͢ 

Slide 20

Slide 20 text

{ "service": { { “name”: “keepalived”, “tags”: [“keepalived”], “checks”: [ { "script”: "/usr/lib/nagios/plugins/check_procs -c 1: -a keepalived”, “interval”: "30s” } ] } } 8IBUJT$POTVM ˝LFFQBMJWFEKTPO ͜Μͳײ͡Ͱɺ+40/Ͱ$POTVMʹαʔϏεΛఆٛ͢Δͱ  ͪͳΈʹ͜ͷϑΝΠϧͰ͕͢

Slide 21

Slide 21 text

# consul agent -data-dir=/etc/consul # cat /etc/consul/keepalived.json { "service": { { “name”: “keepalived”, “tags”: [“keepalived”], “checks”: [ { "script”: "/usr/lib/nagios/plugins/check_procs -c 1: -a keepalived”, “interval”: "30s” } ] } } 8IBUJT$POTVM $POTVMBHFOUΛىಈ͢Δࡍʹࢦఆͨ͠σΟϨΫτϦʹ഑ஔ͠·͢  ͜ͷσΟϨΫτϦʹ഑ஔ

Slide 22

Slide 22 text

8IBUJT$POTVM $POTVM͸ɺҎԼͷͭͷॏཁͳػೳ͕૊Έ߹Θ͞Δ͜ͱʹΑΓɺ
 ࣗಈͰΠϯϑϥ಺ͷαʔϏεΛൃݟ͠ઃఆߏ੒Λ͍ͯ͠·͢ɻ 4FSWJDF %JTDPWFSZ )FBMUI $IFDLJOH ,74UPSF .VMUJ %BUBDFOUFS 

Slide 23

Slide 23 text

8IBUJT$POTVM $POTVM͸ɺҎԼͷͭͷॏཁͳػೳ͕૊Έ߹Θ͞Δ͜ͱʹΑΓɺ
 ࣗಈͰΠϯϑϥ಺ͷαʔϏεΛൃݟ͠ઃఆߏ੒Λ͍ͯ͠·͢ɻ 4FSWJDF %JTDPWFSZ )FBMUI $IFDLJOH ,74UPSF .VMUJ %BUBDFOUFS 

Slide 24

Slide 24 text

8IBUJT$POTVM 4FSWJDF %JTDPWFSZ ಛఆͷαʔϏε·ͨ͸ϊʔυͷϔϧενΣοΫΛ͢Δ͜ͱ͕ग़དྷΔ αʔϏεͷϔϧενΣοΫʹ͸ɺεΫϦϓτ΍/BHJPTϓϥάΠϯΛ࢖༻Ͱ͖Δ )FBMUI $IFDLJOH ܰ͘۷ΓԼ͛Δͱ 

Slide 25

Slide 25 text

{ "service": { { “name”: “keepalived”, “tags”: [“keepalived”], “checks”: [ { "script”: "/usr/lib/nagios/plugins/check_procs -c 1: -a keepalived”, “interval”: "30s” } ] } } 8IBUJT$POTVM ˝LFFQBMJWFEKTPO ઌఔɺʮ4FSWJDF%JTDPWFSZʯͰ࢖ͬͨ+40/ͷ࿮ઢͰׅހͬͨ෦෼ͷΑ͏ʹॻ͘͜ͱͰ࢖༻Ͱ͖·͢ ͜Ε͸/BHJPTϓϥάΠϯΛ࢖༻͍ͯ͠ΔύλʔϯʹͳΓ·͢ɻ 

Slide 26

Slide 26 text

8IBUJT$POTVM $POTVM͸ɺҎԼͷͭͷॏཁͳػೳ͕૊Έ߹Θ͞Δ͜ͱʹΑΓɺ
 ࣗಈͰΠϯϑϥ಺ͷαʔϏεΛൃݟ͠ઃఆߏ੒Λ͍ͯ͠·͢ɻ 4FSWJDF %JTDPWFSZ )FBMUI $IFDLJOH ,74UPSF .VMUJ %BUBDFOUFS 

Slide 27

Slide 27 text

8IBUJT$POTVM $POTVM͸ɺҎԼͷͭͷॏཁͳػೳ͕૊Έ߹Θ͞Δ͜ͱʹΑΓɺ
 ࣗಈͰΠϯϑϥ಺ͷαʔϏεΛൃݟ͠ઃఆߏ੒Λ͍ͯ͠·͢ɻ 4FSWJDF %JTDPWFSZ )FBMUI $IFDLJOH ,74UPSF .VMUJ %BUBDFOUFS 

Slide 28

Slide 28 text

8IBUJT$POTVM 4FSWJDF %JTDPWFSZ $POTVMͷ಺෦σʔλΛอ؅͢Δ֊૚ΩʔόϦϡʔετΞͰɺ Ϋϥελ಺ͷͲͷϊʔυ͔Β΋ΞΫηεग़དྷΔΑ͏ʹͳ͍ͬͯΔ ΞϓϦέʔγϣϯʹΑΔಈతઃఆมߋ΍$POTVMͷϦʔμʔબग़౳ʹ࢖༻Ͱ͖Δ $POTVMαʔόͱσʔληϯλʔͷ৘ใ΋͍࣋ͬͯΔ ·ͨɺ)551"1*Λ࢖༻͢Δ͜ͱͰ؆୯ʹΞΫηεग़དྷΔ ,74UPSF 

Slide 29

Slide 29 text

8IBUJT$POTVM ஫ҙ఺ͱͯ͠ɺWBMVFͷ্ݶ͕,#ͱ͍͏ ͜ͱ͚͓͍֮ͩ͑ͯͯ໯͑Ε͹ͱࢥ͍·͢ IUUQTXXXDPOTVMJPEPDTGBRIUNMRXIBUJTUIFQFSLFZWBMVFTJ[FMJNJUBUJPOGPSDPOTVMTLFZWBMVFTUPSF 

Slide 30

Slide 30 text

8IBUJT$POTVM $POTVM͸ɺҎԼͷͭͷॏཁͳػೳ͕૊Έ߹Θ͞Δ͜ͱʹΑΓɺ
 ࣗಈͰΠϯϑϥ಺ͷαʔϏεΛൃݟ͠ઃఆߏ੒Λ͍ͯ͠·͢ɻ 4FSWJDF %JTDPWFSZ )FBMUI $IFDLJOH ,74UPSF .VMUJ %BUBDFOUFS 

Slide 31

Slide 31 text

8IBUJT$POTVM $POTVM͸ɺҎԼͷͭͷॏཁͳػೳ͕૊Έ߹Θ͞Δ͜ͱʹΑΓɺ
 ࣗಈͰΠϯϑϥ಺ͷαʔϏεΛൃݟ͠ઃఆߏ੒Λ͍ͯ͠·͢ɻ 4FSWJDF %JTDPWFSZ )FBMUI $IFDLJOH ,74UPSF .VMUJ %BUBDFOUFS 

Slide 32

Slide 32 text

8IBUJT$POTVM 4FSWJDF %JTDPWFSZ ΫϥελʔΛ%BUBDFOUFSͱ͍͏୯ҐͰ؅ཧ෼཭͓ͯ͠Γɺ ͦͷ%BUBDFOUFSͱҟͳΔ%BUBDFOUFSؒͷ࿈ܞΛαϙʔτ͍ͯ͠·͢ ͦΕͦ͜෺ཧతͳ%BUBDFOUFSؒΛͭͳ͛ΔΠϝʔδͰ͢ $POTVMతʹ͸ɺ ʮ$POTVMͷϢʔβʔ͕ෳ਺ͷ஍Ҭʹ੒௕͢ΔͨΊʹ ந৅ϨΠϠʔΛ௥Ճ͢Δ͜ͱΛ৺഑͢Δඞཁ͕ͳ͍͜ͱΛҙຯ͠·͢ɻʯ ͱͷ͜ͱͰ͢ɻ .VMUJ %BUBDFOUFS 

Slide 33

Slide 33 text

8IBUJT$POTVM ͜ͷΑ͏ͳҎԼͷͭͷॏཁͳػೳ͕૊Έ߹Θ͞Δ͜ͱʹΑΓɺ
 ࣗಈͰΠϯϑϥ಺ͷαʔϏεΛൃݟ͠ઃఆߏ੒Λ͍ͯ͠·͢ͷͰɺ $POTVM͸ɺΠϯϑϥετϥΫνϟ಺ͷαʔϏεΛൃݟͯ͠ߏ੒͢ΔͨΊͷπʔϧ 4FSWJDF %JTDPWFSZ )FBMUI $IFDLJOH ,74UPSF .VMUJ %BUBDFOUFS 

Slide 34

Slide 34 text

$POTVMͷ"SDIJUFDUVSF 

Slide 35

Slide 35 text

#BTJD"SDIJUFDUVSFPG$POTVM $POTVMʹ͸େ͖͘෼͚ͯ̎ͭͷϞʔυ͕ଘࡏ͠·͢
 ʮ4FSWFSʯͱʮ$MJFOUʯͰ͢
 ֤ϊʔυ͸ɺ$POTVM"HFOUΛىಈ͢Δࡍʹɺ
 ͜ͷͲͪΒ͔ͷϞʔυΛࢦఆ͠·͢ 4FSWFS $MJFOU 

Slide 36

Slide 36 text

#BTJD"SDIJUFDUVSFPG$POTVM $POTVMͷશͯͷσʔλͷ֨ೲ͠؅ཧ͢Δ໾ׂ
 $POTVMͷΫϥελΛ૊Ή্Ͱ͸ඞͣ୆Ҏ্ඞཁͱͳΓɺ
 σʔλଛࣦγφϦΦΛආ͚ΔͨΊʹd୆ߏ੒͕ਪ঑ͱ͞Ε͍ͯ·͢
 
 ৑௕Խʹ͍ͭͯɿ
 ৑௕ੑΛอͪͭͭσʔλͷҰ؏ੑΛ୲อ͢ΔͨΊʹɺ
 ෼ࢄ߹ҙΞϧΰϦζϜͰ͋Δ3BGUϓϩτίϧ͕࠾༻͞Ε͍ͯ·͢
 -FBEFS͕୆બग़͞Εɺଞ͸'PMMPXFSͱͳΓ·͢
 -FBEFSͷΈ͕σʔλΛίϛοτ͠ɺ
 'PMMPXFS͸σʔλΛਵ࣌ϨϓϦέʔγϣϯ͞Ε·͢ 4FSWFS $MJFOU $POTVMαʔόͱ௨৴Λ͠Ϋϥελ৘ใͷऔಘͱొ࿥Λ͢Δ໾ׂ
 $POTVMαʔόͱ௨৴Ͱ͖ͳ͍ͱΫϥελ͔Β֎͞ΕΔ 

Slide 37

Slide 37 text

#BTJD"SDIJUFDUVSFPG$POTVM */5&3/&5 4FSWFS
 'PMMPXFS 4FSWFS
 -FBEFS 4FSWFS
 'PMMPXFS $MJFOU $MJFOU %BUBDFOUFS -"/(044*1
 5$16%1 3&1-*$"5*0/
 5$1 3&1-*$"5*0/
 5$1 31$
 5$1 31$
 5$1 -"/(044*1
 5$16%1 %BUBDFOUFS -&"%&3 '038"3%*/( 8"/(044*1
 5$16%1 3&.05&%$ '038"3%*/( 5$1 

Slide 38

Slide 38 text

#BTJD"SDIJUFDUVSFPG$POTVM (044*1ϓϩτίϧʹ͍ͭͯɿ
 Š͔͜͜Β
 ϥϯμϜʹબΜͩ૬खͱ৘ใΛަ׵͠ɺࣗ਎͕࣋ͭσʔλͷߋ৽Λ܁Γฦ͢ɻ
 γεςϜͷࢀՃऀ͕ෆఆظతʹ૿ݮͯ͠શମΛ೺ѲͰ͖ͳ͍ঢ়گ΍ɺ
 Ұ࣌తʹ௨৴Ͱ͖ͳ͍৔߹Ͱ΋৘ใΛ఻ൖͰ͖Δɻ
 Š͜͜·ͰҾ༻ ΫϥελʔมߋͷӨڹΛड͚ͣʹ௨৴Λߦ͑Δ଱ো֐ੑͷߴ͍৘ใڞ༗ϓϩτίϧΒ͍͠ ʢXJLJQFEJB͔ΒҾ༻ʣ
 IUUQTKBXJLJQFEJBPSHXJLJΰγοϓϓϩτίϧ 

Slide 39

Slide 39 text

ϚωʔδυΫϥ΢υͱ$POTVM 

Slide 40

Slide 40 text

͔͜͜Β͸ϚωʔδυΫϥ΢υͰ $POTVMΛ ࢖͍ͬͯΔ෦෼Λ঺հ͠·͢ 

Slide 41

Slide 41 text

$POTVMͷ ͝঺հͰ͖͍ͯͳ͍ػೳ͕ ·ͩ·ͩ͋ΔͷͰซͤͯ͝঺հ͠·͢ 

Slide 42

Slide 42 text

ϚωʔδυΫϥ΢υͷશମߏ੒ 

Slide 43

Slide 43 text

$POTVMΛ
 ࢖͍ͬͯΔͷ͕Ͳ͜ͳͷ͔ʂ ϚωʔδυΫϥ΢υͷશମߏ੒ 

Slide 44

Slide 44 text

ϚωʔδυΫϥ΢υͷશମߏ੒ શ෦Ͱ͢Ͷ 

Slide 45

Slide 45 text

ϚωʔδυΫϥ΢υͷશମߏ੒ $POTVM
 $MJFOU $POTVM
 $MJFOU $POTVM
 $MJFOU $POTVM
 $MJFOU $POTVM
 $MJFOU $POTVM
 $MJFOU $POTVM
 $MJFOU $POTVM
 $MJFOU $POTVM
 $MJFOU $POTVM
 $MJFOU $POTVM
 $MJFOU $POTVM
 $MJFOU $POTVM
 $MJFOU $POTVM
 $MJFOU $POTVM
 $MJFOU $POTVM
 $MJFOU $POTVM
 $MJFOU $POTVM
 4FSWFS $POTVM
 4FSWFS $POTVM
 4FSWFS 3&1-*$"5*0/
 5$1 3&1-*$"5*0/
 5$1 31$
 5$1 31$
 5$1 31$
 5$1 

Slide 46

Slide 46 text

ϚωʔδυΫϥ΢υͷશମߏ੒ $POTVM
 4FSWFS $POTVM
 4FSWFS $POTVM
 4FSWFS $POTVM
 4FSWFS $POTVM
 4FSWFS $POTVM
 4FSWFS 4UBHJOH 1SPEVDUJPO ߋʹɺ.VMUJ%BUBDFOUFSߏ੒ʹͳ͍ͬͯ·͢
 ڑ཭తʹ཭Εͨ%BUBDFOUFSͱ͔Ͱ͸ͳ͘ɺো֐ͷӨڹൣғ΍໊લղܾͷൣғΛ෼཭ͤ͞Δͨ Ίʹ࢖͍ͬͯ·͢  .VMUJ %BUBDFOUFS

Slide 47

Slide 47 text

ϚωʔδυΫϥ΢υͷશମߏ੒ w ϚωʔδυΫϥ΢υ͸ɺશମͰ$POTVMΛ࢖༻͍ͯ͠·͢ w ֤ϊʔυͰ$POTVM͕"HFOUͰىಈ͓ͯ͠ΓαʔϏεొ࿥౳Λߦ͍ͬͯ·͢ w $POTVM4FSWFS͸୆Ͱ৑௕Խߏ੒ʹͳ͍ͬͯ·͢
 $POTVM4FSWFS͸֤%BUBDFOUFSʹඞཁͳͷͰɺ͍ͬͺ͍͋Γ·͢ ͜͜Ͱ$POTVMͷඪ४ػೳͰ͸͋ΔΜͰ͕͢ɺ Ұ൪͓ੈ࿩ʹͳ͍ͬͯΔػೳͷ͓࿩Λ 

Slide 48

Slide 48 text

$POTVM%/4 

Slide 49

Slide 49 text

$POTVM%/4 w $POTVMʹ͸ɺ%/4ػೳ͕͋Γ·͢ w ϚωʔδυΫϥ΢υͰ͸ɺϩʔΧϧͷαʔόͷ໊લղܾΛશͯ$POTVMʹ·͔͍ͤͯ·͢ w σϑΥϧτͰ͸ɺOPEFDPOTVMͱ͍͏υϝΠϯ͕͖ͭ·͢
 ਖ਼֬ʹ͸ɺOPEF\%BUBDFOUFS໊^DPOTVM w αʔϏεΛొ࿥͓͚ͯ͠͹ɺTFSWJDFDPOTVMͱ͍͏υϝΠϯͰ໊લղܾ͢Δ͜ͱ΋Մೳ w $POTVM%/4ͷϙʔτ͸ͳͷͰɺΞϓϦέʔγϣϯ΍SFTPMW͔Β࢖༻͍ͨ͠৔߹ ͸ɺEOTNBTR౳Λ࢖༻͢Δඞཁ͕͋Γ·͢
 ϚωʔδυΫϥ΢υͰ͸ɺ6OCPVOEΛ࢖༻͍ͯ͠·͢  4FSWJDF %JTDPWFSZ

Slide 50

Slide 50 text

$POTVM%/4 $POTVM
 4FSWFS 
 $PNQVUF ྫ͑͹$PNQVUFͱݴΘΕΔϊʔυͰ͸ɺ
 ͜Μͳײ͡Ͱʮ6OCPVOE /4% $POTVMʯͰߏ੒͍ͯ͠·͢ $POTVM
 $MJFOU 6OCPVOE /4% # cat unbound.conf server: interface: 127.0.0.1 do-not-query-localhost: no stub-zone: name: "consul." stub-addr: 172.16.1.1@8600 stub-zone: name: “lolipop.jp.” stub-addr: 172.16.1.1@10053 DPOTVMͩͬͨΒ$POTVM%/4 MPMJQPQKQͩͬͨΒ/4% /BNF4FSWFS%BFNPO ໊લղܾͩ  4FSWJDF %JTDPWFSZ

Slide 51

Slide 51 text

$POTVM%/4 $POTVMΛىಈ͢Ε͹)551΍%/4͕࢖༻ՄೳͱͳΓ·͢ͷͰɺ͜Μͳײ͡Ͱ֬ೝͰ͖·͢ # consul members Node Address Status Type Build Protocol DC server-1 10.11.1.1:80 alive client 0.9.0 2 dc1 # dig server-1.node.consul ;; ANSWER SECTION: server-1.node.consul. 0 IN A 10.11.1.1 # curl http://127.0.0.1:8500/v1/catalog/nodes|jq .[] 

Slide 52

Slide 52 text

{ "service": { { “name”: “keepalived”, “tags”: [“keepalived”], “checks”: [ { "script”: "/usr/lib/nagios/plugins/check_procs -c 1: -a keepalived”, “interval”: "30s” } ] } } ˝LFFQBMJWFEKTPO αʔϏεͷ৔߹͸ɺ͜Μͳײ͡Ͱ+40/Ͱ$POTVMʹαʔϏεΛఆٛ͢Δͱ  $POTVM%/4 4FSWJDF %JTDPWFSZ

Slide 53

Slide 53 text

# dig keepalived.service.consul
 ;; ANSWER SECTION: keepalived.service.consul. 0 IN A 172.16.1.1
 keepalived.service.consul. 0 IN A 172.16.1.2
 ͜Μͳײ͡ͰTFSWJDF୯ҐͰͷ໊લղܾΛ͢Δ͜ͱ΋Ͱ͖·͢  $POTVM%/4 ͍ͭͮͯ 4FSWJDF %JTDPWFSZ

Slide 54

Slide 54 text

$POTVM5FNQMBUF 

Slide 55

Slide 55 text

$POTVM5FNQMBUF w (JU)VC͸ͪ͜ΒIUUQTHJUIVCDPNIBTIJDPSQDPOTVMUFNQMBUF
 w $POTVMͷঢ়ଶมԽΛ؂ࢹ͢ΔσʔϞϯ
 w $POTVMͷ,74ͷ৘ใΛ)551ܦ༝Ͱৗʹ؂ࢹ͍ͯ͠Δ
 w $POTVMͷԿ͔͠ΒͷΠϕϯτ ϊʔυͷ૿ݮ ͕ൃੜͨ͠ࡍʹɺςϯϓϨʔτϑΝΠϧΛ΋ͱ ʹઃఆϑΝΠϧΛ࠶࡞੒͠ίϚϯυͷ࣮ߦ σʔϞϯͷ࠶ىಈ౳ Λͯ͘͠ΕΔ  ,74UPSF )FBMUI $IFDLJOH 4FSWJDF %JTDPWFSZ

Slide 56

Slide 56 text

$POTVM5FNQMBUF ͜Μͳ࣌ʹ࢖͍ͬͯΔ$POTVM5FNQMBUF
 Ұ൪ଟ͍ύλʔϯ͕͜͏͍ͬͨ3FWFSTF1SPYZͷ૿ݮΛࣗಈతʹ࣮ࢪ͢Δͱ͜ΖͰ͢ -PBE
 #BMBODFS 3FWFSTF 1SPYZ 3FWFSTF 1SPYZ 3FWFSTF 1SPYZ -PBE #BMBODFS 3FWFSTF 1SPYZ 3FWFSTF 1SPYZ 3FWFSTF 1SPYZ ઃఆ͕ࣗಈͰॻ͖׵ΘΓɺ੾Γ཭͞ΕΔ ઃఆ͕ࣗಈͰॻ͖׵ΘΓɺ-PBE#BMBODFSʹ௥Ճ͞ΕΔ 3FWFSTF 1SPYZ  ˝3FWFSTF1SPYZ͕%PXO ˝ 3FWFSTF1SPYZΛ"%% 3WFSTF1SPYZΛ੾Γ཭ͨ͠ઃఆΛ࡞੒ͯ͠࠶ىಈ 3FWFSTF1SPYZΛ௥Ճͨ͠ઃఆΛ࡞੒ͯ͠࠶ىಈ ,74UPSF )FBMUI $IFDLJOH 4FSWJDF %JTDPWFSZ

Slide 57

Slide 57 text

͜Μͳײ͡Ͱઃఆͱ5FNQMBUFΛॻ͍ͯ഑ஔ͓͚ͯͩ͘͠Ͱউखʹ΍ͬͯ͘Ε·͢ʂศརʂ # cat keepavilved.conf.ctmpl virtual_server 172.1.1.1 80 { delay_loop 10 lvs_sched rr lvs_method NAT protocol TCP {{range service "reverseproxy|passing"}} real_server {{.Address}} 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 30 } }{{end}} } $POTVM5FNQMBUF ## cat config.hcl consul { address = "127.0.0.1:8500" ssl { enabled = false } } pid_file = "/var/run/consul-template/pid" template { source = "/etc/consul-template/keepalived.conf.ctmpl" destination = “/etc/keepalived/conf.d/reverseproxy.conf" command = "sudo systemctl reload keepalived" } SFWFSTFQSPYZͷαʔϏεΛ഑ྻʹͯ͠
 ͦΕΛશͯొ࿥͠·͢ ϊʔυͷ*1ΞυϨε ഑ஔͯ͠σʔϞϯΛSFMPBE ˝5FNQMBUF ˝$POTVM5FNQMBUFͷઃఆ  ,74UPSF )FBMUI $IFDLJOH 4FSWJDF %JTDPWFSZ

Slide 58

Slide 58 text

$POTVMBMFSUT 

Slide 59

Slide 59 text

$POTVMBMFSUT w (JU)VC͸ͪ͜ΒIUUQTHJUIVCDPN"DBMFQI4UPSBHFDPOTVMBMFSUT
 w $POTVMͷαʔϏε΍ϊʔυͷมԽ͕ൃੜͨ͠ࡍʹɺ.BJM΍4MBDL౳ʹ௨஌Λͯ͘͠ΕΔ σʔϞϯ
 w ϚωʔδυΫϥ΢υͰ͸ɺ4MBDL௨஌Λ͓ͯ͠Γ͜Μͳײ͡Ͱ௨஌ͯ͘͠Ε·͢  ,74UPSF )FBMUI $IFDLJOH 4FSWJDF %JTDPWFSZ

Slide 60

Slide 60 text

$POTVMFYQPSUFS 

Slide 61

Slide 61 text

΋͸΍$POTVM͔Βएׯ֎Ε͖ͯͯΔ͕ $POTVMFYQPSUFS 

Slide 62

Slide 62 text

$POTVMFYQPSUFS w (JU)VC͸ͪ͜ΒIUUQTHJUIVCDPNQSPNFUIFVTDPOTVM@FYQPSUFS w $POTVMͷαʔϏεͷঢ়ଶΛ1SPNFUIFVTʹసૹ͢ΔσʔϞϯ w ϚωʔδυΫϥ΢υͷ؂ࢹج൫͸1SPNFUIFVTΛ࢖༻͍ͯ͠·͢ͷͰɺ
 ϊʔυͷঢ়ଶ؅ཧͷͨΊʹ࢖༻͍ͯ͠·͢
 
 1SPNFUIFVTʹ͍ͭͯɿ
 ͬ͘͟Γઆ໌͢Δͱɺ༷ʑͳϝτϦΫεΛ࣌ܥྻͰ͍͍ײ͡ʹूܭɾه࿥Ͱ͖ΔπʔϧͰ͢
 ৄ͘͠͸ฐࣾVE[VSBͷ͜ͷลΓͷهࣄΛݟͯ΋Β͑Δͱྑ͍͔ͱࢥ͍·͢
 IUUQTVE[VSBIBUFOBCMPHKQFOUSZ
 IUUQTTQFBLFSEFDLDPNVE[VSBNBOBHFEDMPVEXJUIQSPNFUIFVT  ,74UPSF )FBMUI $IFDLJOH 4FSWJDF %JTDPWFSZ

Slide 63

Slide 63 text

$POTVMFYQPSUFS .FUSJD .FBOJOH DPOTVM@VQ $POTVMͷ࠷ޙͷ2VFSZ͕੒ޭ͔ͨ͠ DPOTVM@TFSG@MBO@NFNCFST Ϋϥελʔ಺ͷϝϯόʔ਺ DPOTVM@DBUBMPH@TFSWJDFT Ϋϥελʔʹؚ·ΕΔαʔϏε਺ DPOTVM@DBUBMPH@TFSWJDF@OPEF@IFBMUIZ ϊʔυ্ͷαʔϏε͕ਖ਼ৗ͔ DPOTVM@IFBMUI@OPEF@TUBUVT ϊʔυʹؔ࿈෇͚ΒΕͨϔϧενΣοΫͷεςʔλε DPOTVM@IFBMUI@TFSWJDF@TUBUVT αʔϏεʹؔ࿈෇͚ΒΕͨϔϧενΣοΫͷεςʔλε શ෦Ͱ͸ͳ͍͕औಘͰ͖Δ৘ใ͸͜ͷΑ͏ͳײ͡Ͱɺ
 1SPNFUIFVTଆ͔Β΋͜ͷΑ͏ͳײ͡Ͱ֬ೝ͢Δ͜ͱ͕Ͱ͖·͢ 

Slide 64

Slide 64 text

ଞʹ΋৭ʑ࢖͍ͬͯΔ෦෼͸͋ΔΜͰ͕͢ ࠓճ͸࣌ؒͷؔ܎্͜͜·ͰͰɾɾɾ 

Slide 65

Slide 65 text

·ͱΊ 

Slide 66

Slide 66 text

$POTVMΛ࢖͏ͱ؆୯ʹ Ϋϥελʔ؅ཧΛ͢Δ͜ͱ͕Ͱ͖ͯɺ ϊʔυͷ؅ཧΛָͰ͖Δ 1. 

Slide 67

Slide 67 text

ϩʔΧϧͷ%/4ొ࿥ͷखؒ΍
 1SPNFUIFVTͰͷϊʔυ؅ཧͷखؒͳͲ
 ͕͸Ϳ͚Δ 2. 

Slide 68

Slide 68 text

αʔϏε୯ҐͰϔϧενΣοΫͰ͖ΔͷͰ ϊʔυͷ૿ݮରԠ΍ো֐ݕ஌Λ ؆୯ʹग़དྷΔ 3. 

Slide 69

Slide 69 text

ͭ·Γ 

Slide 70

Slide 70 text

ϚωʔδυΫϥ΢υ͸ $POTVMΛ࢖ͬͯҰ෦ͷӡ༻Λָͯ͠·͢ 

Slide 71

Slide 71 text

͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠