Network #DNSRoundRobin

κ³½μ„œν˜„Β·2022λ…„ 11μ›” 10일
0

πŸ”” λ³„λ„μ˜ μ†Œν”„νŠΈμ›¨μ–΄ ν˜Ήμ€ ν•˜λ“œμ›¨μ–΄ λ‘œλ“œλ°ΈλŸ°μ‹± μž₯λΉ„λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³ , DNSλ§Œμ„ μ΄μš©ν•˜μ—¬ 도메인 λ ˆμ½”λ“œ 정보λ₯Ό μ‘°νšŒν•˜λŠ” μ‹œμ μ—μ„œ νŠΈλž˜ν”½μ„ λΆ„μ‚°ν•˜λŠ” 기법이닀. μ›Ή λΏλ§Œμ•„λ‹ˆλΌ 도메인을 μ‚¬μš©ν•˜λŠ” λͺ¨λ“  μ„œλΉ„μŠ€-FTP, SMTP, TURN λ“± -μ—μ„œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€.

DNS(Domain Network System)λž€, 인터넷 μ£Όμ†Œμ°½μ— host domain name을 μž…λ ₯ν–ˆμ„ λ•Œ(naver, google) ν•΄λ‹Ή 문자λ₯Ό IP μ£Όμ†Œλ‘œ λ³€ν™˜ν•΄μ£ΌλŠ” μ‹œμŠ€ν…œμ„ μ˜λ―Έν•œλ‹€.
Local DNS Serverλž€, Domain Name을 μž…λ ₯ν–ˆμ„ λ•Œ ν•΄λ‹Ή IPλ₯Ό μ°ΎκΈ° μœ„ν•΄ κ°€μž₯ λ¨Όμ € μ°ΎλŠ” DNS μ„œλ²„λ₯Ό μ˜λ―Έν•œλ‹€. IPλ₯Ό μ°ΎλŠ” 역할을 ν•˜λŠ” 것은 Local DNS Resolver!
Root DNS Serverλž€, μ΅œμƒμœ„ DNS μ„œλ²„λ₯Ό μ˜λ―Έν•œλ‹€.

DNSRoundRobin 원리

μ›Ή μ„œλ²„λ‘œ 예λ₯Ό λ“€μžλ©΄, μ›Ή μ„œλΉ„μŠ€λ₯Ό λ‹΄λ‹Ήν•  μ—¬λŸ¬ λŒ€μ˜ μ›Ή μ„œλ²„λŠ” μžμ‹ μ˜ 곡인 IPλ₯Ό 각각 가지고 μžˆλ‹€. μ›Ή μ‚¬μ΄νŠΈμ— 접속을 μ›ν•˜λŠ” μ‚¬μš©μžκ°€ ν•΄λ‹Ή 도메인 μ£Όμ†Œλ₯Ό λΈŒλΌμš°μ €μ— μž…λ ₯ν•˜λ©΄, DNSλŠ” λ„λ©”μΈμ˜ 정보λ₯Ό μ‘°νšŒν•˜λŠ”λ°, μ΄λ•Œ IP μ£Όμ†Œλ₯Ό μ—¬λŸ¬ λŒ€μ˜ μ„œλ²„ IP 리슀트 μ€‘μ—μ„œ λΌμš΄λ“œ 둜빈 ν˜•νƒœλ‘œ λžœλ€ν•˜κ²Œ ν•˜λ‚˜ ν˜Ήμ€ μ—¬λŸ¬κ°œλ₯Ό μ„ νƒν•˜μ—¬ λ‹€μ‹œ μ‚¬μš©μžμ—κ²Œ μ•Œλ €μ€€λ‹€.

결과적으둜 μ›Ή μ‚¬μ΄νŠΈμ— μ ‘μ†ν•˜λŠ” λ‹€μˆ˜μ˜ μ‚¬μš©μžλŠ” μ‹€μ œλ‘œλŠ” 볡수의 μ›Ή μ„œλ²„μ— λ‚˜λ‰˜μ–΄ μ ‘μ†ν•˜κ²Œ λ˜λ©΄μ„œ μžμ—°μŠ€λŸ½κ²Œ μ„œλ²„μ˜ λΆ€ν•˜κ°€ λΆ„μ‚°λ˜λŠ” 방식이닀.

