ç¶ã ãšELBã«æ©èœã远å ãããŠããŸããã仿Žã§ããNLBã«ã€ããŠæžããŸãã 仿ŽNLBã®èšäºãæžãããšã«æå³ãããã®ãïŒãšèªåããŸããããäžå¿ (åå¿è åã) ãš (HealthCheck) ãšããåãå£ã§ããªãã¹ãåªããæžãããšæããŸãã
NLBã«ã€ããŠ
å ã«èšã£ãŠããããããšãšããŠãNLBã¯ã¯ã£ããèšã£ãŠç人奜ã¿ã§åèŠæ®ºãã§ãããããæ»ã¬ããšã¯ç¡ããããããããæã£ãéãã«åãããªãã
å ã«ãã®èšäºãããé¥ãã«ã¬ãã«ã®é«ããã®ããšã³ããªããŠãããŸããäžèšãçè§£åºæ¥ãã¬ãã«ã§ããã°ãã®ãšã³ããªã¯çšæžã¿ã§ãã
kanny.hateblo.jp
dev.classmethod.jp
dev.classmethod.jp
HealthCheckã«ã€ããŠ
æ©éæ¬é¡ã§ãã HealthCheck ãš ELB(TargetGroup)ã¯ã»ããã§åãé¢ããªãååšã§ãããNLBã«SecurityGroupãåœãŠãããšãã§ããŸããã
ä»ãŸã§ãªããELBã« X ãšããSGãä»ããããããã¯ãšã³ãã®ãµãŒãã«ã¯ X ããã®ã€ã³ããŠã³ã äŸãã° TCP:80 ãšããèš±å¯ããŠããŸãããSGèšå®ã§ããªããªããã©ãããã®ïŒ çã㯠NLBã®å±ããSubnetã®IPã¬ã³ãžã«å¯ŸããŠèš±å¯ãããšãªããŸãããããäžèšã®èšäºãã¡ãããšèªãã 人ãªããããã¯ãã§ãããNLBã¯ããã¯ãšã³ããšã®éä¿¡ã§AZãè·šããŸããããã£ãŠãNLBãå±ããAZãšåãAZã«ããããã¯ãšã³ãã«å¯ŸããŠãèšå®ããã°è¯ããšãªããŸããããã¯Access.logãèŠãŠã確èªã§ããŸãã
NLBã®è§£èª¬
ãªãã¹ãç°¡åã«
æè¬ãªããŒã¹ãããã·åã§ã¯ãªã
ALB, ELB (Classic ELB) ã¯æè¬ãªããŒã¹ãããã·ã§ãããŒããã©ã³ãµã§äžæŠå
šãŠã®ãªã¯ãšã¹ããåããã£ãŠãããŒããã©ã³ãµã®SourceIPã§ããã¯ãšã³ãã«ãªã¯ãšã¹ããé£ã°ããŸããåœç¶ã¬ã¹ãã³ã¹ãæ»ã£ãŠæ¥ãã®ã§ããããåãæ¢ããŠãªã¯ãšã¹ã¿(ãšã³ããŠãŒã¶ãŒã®ãã©ãŠã¶ç)ã«è¿ããŸããéã«æžããšãçµæ§å¿ãããã ããææ°ãšãå¿
èŠã ãã£ãšãããšè€éãªããšãã§ãã ãšãªããŸããè€éãªããšãšã¯ SSL Terminate, Stickey Sessionãªã©ã§ãã
察ã㊠NLB ã¯ãªããŒã¹ãããã·ã§ã¯ãªãã§ããå³å¯ã«ã¯DSRãšãéãïŒãããã§ãããããŒããã©ã³ãµãäžæŠãªã¯ãšã¹ããåãã⊠ã®åãããªãããããªãããã¯ãšã³ãã®ã€ã³ã¹ã¿ã³ã¹ã«ãªã¯ãšã¹ããæ¥ãŸã(æ¥ãããã«èŠããŸããæ£ãã)ãããŠãããŒããã©ã³ãµãä»ããã¬ã¹ãã³ã¹ãæ»ããŸãããããŸãéã«æžããšãçµæ§ãããã ãã©è€éãªããšã¯ç¡çã
GCEã®å Žå
æ¢ããŠGCEãšæ¯èŒããŸãã GCEãæåã«ã ããããããã¯ãŒã¯ããŒããã©ã³ãµ(å
ã
ã¯åã«ããŒãã©ã³ãµïŒã¯DSRæ¹åŒã§ãããŠãã®LBã¯ææ°èŠãããã§ïŒã©ãã ãšèšã£ãŠããã®ã¯ãã®ããã§ãã ããã¯ç§ã®æèŠã§ããäœåºŠãåºããŠããèšèã§ããã Google 㯠IP, AWS 㯠DNS ãšããåé·ã®ããã®ä»çµã¿ã®ææ³ãããããã«æããŸããæåã«DSRãäœã£ãã®ããã®èšèšææ³ã匷ãåæ ãããŠããããã«æããŸãããããDSRåã¯æ©èœãçããªããSSL Terminateãšãã§ããããã§ HTTP(S) ããŒããã©ã³ãµãšãããªããŒã¹ãããã·å + å°å忣åã®LBãåºããŸããã
話ãHealthCheckã«æ»ããŸãã GCEã¯HealthCheckãã©ããã£ãŠãã®ãïŒ çã㯠LBèªèº«ããã«ã¹ãã§ãã¯ãããã«ç¹å®ã®IPã¢ãã¬ã¹ãããã«ã¹ãã§ãã¯ãé£ãã§ãããã§ãããã®ç¹å®ã®IPãšã¯ããããžã§ã¯ã(AWSã§èšããšããã®ã¢ã«ãŠã³ã)ãç°ãªã£ãŠãåãã§ãããªã®ã§ããã«ã¹ãã§ãã¯ã ããéãã»æ®ºãã¯äžå¿å¯èœã§ãã
NLBã®HealthCheckã¯èª°ãããã®ïŒ
誰ãHealthCheckããã®ãã¯ãä»ã®LBãšå€ãããNLBèªèº«ããããŸãã ã§ãSGãæå®ã§ããªãããªã®ã§ãä»ã®ãšããããã¯ãšã³ãåŽã®inbound SG ã«ãŒã«ãçµããããšãªã£ããã(å人çã«ã¯ããã¯ãã ãªãšããã®ãå«ã¿ãŸãã)
- VPC ã® CIDRã§åŠ¥å (AWSããã¥ã¡ã³ãã§ãããããšãèšã£ãŠã)
- Subnet ã® CIDRã§è¡ã (AZè·šããªãèæ ®ãå ¥ããã»å ¥ããªãã§2段é)
- NLBã ããç¹å®ã®Subnetã«æŒã蟌ããŠãã®CIDR (Subnetã ããã«ãªãããã ã§ããå«ããªã®ã«)
- åºå®ãã©ããåãããªãããã¢ã¯ã»ã¹ãã°ã«åºãŠããIPã ãèš±å¯ããã(å€ãããªãä¿èšŒã¯ãªã)
ä»ã®ãšããããããããã§ãã
ããŸã1. åŸæ¥ã®Private Subnetã«ããã¯ãšã³ããåŒã£èŸŒããã¯åºæ¥ãã®ãïŒ
çµè«ããèšããšã§ããŸãã ãã®æ§æã¯ CLB,ALBãšããããã£ãŠãããšæããŸããããã¯ãšã³ãã«ã°ããŒãã«IPã¢ãã¬ã¹ãæãããªããDSRã¯èªåã§ã¯ã©ã€ã¢ã³ãã«ããŒã¿ãå±ããªããŠã¯ãªããªãã®ã§äžèŠç¡çããã§ãããã§ããŸããã§ããŸããã å¿ èŠãªãã®ã¯
- NLB ã¯åœç¶ Public Subnetã«ãã
- ããã¯ãšã³ã㯠Private Subnet & ã°ããŒãã«IPç¡ã(ãã£ãŠãæå³ãªã)
- ããã¯ãšã³ããç«ã€ Subnet 㯠NAT-Gatewayãšãã§Outboundãåºæ¥ã
- ããã¯ãšã³ãã«SG
inbound TCP:80 0.0.0.0/0ãšããä»ãã
ã°ããŒãã«IPãç¡ãã€ã³ã¹ã¿ã³ã¹ã«inbound TCP:80 0.0.0.0/0 ãä»ãããã§ãïŒæ°ã«ãªãã®ã¯ãNATçµç±ã§æ»ãç¹ã§ããã垯åçã«ããŸãåé¡ãªãããšããããããã®æ§æã§æ¬åœã«è¡ããªããå
šAZã«NAT-GWå¿
é ãšèšãããšæããŸããçç±ã¯ïŒåé ã®ãšã³ããªèŠçŽããŠã¿ãŠãã ããã
ããŸã2. ECSãšçµã¿åããå¯èœïŒ
å¯èœã§ãããã ããæ®éã«Public Subnetã«ãããŠããŸããšãããŒãå šéã§äžžè£žã«ããããåŸãªãã®ã§ãPrivateã«åŒã£èŸŒããã®ã¯ããªãããæã ãšæããŸããNLBãã¿ãŒã²ããã°ã«ãŒããåç §ããã®ã§ãæ®éã«ECSãšé£æºã§ããŸããDrainingã¯ã§ããŸããããããããDSRæ¹åŒ(ãããªããã©)ãªãåççã«ã¯ãããªããå¿ èŠãªãã§ãã
ãŸãšã
- healthcheck 㯠VPC ã Subnet ã®CIDRãããããç¡ã
- NLB + Privateã«åŒã£èŸŒãã ããã¯ãšã³ãã®æ§æã¯å¯èœ
- ECS + NLB ãäžå¿ã€ã±ã Privateã«åŒã£èŸŒããã®ããããã
healthcheck ã¯ãã®ãã¡ç¶ºéºãªæ¹æ³ãã§ããããäžå¿ãhealthcheckã«ãã䜿ããªããïŒãšUIã§èšã£ãŠäºé²ç·åŒµã£ãŠãããŠãŒã¶ãŒã¯ NLBã®SGã« 0.0.0.0/0 ãšã絶察ä»ãã¡ããã ããããNLBã§IPå¶éåºæ¥ããšãèãã¡ããã ãããããNLBã¯SGç¡ããšããã®ã¯è¯ãæã ãšæãããã ãä»çµã¿çã«ã¯healthcheckã ãSGã¯ä»ããããã¯ããã ã£ãŠhealthcheckããã®ã¯çµå±NLBã ãããŒã«ã«IPããã£ãŠããšã¯ãENIãããã£ãŠããšãSGã¯ã€ã³ã¹ã¿ã³ã¹ã«ä»ãã®ã§ã¯ãªããENIã«ä»ããã®ãªã®ã§ä»çµã¿äžã¯çµ¶å¯Ÿåºæ¥ãã¯ãã
çµå±ãããŸãåå¿è ããã§ã¯ãªããªã£ããããªããã