๐ AWS์์ ๋ก๋ ๋ฐธ๋ฐ์ฑ๋ Electro ์ ์์๊ฑฐ๋ ์น์ฌ์ดํธ (AWS Load Balancer ์ฌ์ฉ)
Source: Dev.to
๊ฐ์
์ด ํ๋ก์ ํธ๋ ๋ค์์ ์ฌ์ฉํ์ฌ ๊ณ ๊ฐ์ฉ์ฑ ์ ์์๊ฑฐ๋ ์น์ฌ์ดํธ๋ฅผ AWS์ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค:
- Apache๋ฅผ ์คํํ๋ ๋ ๊ฐ์ EC2 ์ธ์คํด์ค
- HTTP ํธ๋ํฝ์ ๋ถ์ฐ์ํค๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ก๋ ๋ฐธ๋ฐ์(ALB)
- ํผ๋ธ๋ฆญ ์๋ธ๋ท๊ณผ ์ธํฐ๋ท ๊ฒ์ดํธ์จ์ด๊ฐ ํฌํจ๋ ์ปค์คํ VPC
AWS ์ธํ๋ผ, ๋ก๋ ๋ฐธ๋ฐ์ฑ ๋ฐ ๊ณ ๊ฐ์ฉ์ฑ์ ๋ฐฐ์ฐ๋ ์ด๋ณด์์๊ฒ ์ ํฉํฉ๋๋ค.
์ํคํ ์ฒ
- VPC CIDR:
12.0.0.0/16 - ํผ๋ธ๋ฆญ ์๋ธ๋ทโฏ1:
12.0.1.0/24โ EC2 ์ธ์คํด์คโฏ1 ํธ์คํ - ํผ๋ธ๋ฆญ ์๋ธ๋ทโฏ2:
12.0.3.0/24โ EC2 ์ธ์คํด์คโฏ2 ํธ์คํ - ๋ก๋ ๋ฐธ๋ฐ์: ์ ํ๋ฆฌ์ผ์ด์ ๋ก๋ ๋ฐธ๋ฐ์(HTTP, ํฌํธโฏ80)
- ํ๊น ๊ทธ๋ฃน: ๋ ์ ์์ ์ธ EC2 ์ธ์คํด์ค๋ก ํธ๋ํฝ ๋ผ์ฐํ
- ์ธํฐ๋ท ๊ฒ์ดํธ์จ์ด: ํผ๋ธ๋ฆญ ์ธํฐ๋ท ์ก์ธ์ค ์ ๊ณต
์ปค์คํ VPC ๋ง๋ค๊ธฐ
- VPC ๋์๋ณด๋ โ Your VPCs โ Create VPC ๋ก ์ด๋ํฉ๋๋ค.
- ์ค์ :
- Name:
ecommerce-vpc - IPv4 CIDR:
12.0.0.0/16
- Name:
- Create ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ ๊ฐ์ ํผ๋ธ๋ฆญ ์๋ธ๋ท ๋ง๋ค๊ธฐ
| ์๋ธ๋ท | ์ด๋ฆ | ๊ฐ์ฉ ์์ญ | CIDR |
|---|---|---|---|
| 1 | public-subnet-1a | ์: us-east-2a | 12.0.1.0/24 |
| 2 | public-subnet-2b | us-east-2b | 12.0.3.0/24 |
๊ฐ ์๋ธ๋ท์ ecommerce-vpc ์๋์ ์์ฑํฉ๋๋ค.
์ธํฐ๋ท ๊ฒ์ดํธ์จ์ด ์์ฑ ๋ฐ ์ฐ๊ฒฐ
- Internet Gateways โ Create ๋ฅผ ์ ํํฉ๋๋ค.
- Name:
ecommerce-igw. - ์์ฑ ํ
ecommerce-vpc์ ์ฐ๊ฒฐํฉ๋๋ค.
ํผ๋ธ๋ฆญ ์ก์ธ์ค๋ฅผ ์ํ ๋ผ์ฐํธ ํ ์ด๋ธ ๊ตฌ์ฑ
- Route Tables ๋ก ์ด๋ํ์ฌ VPC์ ๊ธฐ๋ณธ ๋ผ์ฐํธ ํ ์ด๋ธ์ ์ ํํฉ๋๋ค.
- Edit Routes โ Add :
- Destination:
0.0.0.0/0 - Target:
ecommerce-igw
- Destination:
- ์ด ๋ผ์ฐํธ ํ
์ด๋ธ์ ๋ ํผ๋ธ๋ฆญ ์๋ธ๋ท(
12.0.1.0/24๋ฐ12.0.3.0/24)์ ์ฐ๊ฒฐํฉ๋๋ค.
๋ ๊ฐ์ Ubuntu EC2 ์ธ์คํด์ค ์คํ
| ์ธ์คํด์ค | ์๋ธ๋ท | ํผ๋ธ๋ฆญ IP | ๋ณด์ ๊ทธ๋ฃน |
|---|---|---|---|
| 1 | public-subnet-1a (12.0.1.0/24) | ์๋ ํ ๋น โ | web-sg |
| 2 | public-subnet-2b (12.0.3.0/24) | ์๋ ํ ๋น โ | web-sg |
- AMI: Ubuntuโฏ22.04 LTS (x86_64)
- ์ธ์คํด์ค ์ ํ:
t2.micro(Free Tier ์ฌ์ฉ ๊ฐ๋ฅ) - ๋ณด์ ๊ทธ๋ฃน(
web-sg) ์ธ๋ฐ์ด๋ ๊ท์น:- HTTP (ํฌํธโฏ80) โ
0.0.0.0/0 - SSH (ํฌํธโฏ22) โ ์์ ์ IP(๋๋ ํ
์คํธ์ฉ
0.0.0.0/0)
- HTTP (ํฌํธโฏ80) โ
์ฌ์ฉ์ ๋ฐ์ดํฐ ์คํฌ๋ฆฝํธ (Apache ์ค์น)
#!/bin/bash
# ์์คํ
ํจํค์ง ์
๋ฐ์ดํธ
apt-get update -y
# Apache2 ์ค์น
apt-get install -y apache2
# ๋ถํ
์ Apache ์๋ ์์
systemctl enable apache2
systemctl start apache2
# /var/www/html ์กด์ฌ ์ฌ๋ถ ํ์ธ ๋ฐ ๊ถํ ์ค์
mkdir -p /var/www/html
chmod -R 755 /var/www/html
# ์ ํ ์ฌํญ: ๊ฐ๋จํ ํ
์คํธ ํ์ด์ง ์์ฑ
cat /var/www/html/index.html
# Apache2๊ฐ Server1์์ ์คํ ์ค
# ์ธ์คํด์ค๊ฐ ์๋์ผ๋ก Server1์ ํ๋ก๋น์ ๋๋ฉ๋๋ค.
EOF
(๋ ์ธ์คํด์ค ๋ชจ๋ ๋์ผํ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. Serverโฏ2์ฉ ๋ฉ์์ง๋ ์์ ๋กญ๊ฒ ์ปค์คํฐ๋ง์ด์งํ์ธ์.)
์ ํ๋ฆฌ์ผ์ด์ ๋ก๋ ๋ฐธ๋ฐ์(ALB) ๋ง๋ค๊ธฐ
- EC2 โ Load Balancers โ Create Load Balancer โ Application Load Balancer ์ ํ.
- ์ค์ :
- Name:
ecommerce-alb - Scheme: Internetโfacing
- IP address type: IPv4
- Listeners: HTTP (ํฌํธโฏ80)
- Availability Zones:
ecommerce-vpc์ ๋ ํผ๋ธ๋ฆญ ์๋ธ๋ท(12.0.1.0/24,12.0.3.0/24) ์ ํ - Security Group:
alb-sg(HTTP๋ฅผ0.0.0.0/0์์ ํ์ฉ)
- Name:
ํ๊น ๊ทธ๋ฃน
- Create new:
ecommerce-tg - Protocol: HTTP, Port: 80
- Health check path:
/ - ๋ Ubuntu EC2 ์ธ์คํด์ค๋ฅผ ๋ฑ๋กํ๊ณ Include as pending ์ผ๋ก ์ค์ ํฉ๋๋ค.
๊ฒํ ํ ALB๋ฅผ ์์ฑํฉ๋๋ค.
๋ก๋ ๋ฐธ๋ฐ์ ํ ์คํธ
- ALB๊ฐ ํ์ฑํ๋ ๋๊น์ง 2โ5๋ถ ์ ๋ ๊ธฐ๋ค๋ฆฝ๋๋ค.
- ์ฝ์์์ DNS ์ด๋ฆ์ ๋ณต์ฌํฉ๋๋ค(์:
ecommerce-alb-xxxxxx.us-east-2.elb.amazonaws.com). - ๋ธ๋ผ์ฐ์ ์์
http://๋ค์ ๋ถ์ฌ์ ์ฝ๋๋ค. - ์ฌ๋ฌ ๋ฒ ์๋ก ๊ณ ์นจํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ต๋๋ก ํ์๋๋ ๋ฉ์์ง๋ฅผ ํ์ธํ ์ ์์ต๋๋ค:
- โServerโฏ1 (Subnet:โฏ12.0.1.0/24)โ
- โServerโฏ2 (Subnet:โฏ12.0.3.0/24)โ
๋ ์ธ์คํด์ค ๋ชจ๋ ํ๊น ๊ทธ๋ฃน์์ Healthy ๋ก ํ์๋ฉ๋๋ค.
์น์ฌ์ดํธ ํ์ผ ๋ฐฐํฌ
-
๋ก์ปฌ ํ๋ก์ ํธ ํด๋(์:
Electro)๋ฅผ ์ค๋นํฉ๋๋ค. -
SSH ํค ๊ถํ์ ์์ ํ๊ฒ ์ค์ ํฉ๋๋ค:
chmod 400 test-ALB-demo.pem -
Serverโฏ1์ ํ์ผ ๋ณต์ฌ (ํผ๋ธ๋ฆญ IP๋ ์ธ์คํด์ค IP๋ก ๊ต์ฒด):
scp -i test-ALB-demo.pem -r Electro/* ubuntu@3.139.70.220:/tmp/ -
Serverโฏ1์์ Apache ์น ํด๋๋ก ์ด๋:
ssh -i test-ALB-demo.pem ubuntu@3.139.70.220 sudo rm -rf /var/www/html/* sudo mv /tmp/* /var/www/html/ exit -
Serverโฏ2์๋ ๋์ผํ๊ฒ ์ํ (IP๋ฅผ ํด๋น ์ธ์คํด์ค IP๋ก ๊ต์ฒด):
scp -i test-ALB-demo.pem -r Electro/* ubuntu@18.217.149.70:/tmp/ ssh -i test-ALB-demo.pem ubuntu@18.217.149.70 sudo rm -rf /var/www/html/* sudo mv /tmp/* /var/www/html/ exit
๊ฒ์ฆ
-
์ง์ ์ ๊ทผ:
http://3.139.70.220โ ์น์ฌ์ดํธ ํ์ธhttp://18.217.149.70โ ๋์ผํ ์น์ฌ์ดํธ ํ์ธ
-
ALB๋ฅผ ํตํ ์ ๊ทผ: ALB DNS ์ด๋ฆ์ ์ด๊ณ ์๋ก ๊ณ ์นจํ๋ฉด ๋ ์๋ฒ ์ค ํ๋์์ ์ฌ์ดํธ๊ฐ ์ ๊ณต๋ฉ๋๋ค.
์ ๋ฆฌ (์ ํ ์ฌํญ)
์์ ์ด ๋๋ฌ๋ค๋ฉด EC2 ์ธ์คํด์ค๋ฅผ ์ข ๋ฃํ๊ณ , ALB, ํ๊น ๊ทธ๋ฃน, ๋ณด์ ๊ทธ๋ฃน, ์๋ธ๋ท ๋ฐ VPC๋ฅผ ์ญ์ ํ์ฌ ์ง์์ ์ธ ๋น์ฉ์ด ๋ฐ์ํ์ง ์๋๋ก ํฉ๋๋ค.