** DNS Round Robin을 μ΄μš©ν•œ λ‘œλ“œ λ°ΈλŸ°μ‹±

DNS 쑰회 결과둜 1개의 IP만 DNS 결과둜 μ‘°νšŒλ˜λŠ” κ²½μš°λ„ μžˆμ§€λ§Œ 졜근의 DNS λΌμš΄λ“œ 둜빈 방식은 볡수의 IPλ₯Ό λͺ¨λ‘ μˆœμ„œλŒ€λ‘œ μ œκ³΅ν•˜κ³  ν΄λΌμ΄μ–ΈνŠΈλ‘œ ν•˜μ—¬κΈˆ μ„ νƒν•˜λ„λ‘ ν•œλ‹€.

πŸ™„ κ·Έλž˜μ„œ μ–Έμ œ μ‚¬μš©ν•˜λŠ”λ°? 단점은 뭐야?

DNS λΌμš΄λ“œλ‘œλΉˆ 방식은 μ§€λ¦¬μ μœΌλ‘œ 볡수의 μ›Ή μ„œλ²„κ°€ 멀리 λ–¨μ–΄μ Έ μžˆμ–΄μ„œ μ‹€μ‹œκ°„μœΌλ‘œ ν—¬μŠ€ 체크가 μ–΄λ €μšΈ λ•Œ μ‚¬μš©ν•œλ‹€. +적은 λΉ„μš©μœΌλ‘œ κ΅¬ν˜„μ΄ ν•„μš”ν•  λ•Œλ„ μ‚¬μš©ν•¨ !

일반적인 λ‘œλ“œλ°ΈλŸ°μ‹±μ€ λ’€ 단에 μžˆλŠ” λ°±μ—”λ“œ μ„œλ²„λ“€μ˜ ν—¬μŠ€ 체크 정보λ₯Ό μˆ˜λ°˜ν•˜μ§€λ§Œ, DNS λΌμš΄λ“œλ‘œλΉˆμ€ λ‘œλ“œλ°ΈλŸ°μ‹± κΈ°λŠ₯이 μ—†μ–΄μ„œ λ³„λ„μ˜ ν—¬μŠ€ 체크가 μ—†λ‹€.
λ”°λΌμ„œ νŠΉμ • μ›Ή μ„œλ²„μ— λ¬Έμ œκ°€ 생겨 μ„œλΉ„μŠ€κ°€ λΆˆκ°€ν•œ μƒνƒœλΌ ν•˜λ”λΌλ„ DNSλŠ” 이λ₯Ό μ•Œ 방법이 μ—†κ³  ν•΄λ‹Ή μ„œλ²„μ˜ 곡인 IPλ₯Ό 도메인 쑰회 결과에 ν¬ν•¨μ‹œν‚€κΈ° λ•Œλ¬Έμ— κ³ κ°€μš©μ„±μ΄ 떨어진닀. 이것이 λΌμš΄λ“œλ‘œλΉˆ DNS의 μ΅œλŒ€ 단점 !!

DNS λΌμš΄λ“œ λ‘œλΉˆμ€ μ—¬λŸ¬ 개의 IP μ£Όμ†Œλ₯Ό 결과둜 λŒλ €μ£ΌλŠ”λ°, μ‚¬μš©μžμ˜ 운영 μ²΄μ œλ‚˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— 따라 λ™μž‘μ΄ λ‹€λ₯Ό 수 μžˆλ‹€. μ—¬λŸ¬ 개의 κ²°κ³Ό IP 쀑, 제일 λ¨Όμ € 쑰회된 IPλ₯Ό μ‚¬μš©ν•˜λŠ” κ²½μš°λ„ 있고 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ λ¬΄μž‘μœ„λ‘œ ν•˜λ‚˜ μ„ νƒν•˜μ—¬ 접속할 μˆ˜λ„ μžˆλ‹€. 처음 μ„ νƒν•œ IPκ°€ 접속이 μ•ˆλ˜λ©΄ κ·Έ λ‹€μŒμœΌλ‘œ 쑰회된 IPλ₯Ό μ ‘μ†ν•˜λ„λ‘ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— λ‘œμ§μ„ μΆ”κ°€ν•  μˆ˜λ„ μžˆλ‹€.

