18. ๋ถํ ๋ถ์ฐ๊ณผ ๊ณ ๊ฐ์ฉ์ฑ์ ์ ๊ณตํ๋ ELB
18. ๋ถํ ๋ถ์ฐ๊ณผ ๊ณ ๊ฐ์ฉ์ฑ์ ์ ๊ณตํ๋ ELB ๊ด๋ จ
ELBElastic Load Balancing๋ ๋ถํ ๋ถ์ฐ๊ณผ ๊ณ ๊ฐ์ฉ์ฑHigh Availability์ ์ ๊ณตํ๋ ์๋น์ค์ ๋๋ค.
ํ๋ฆฌ ํฐ์ด์์ ์ฌ์ฉ ๊ฐ๋ฅ
ELB๋ ํ๋ฆฌ ํฐ์ด์์ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. 2014๋ 8์ ๊ธฐ์ค์ผ๋ก ๋งค๋ฌ ELB 750์๊ฐ, ๋ฐ์ดํฐ ์ฒ๋ฆฌ 15GB๋ฅผ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
ELB๋ ๊ณ ๊ฐ์ L4/L7 ์ฅ๋น(๋ก๋ ๋ฐธ๋ฐ์)๋ฅผ ๊ตฌ์ ํ๊ฑฐ๋ ์ํํธ์จ์ด๋ก ์๋ฒ๋ฅผ ๊ตฌ์ถํ์ง ์์๋ ๋ถํ ๋ถ์ฐ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ณ , ๊ณ ๊ฐ์ฉ์ฑ ์๋น์ค๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
์์ ์๋ ๋ถํ ๋ถ์ฐ์ ํ๋ ค๋ฉด ๋ณ๋์ L4/L7 ์ฅ๋น๋ฅผ ๊ตฌ์ ํ๊ฑฐ๋ ์๋ฒ๋ฅผ ๊ตฌ์ ํด์ผ ํ์ต๋๋ค. ๋ณดํต ํ์ฌ์์๋ ๊ฐ๋ฐ ๋ถ์, ๊ตฌ๋งค ๋ถ์, ๋คํธ์ํฌ ์ฅ๋น ์ด์ ๋ถ์๊ฐ ๋ชจ๋ ๋ถ๋ฆฌ๋์ด ์์ต๋๋ค. ๊ทธ๋์ ์ฅ๋น๋ ์๋ฒ๋ฅผ ๊ตฌ๋งคํ๋ค ํ๋๋ผ๋ ๊ตฌ๋งค์์ ์ค์น๊น์ง ๋ณต์กํ ์ ์ฐจ์ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค. ๋ฌผ๋ก ๋น์ผ ์ฅ๋น ๊ฐ๊ฒฉ๋ ํฐ ๋ถ๋ด์ด์๊ณ , ์ค์น ๋ฐ ์ด์๋ ์ ๋ฌธ๊ฐ์ ๋์์ด ํ์ํ์ต๋๋ค. ๊ทธ๋์ ๋ถํ ๋ถ์ฐ๊ณผ ๊ณ ๊ฐ์ฉ์ฑ์ ์ผ๋ถ ๋คํธ์ํฌ ์ ๋ฌธ๊ฐ๋ค๋ง์ ์์ญ์ด์์ต๋๋ค.
ํด๋ผ์ฐ๋ ์๋น์ค ์๋๋ก ์ค๋ฉด์ ์ํฉ์ด ๋ง์ด ๋ฐ๋์์ต๋๋ค. AWS์์๋ ํด๋ฆญ ๋ช ๋ฒ๋ง์ผ๋ก ์๋ฒ๋ฅผ ์์ฑํ ์ ์๋ ๊ฒ์ฒ๋ผ ๋ก๋ ๋ฐธ๋ฐ์์ธ ELB๋ ํด๋ฆญ ๋ช ๋ฒ๋ง์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค. ์ค์ ๋ฐฉ๋ฒ๋ ๋งค์ฐ ๊ฐ๋จํด์ ธ์ ๋คํธ์ํฌ ์ ๋ฌธ๊ฐ์๊ฒ ์์กดํ์ง ์์๋ ๋ฉ๋๋ค. ELB๋ฅผ ์ฌ์ฉํ๋ฉด ๊ณ ๊ฐ์ ์ฅ๋น ๊ตฌ์ ์ ๋๋ ๋น์ฉ์ ์ ๊ฐํ ์ ์๊ณ , ์๋ฒ ๊ตฌ์ถ์ ๋๋ ๋ ธ๋ ฅ๊ณผ ๋น์ฉ๋ ์ ๊ฐํ ์ ์์ต๋๋ค.
ELB๋ ํ๊ณณ์ ์ง์ค๋๋ HTTP, TCP, SSL ํธ๋ํฝ์ ์ฌ๋ฌ EC2 ์ธ์คํด์ค๋ก ๋ถ์ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ฒ๊ฐ ์ ์์ ์ผ๋ก ๊ฐ๋ ์ค์ธ์ง ํ์ธHealth Checkํ์ฌ ์ผ๋ถ EC2 ์ธ์คํด์ค๊ฐ ์ค๋จ๋๋๋ผ๋ ํธ๋ํฝ์ ์ ์ EC2 ์ธ์คํด์ค๋ก๋ง ๋ณด๋ ๋๋ค. ์ด์ฒ๋ผ ELB๋ก ๋ถํ๋ฅผ ๋ถ์ฐํ๊ณ ๊ณ ๊ฐ์ฉ์ฑ ์๋น์ค๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
ELB๋ ๋ฆฌ์ ๋ณ๋ก ์์ฑํด์ผ ํ๊ณ , ์ฌ๋ฌ ๊ฐ์ฉ ์์ญAvailability Zone์์ ์คํ๋๋ EC2 ์ธ์คํด์ค๋ก ๋ถํ๋ฅผ ๋ถ์ฐ์ํฌ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ EC2 ์ธ์คํด์ค ํ๋ ๊ฐ๊ฐ ์ค๋จ๋๋ ๊ฒ์ด ์๋ ๊ฐ์ฉ ์์ญ ์ ์ฒด๊ฐ ์ค๋จ๋๋๋ผ๋ ์๋น์ค๋ฅผ ์ ์์ ์ผ๋ก ์ ๊ณตํ ์ ์์ต๋๋ค.
ELB๋ ์ธ๋ถ ํธ๋ํฝ ๋ฟ๋ง ์๋๋ผ ์ธํฐ๋ท์ด ์ฐ๊ฒฐ๋์ง ์๋ ๋ด๋ถ ๋คํธ์ํฌ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ค์์ ELB ๊ธฐ๋ณธ ๊ฐ๋ ์ ๋๋ค.
- L4(OSI Layer 4): OSI ๋ ์ด์ด์์ 4๋ฒ์งธ ์ ์ก ๊ณ์ธต์ ๋ปํฉ๋๋ค. TCP, UDP ๋ฑ์ ํ๋กํ ์ฝ์ด ๋ํ์ ์ด๋ฉฐ ํฌํธ ๋ฒํธ๋ก ๊ตฌ๋ถํฉ๋๋ค. ๋ณดํต OSI ๋ ์ด์ด์์ 3๋ฒ์งธ ๋คํธ์ํฌ ๊ณ์ธต์ IP์ ๋ฌถ์ด์ ์ฒ๋ฆฌํฉ๋๋ค. L4 ๋ก๋๋ฐธ๋ฐ์ฑ์ด๋ผ๊ณ ํ๋ฉด IP ์ฃผ์์ ํฌํธ ๋ฒํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ํธ๋ํฝ์ ๋ถ๋ฐฐํฉ๋๋ค.
- L7(OSI Layer 7): OSI ๋ ์ด์ด์์ 7๋ฒ์งธ ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต์ ๋ปํฉ๋๋ค. HTTP ํ๋กํ ์ฝ์ด ๋ํ์ ์ ๋๋ค. L7 ๋ก๋๋ฐธ๋ฐ์ฑ์ด๋ผ๊ณ ํ๋ฉด HTTP ํค๋์ ๋ด์ฉ์ ๊ธฐ์ค์ผ๋ก ํธ๋ํฝ์ ๋ถ๋ฐฐํฉ๋๋ค.
- ๋ก๋๋ฐธ๋ฐ์ฑ ์๊ณ ๋ฆฌ์ฆ: ํธ๋ํฝ์ ๊ฐ EC2 ์ธ์คํด์ค๋ก ๋ถ๋ฐฐํ ๋ ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ELB๋ ๋ผ์ด๋ ๋ก๋น(Round Robin) ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํฉ๋๋ค. ๋ผ์ด๋ ๋ก๋น์ ์ฐ์ ์์๋ฅผ ๋์ง ์๊ณ ์์๋๋ก ๋ถ๋ฐฐํ๋ ๋ฐฉ์์ ๋๋ค.
- ํฌ์ค ์ฒดํฌ(Health Check): EC2 ์ธ์คํด์ค๊ฐ ์ ์์ ์ผ๋ก ๊ฐ๋ ์ค์ธ์ง ํ์ธํ๋ ๊ธฐ๋ฅ์ ๋๋ค. EC2 ์ธ์คํด์ค๊ฐ ์ค๋จ๋์๋ค๊ณ ํ๋จ๋๋ฉด ํด๋น EC2 ์ธ์คํด์ค๋ ํธ๋ํฝ ๋ถ๋ฐฐ์์ ์ ์ธ๋ฉ๋๋ค.
- Connection Draining: Auto Scaling์ด ์ฌ์ฉ์์ ์์ฒญ์ ์ฒ๋ฆฌ ์ค์ธ EC2 ์ธ์คํด์ค๋ฅผ ๋ฐ๋ก ์ญ์ ํ์ง ๋ชปํ๋๋ก ๋ฐฉ์งํ๋ ๊ธฐ๋ฅ์ ๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ์ฉ์ ์๊ฐ ์ค์ด๋ค๋ฉด Auto Scaling์ด EC2 ์ธ์คํด์ค๋ฅผ ์ญ์ ํฉ๋๋ค. ๋ง์นจ ์ฌ์ฉ์๊ฐ ํด๋น EC2 ์ธ์คํด์ค์์ ํ์ผ์ ๋ค์ด๋ก๋ํ๊ณ ์์๋๋ฐ EC2 ์ธ์คํด์ค๊ฐ ์ญ์ ๋์ด๋ฒ๋ฆฌ๋ฉด ํ์ผ ๋ค์ด๋ก๋๋ ์ค๊ฐ์ ๋์ด์ง๋๋ค. EC2 ์ธ์คํด์ค๋ฅผ ์ญ์ ํ๊ธฐ ์ ์ ์ฌ์ฉ์์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋๋ก ์ง์ ํ ์๊ฐ๋งํผ ๊ธฐ๋ค๋ฆฝ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ธฐ๋ค๋ฆฌ๋ ๋์์๋ ์๋ก์ด ์ปค๋ฅ์ ์ ๋ฐ์ง ์์ต๋๋ค.
- Sticky Sessions: ์ฌ์ฉ์์ ์ธ์ ์ ํ์ธํ์ฌ ์ ์ ํ EC2 ์ธ์คํด์ค๋ก ํธ๋ํฝ์ ๋ถ๋ฐฐํ๋ ๊ธฐ๋ฅ์ ๋๋ค(HTTP ์ฟ ํค(Cookie)๋ฅผ ์ด์ฉํ ์ธ์ ). L7 ๋ก๋๋ฐธ๋ฐ์ฑ์ ๊ธฐ๋ฅ์ ๋๋ค. ์๋ฅผ ๋ค์ด ๋์ผํ ์ฌ์ฉ์๊ฐ ์๋น์ค์ ๊ณ์ ์ ์ํ ๋ ์ฒ์ ์ ์ํ๋ EC2 ์ธ์คํด์ค์ ์ฐ๊ฒฐ์์ผ ์ค๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ๋ผ์ด๋ ๋ก๋น ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ผ ๋งค๋ฒ ๋ค๋ฅธ EC2 ์ธ์คํด์ค์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
- Latency: ELB ๋ก๋ ๋ฐธ๋ฐ์์ EC2 ์ธ์คํด์ค ๊ฐ์ ์ง์ฐ์๊ฐ์ ๋๋ค.
- HTTP 2XX, 4XX, 5XX: EC2 ์ธ์คํด์ค์์ ๋ฆฌํดํ HTTP Response Code์ ๋๋ค
- ELB HTTP 4XX, 5XX: ELB ๋ก๋ ๋ฐธ๋ฐ์์์ ๋ฆฌํดํ HTTP Error Code์ ๋๋ค.
- Surge Queue Length: ELB ๋ก๋ ๋ฐธ๋ฐ์์์ EC2 ์ธ์คํด์ค๋ก ์ ๋ฌ๋์ง ๋ชปํ๊ณ ํ์ ๋จ์์๋ ์์ฒญ์ ๊ฐ์์ ๋๋ค.
- Spillover Count: ์์ง ํ๊ฐ ๊ฝ ์ฐจ์ ELB ๋ก๋ ๋ฐธ๋ฐ์๊ฐ ๊ฑฐ๋ถํ ์์ฒญ์ ๊ฐ์์ ๋๋ค.
- ์๊ธ: ELB ๋ก๋ ๋ฐธ๋ฐ์ ์คํ ์๊ฐ, ์ ์ก๋ ๋ฐ์ดํฐ์์ ๋ฐ๋ผ ์๊ธ์ด ์ฑ ์ ๋ฉ๋๋ค. ์์ธํ ์๊ธ์ AWS ์ฌ์ดํธ์ ์๊ธํ๋ฅผ ์ฐธ์กฐํ๊ธฐ ๋ฐ๋๋๋ค.
ELB Pre-warming
ELB๋ ํ๋์ ์ฅ๋น๊ฐ ์๋๋ผ ๋ด๋ถ์ ์ผ๋ก ์ฌ๋ฌ AWS ๋ฆฌ์์ค๊ฐ ์กฐํฉ๋ ์๋น์ค์ ๋๋ค(ELB๋ IP ์ฃผ์๊ฐ ์๋ ๋๋ฉ์ธ์ผ๋ก ์ ์ํฉ๋๋ค). ๋ฐ๋ผ์ ELB๋ก ๋ค์ด์ค๋ ํธ๋ํฝ์ด ๊ธ๊ฒฉํ ๋์ด๋ ๊ฒ์ผ๋ก ์์๋๋ฉด ๋ฏธ๋ฆฌ AWS์ ELB์ ์ฒ๋ฆฌ๋์ ๋๋ ค๋ฌ๋ผ๊ณ ์์ฒญํ ์ ์์ต๋๋ค. ์๋น์ค ์ถ์ ์ ํ ์คํธ ์ํฉ์์๋ ์์ฒญํ ์ ์์ต๋๋ค.
ELB Pre-warming์ AWS Support์ ๊ฐ์ ๋์ด ์์ด์ผ ์ ์ฒญํ ์ ์์ต๋๋ค. https://aws.amazon.com/support/createCase/?type=technical_support์ ์ ์ํ ๋ค ๊ธฐ์ ์ง์(Technical Support) ๋ฌธ์์์ ELB ์ ๋ณด ๋ฐ ํธ๋ํฝ ์ ๋ณด๋ฅผ ์ ๋ ฅํ์ฌ ์ ์ฒญํ๋ฉด ๋ฉ๋๋ค.
- ELB Name: exampleelb-2012921842.ap-northeast-1.elb.amazonaws.com
- Start date for elevated traffic patterns: 2014. 1. 10
- End date for elevated traffic patterns: 2014. 1. 20
- Traffic delta OR request rate expected at surge(in Requests Per Second): 1,000 to 10,000 in 5 minutes
- Average amount of data passing through the ELB per request/response pair(In Bytes): 10Kbytes
- Rate of traffic increase: 50,000/sec
- Are keep-alives used on the back-end?: keep-alives ์ฌ์ฉ ์ ๋ฌด ์ ๋ ฅ
- Percent of traffic using SSL termination on the ELB: ํธ๋ํฝ์์ SSL termination์ด ์ฐจ์งํ๋ ๋น์จ ์ ๋ ฅ
- Number of AZ's that will be used for this event/load balancer: ELB ๋ก๋ ๋ฐธ๋ฐ์๊ฐ ํธ๋ํฝ์ ๋ถ์ฐํ๊ณ ์๋ ๊ฐ์ฉ ์์ญ ๊ฐ์ ์ ๋ ฅ
- Is the back-end scaled to event/spike levels? If no, how many and what type of instances and when will they be scaled?: Auto Scaling์ผ๋ก ํ์ฅํ๋ ๊ธฐ์ค, EC2 ์ธ์คํด์ค ์ ํ ๋ฐ ๊ฐ์ ์ ๋ ฅ
- Use-case description: ์ฌ์ฉ ๊ณํ ์ ๋ ฅ
- Traffic pattern description: ํธ๋ํฝ ํจํด ์ค๋ช ์ ๋ ฅ
๋ด์ฉ์ ๋ชจ๋ ํ๊ธ๋ก ์ ๋ ฅํด๋ ๋์ง๋ง ์ ๋ชฉ์ด๋ ๋ด์ฉ ์ฒซ๋จธ๋ฆฌ์ "ํ๊ธ๋ก ๋์ด ์๋ค", "ํ๊ตญ ๊ณ ๊ฐ์ด๋ค" ๋ฑ์ ์์ด๋ก ๊ธฐ์ฌํ๋ฉด ์ข๋ ๋นจ๋ฆฌ ์ฒ๋ฆฌ๋ฉ๋๋ค.