DNS 쑰회 μ •λ³΄μ˜ 캐싱

쑰회된 IP μ£Όμ†Œλ“€μ€ μ‚¬μš©μžκ°€ μ‚¬μš© 쀑인 ISP의 둜컬 DNS λ‘œμ‘Έλ²„μ— 캐싱이 λ˜κ±°λ‚˜ μ‚¬μš©μžμ˜ ν΄λΌμ΄μ–ΈνŠΈ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—λ„ 캐싱이 될 수 μžˆλ‹€.
캐싱 μ£ΌκΈ°(TTL: Time to Live) λ™μ•ˆμ€ λ™μΌν•œ 도메인에 λŒ€ν•΄μ„œλŠ” μΊμ‹±λœ IP μ£Όμ†Œλ₯Ό μ‚¬μš©ν•œλ‹€.

ISP(Intenet Service Provider)λž€, κ°œμΈμ΄λ‚˜ κΈ°μ—…μ²΄μ—κ²Œ 인터넷 접속 μ„œλΉ„μŠ€, μ›Ήμ‚¬μ΄νŠΈ ꡬ좕 및 μ›Ήν˜ΈμŠ€νŒ… μ„œλΉ„μŠ€ 등을 μ œκ³΅ν•˜λŠ” νšŒμ‚¬λ₯Ό λ§ν•œλ‹€. λŒ€ν‘œμ μœΌλ‘œ ν•œκ΅­μ—μ„œλŠ” KT, SKλΈŒλ‘œλ“œλ°΄λ“œ, LG U+ 등이 μžˆλ‹€.

✏️ μ›Ή νŽ˜μ΄μ§€, 슀트림 된 μ˜μƒ, λ°μ΄ν„°λ² μ΄μŠ€ 쿼리 결과만 캐싱 ν•˜λŠ” 것이 μ•„λ‹ˆλΌ, DNSκ°€ μ‘°νšŒν•œ λ„λ©”μΈμ˜ IP 정보도 λ„€νŠΈμ›Œν¬μƒμ—μ„œ μΊμ‹±ν•œλ‹€λŠ” 것을 μžŠμ§€ 말자.

λ”°λΌμ„œ 도메인 μ„€μ • μž‘μ—…μ„ ν•  λ•Œμ—” 캐싱 μ£ΌκΈ°λ₯Ό κ³ λ €ν•΄μ•Όν•œλ‹€. 캐싱을 무쑰건 길게 ν•˜λ©΄ κ΄€λ¦¬μžκ°€ DNS 정보λ₯Ό 바꿔도 μ μš©λ˜κΈ°κΉŒμ§€ μƒλ‹Ήν•œ μ‹œκ°„μ΄ 걸리며 바뀐 DNS 정보가 μΈν„°λ„·μƒμ˜ λ„€μž„ μ„œλ²„μ— μ „νŒŒ(propagation)λ˜λŠ”λ° 였랜 μ‹œκ°„μ΄ 걸리기 λ•Œλ¬Έμ΄λ‹€. λ°˜λŒ€λ‘œ μ£ΌκΈ°κ°€ λ„ˆλ¬΄ 짧으면 λΉ λ₯Έ μ—…λ°μ΄νŠΈ λ°˜μ˜μ€ κ°€λŠ₯ν•˜μ§€λ§Œ, 도메인 μ‘°νšŒκ°€ λΉˆλ²ˆν•΄μ§€λ©΄μ„œ μ‚¬μš©μžκ°€ μ›Ή μ‚¬μ΄νŠΈμ— μ ‘μ†ν•˜λŠ”λ° ν•„μš”ν•œ μ‹œκ°„μ΄ μ¦κ°€ν•œλ‹€.

졜근 흐름

졜근, ν΄λΌμš°λ“œ 벀더사듀이 μ œκ³΅ν•˜λŠ” λΌμš΄λ“œ 둜빈 DNSλŠ” 기쑴의 단점을 κ·Ήλ³΅ν•˜κΈ° μœ„ν•΄ 응닡이 μ—†λŠ” μ›Ή μ„œλ²„λ₯Ό 쑰회 κ²°κ³Όμ—μ„œ λ°°μ œν•  수 μžˆλ„λ‘ 자체적인 health check λ‘œμ§μ„ μΆ”κ°€ν•˜κ³  μžˆλ‹€. κ·Έλ ‡μ§€λ§Œ 이 κ²½μš°μ—λ„ DNS 쑰회 κ²°κ³Όκ°€ μΊμ‹±λœ μ‹œκ°„λ§ŒνΌμ€ HA(κ³ κ°€μš©μ„±) ꡬ성이 μ–΄λ €μš΄ 단점은 μ—¬μ „νžˆ λ‚¨μ•„μžˆλ‹€. λ”°λΌμ„œ λŒ€λΆ€λΆ„ CDN 업체듀은 A λ ˆμ½”λ“œμ˜ 캐싱 μ£ΌκΈ°λ₯Ό 맀우 짧게 κ°€μ Έκ°€λŠ” 좔세이닀.

정리

DNS Round Robin은 κ°€μš©μ„±μ„ μ œκ³΅ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ—, 무쀑단 μ„œλΉ„μŠ€κ°€ ν•„μš”ν•œ μ‹œμŠ€ν…œμ—λŠ” μ–΄μšΈλ¦¬μ§€ μ•ŠμœΌλ©° λ‹¨μˆœνžˆ μ—¬λŸ¬ λŒ€μ˜ μ›Ή μ„œλ²„λ‘œ νŠΈλž˜ν”½μ„ λΆ€ν•˜ λΆ„μ‚°ν•  λ•Œ κ°€μž₯ νŽΈλ¦¬ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλŠ” μ˜΅μ…˜μ΄λ‹€.
κ°€μš©μ„±μ΄ ν•„μš”ν•œ μ‹œμŠ€ν…œμ˜ 경우, health check κΈ°λŠ₯이 ν¬ν•¨λœ DNS μ„œλΉ„μŠ€λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ’‹λ‹€. Ex)Route53
λΌμš΄λ“œ 둜빈 DNS의 단점을 λ³΄μ™„ν•˜κΈ° μœ„ν•΄, GSLB(Global Server Load Balancing) DNS μ„œλΉ„μŠ€λ₯Ό μ‚¬μš©ν•˜μ—¬ DNS 쑰회 μ‹œ, λ‘œλ“œ λ°ΈλŸ°μ‹±κ³Ό λ™μ‹œμ— health check κΈ°λŠ₯을 μ‚¬μš©ν•œ HA ꡬ성이 λͺ¨λ‘ κ°€λŠ₯ν•˜λ„λ‘ κ΅¬μ„±ν•˜λŠ” 것도 μ•ˆμ „ν•œ 방법이닀.
λ‘œλ“œλ°ΈλŸ°μ„œ λ˜ν•œ SPOF(Single Point Of Failure)κ°€ 될 수 μžˆμœΌλ―€λ‘œ, 2λŒ€ μ΄μƒμ˜ λ‘œλ“œλ°ΈλŸ°μ„œμ™€ 각각의 곡인 IPλ₯Ό μ€€λΉ„ν•˜κ³ , GSLB둜 νŠΈλž˜ν”½μ„ λ‘œλ“œλ°ΈλŸ°μ„œμ— λ‚˜λˆ„λŠ” 방법도 많이 μ‚¬μš©ν•œλ‹€.

둜그인 μ„Έμ…˜ λ“± μ„Έμ…˜μ˜ μœ μ§€ μ„œλ²„-ν΄λΌμ΄μ–ΈνŠΈ 간에 ν•„μš”ν•œ 경우, 접속 μ€‘μ΄λ˜ ν΄λΌμ΄μ–ΈνŠΈκ°€ DNS에 μ˜ν•΄ λ‹€λ₯Έ μ„œλ²„ IPλ₯Ό ν• λ‹Ήλ°›μ•„ λ‹€λ₯Έ μ„œλ²„μ— 접속이 되면 κΈ°μ‘΄ μ„Έμ…˜μ΄ λŠμ–΄μ§ˆ 수 μžˆλ‹€. 이런 경우λ₯Ό λŒ€λΉ„ν•˜μ—¬ μ›Ή μ„œλ²„λΌλ¦¬ μ„Έμ…˜μ„ κ³΅μœ ν•  수 μžˆλ„λ‘ μ„Έμ…˜ ν΄λŸ¬μŠ€ν„°λ§ 섀정을 ν•˜κ±°λ‚˜, λ‘œλ“œ λ°ΈλŸ°μ„œμ—μ„œ IPλ‚˜ Cookie 값을 μ‚¬μš©ν•˜μ—¬ λ™μΌν•œ μ„œλ²„λ‘œ μ ‘μ†λ˜λ„λ‘ stickness 섀정을 ν•΄μ•Ό ν•˜λŠ”λ°, 이 뢀뢄은 L7 μŠ€μœ„μΉ˜λ‘œ ν•΄κ²°ν•  수 μžˆλ‹€.


λ‘œλ“œ λ°ΈλŸ°μ‹± μ•Œκ³ λ¦¬μ¦˜

  • λΌμš΄λ“œ 둜빈 방식 (Round Robin Method)
    λΌμš΄λ“œ 둜빈 방식은 각 μ„œλ²„λ₯Ό 순차적으둜 μ„ νƒν•˜μ—¬ μš”μ²­μ„ λΆ„μ‚°μ‹œν‚΅λ‹ˆλ‹€.
  • κ°€μ€‘μΉ˜ λΌμš΄λ“œ 둜빈 방식 (Weighted Round Robin Method)
    각각의 μ„œλ²„μ— κ°€μ€‘μΉ˜λ₯Ό 맀기고, κ°€μ€‘μΉ˜ λΉ„μœ¨μ— 따라 μš”μ²­μ„ λΆ„μ‚°μ‹œν‚΅λ‹ˆλ‹€. 주둜 μ„œλ²„μ˜ νŠΈλž˜ν”½ 처리 λŠ₯λ ₯이 μƒμ΄ν•œ κ²½μš°μ— μ‚¬μš©λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ A μ„œλ²„μ˜ κ°€μ€‘μΉ˜κ°€ 7, B μ„œλ²„μ˜ κ°€μ€‘μΉ˜κ°€ 3이라면 A와 B둜의 νŠΈλž˜ν”½ λΆ„μ‚° λΉ„μœ¨μ€ 7:3이 λ©λ‹ˆλ‹€.
  • IP ν•΄μ‹± 방식 (IP Hash Method)
    ν΄λΌμ΄μ–ΈνŠΈμ˜ IP μ£Όμ†Œλ₯Ό ν•΄μ‹œ μ²˜λ¦¬ν•˜κ³ , νŠΉμ • μ„œλ²„λ‘œ μš”μ²­μ„ λ§€ν•‘ν•˜μ—¬ νŠΈλž˜ν”½μ„ λΆ„λ°°ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€. μ‚¬μš©μžμ˜ IP μ£Όμ†Œλ₯Ό ν•΄μ‹œ μ²˜λ¦¬ν•˜κΈ° λ•Œλ¬Έμ— μ‚¬μš©μžκ°€ 항상 λ™μΌν•œ μ„œλ²„λ‘œ μ—°κ²°λ˜λŠ” 것을 보μž₯ν•©λ‹ˆλ‹€.
  • μ΅œμ†Œ μ—°κ²° 방식 (Least Connections Method)
    μ—°κ²°λœ 컀λ„₯μ…˜ μˆ˜κ°€ κ°€μž₯ 적은 μ„œλ²„λ₯Ό μ„ νƒν•˜μ—¬ μš”μ²­μ„ λΆ„μ‚°μ‹œν‚΅λ‹ˆλ‹€. νŠΈλž˜ν”½μœΌλ‘œ 인해 μ„Έμ…˜μ΄ κΈΈμ–΄μ§€λŠ” κ²½μš°μ— ꢌμž₯ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€.
  • μ΅œμ†Œ 응닡 μ‹œκ°„ 방식 (Least Response Time Method)
    μ„œλ²„μ˜ 응닡 μ‹œκ°„μ΄ κ°€μž₯ 짧은 곳으둜 νŠΈλž˜ν”½μ„ λΆ„μ‚°μ‹œν‚΅λ‹ˆλ‹€.

0개의 λŒ“κΈ€