๋ค์ํ AWS ์คํ ๋ฆฌ์ง ์๋น์ค ๊ตฌ์ฑํ๊ธฐ
์ค์ต๋ชฉํ๋ AWS์ ๋ค์ํ ์คํ ๋ฆฌ์ง ์๋น์ค๋ฅผ ์ง์ ๊ตฌ์ฑํด์ ์ฌ์ฉํ๊ณ , ๊ฐ ์คํ ๋ฆฌ์ง ๊ธฐ๋ฅ๊ณผ ํ์ฉ๋ฒ์ ํ์ธํด๋ณด๋ ๊ฒ์ด๋ค!
1. ์ค์ต์ ํ์ํ ๊ธฐ๋ณธ ์ธํ๋ผ ๋ฐฐํฌํ๊ธฐ
์ค์ต์ ํ์ํ ์ธํ๋ผ ์์์ AWS CloudFormation์ ์ด์ฉํ์ฌ ์๋์ผ๋ก ๋ฐฐํฌํ๋ฉด ๋๋ค! (๊ณผ๊ฑฐ ์ค์ต์์ ์งํํ์์)
AWS ๊ด๋ฆฌ ์ฝ์์์ ์๋น์ค > ๊ด๋ฆฌ ๋ฐ ๊ฑฐ๋ฒ๋์ค > CloudFormation ๋ฉ๋ด๋ก ๋ค์ด๊ฐ ํ ์คํ ์์ฑ์ ๋๋ฆ
Amazon S3 URL์ ์๋ URL์ ์ ๋ ฅํ๊ณ ๋ค์์ ๋๋ฆ
https://cloudneta-aws-book.s3.ap-northeast-2.amazonaws.com/chapter5/storagelab.yaml
์คํ ์ด๋ฆ์ storagelab ์ ๋ ฅํ๊ณ KeyName์ ์ฌ์ฉ์ ํค ํ์ด ํ์ผ ์ ํ ํ ๋ค์
์คํ ์ต์ ๊ตฌ์ฑ์ ๋ณ๋์ ์ค์ ์์ด ๋ค์์ ๋๋ฅด๊ณ
storagelab ๊ฒํ ์์๋ ๋ณ๋์ ์ค์ ์ ์์ผ๋ ๊ฐ์ฅ ์๋์ชฝ์ ์ฌ์ง์ฒ๋ผ ์ฒดํฌํ๊ณ ์ ์ก์ ๋๋ฅธ๋ค
์ด๋ ๊ฒ ํ๋ฉด ์ผ์ ์๊ฐ์ด ์ง๋ ์คํ ์ํ๊ฐ CREATE_COMPLETE๊ฐ ๋๋ฉด์ ์ธํ๋ผ ๋ฐฐํฌ๊ฐ ์ ์์ ์ผ๋ก ์๋ฃ๋๋ค!
์ด์ SSH ํฐ๋ฏธ๋์์ STG1, STG2๋ก ์ ์ํ์ฌ ๋ช ๋ น์ด๋ฅผ ํ๋์ฉ ์ ๋ ฅํด๋ณด๋ฉด์ EBS ์คํ ๋ฆฌ์ง ๊ธฐ๋ณธ ์ ๋ณด๋ฅผ ํ์ธํ๋ค
# STG1 SSH ํฐ๋ฏธ๋ ์ ์
# df(disk free) ๋์คํฌ ์ฌ์ ๊ณต๊ฐ ํ์ธ
df -hT /dev/xvda1
# lsblk ์ฌ์ฉ ๊ฐ๋ฅํ ๋์คํฌ ๋๋ฐ์ด์ค์ ๋ง์ดํธ ํฌ์ธํธ(ํด๋นํ๋ ๊ฒฝ์ฐ) ํ์ธ
lsblk
# ๋๋ฐ์ด์ค์ UUID ํ์ธ
blkid
# ๋๋ฐ์ด์ค์ ํ์ฌ ์ง์ ํ์ธ
cat /etc/fstab
2. EBS ์คํ ๋ฆฌ์ง๋ฅผ ์ถ๊ฐ๋ก ์์ฑํ ํ ์ฌ์ฉํ๊ธฐ
AWS ๊ด๋ฆฌ ์ฝ์์์ EC2 > Elasti Block Storage > ๋ณผ๋ฅจ > ๋ณผ๋ฅจ ์์ฑ์ ์ ํํ๋ค
์ค์ ํ์ด์ง๋ก ๋ค์ด๊ฐ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํด์ฃผ๊ณ ๋ณผ๋ฅจ ์์ฑ์ ๋๋ฅด๋ฉด ๋๋ค
์ด์ ์์ฑ๋ EBS ์คํ ๋ฆฌ์ง๋ฅผ EC2 ์ธ์คํด์ค์ ์ฐ๊ฒฐํด์ผ ํ๋ค!
์ถ๊ฐ๋ Data 1 ๋ณผ๋ฅจ(available ์ํ์ธ์ง ๋จผ์ ์ฒดํฌ)์ ์ฒดํฌํ ํ ์์ > ๋ณผ๋ฅจ ์ฐ๊ฒฐ์ ์ ํํ๋ค
์ธ์คํด์ค(EC2-STG1), ๋๋ฐ์ด์ค(/dev/sdf)๋ฅผ ์ ํํ์ฌ ์ค์ ํ ํ ๋ณผ๋ฅจ ์ฐ๊ฒฐ์ ์ ํ
=> Data ๋ณผ๋ฅจ์ ์ฐ๊ฒฐํ ๋, AZ 3์ ์ธ์คํด์ค(STG2)๊ฐ ๋์ค์ง ์๋ ์ด์ ๋ EBS ๋ณผ๋ฅจ์ ํด๋น AZ๋ง ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ!
๋ณผ๋ฅจ(๋์คํฌ)์ ์ถ๊ฐํ ๋๋ ์ผ๋ฐ์ ์ผ๋ก ์ธ์คํด์ค๋ฅผ ์ค์งํ ํ ์ฐ๊ฒฐํด์ผ ํ์ง๋ง ํซ์ค์(hot swap) ๊ธฐ๋ฅ์ด ์๊ธฐ ๋๋ฌธ์ ๋์(๋ผ์ด๋ธ) ์ํ์์ ์๋์ผ๋ก ์ถ๊ฐ๋ ๋ณผ๋ฅจ์ ์ธ์ํ๋ค
์ธ์คํด์ค(STG1)์ ์ถ๊ฐ๋ก ์ฐ๊ฒฐ๋ EBS ๋ณผ๋ฅจ์ ์ฌ์ฉํ๋๋ก ์ค์ ํด๋ณด์
# STG1 SSH ํฐ๋ฏธ๋ ์ ์
# ๋ผ์ด๋ธ ์ํ์์ ๋๋ฐ์ด์ค ์ถ๊ฐ ํ์ธ
lsblk
# ๋ณผ๋ฅจ์ ํฌ๋งทํ์ฌ ํ์ผ ์์คํ
์์ฑ
mkfs -t xfs /dev/xvdf
# ๋๋ ํฐ๋ฆฌ๋ฅผ ์์ฑํ ํ ๋ง์ดํธ
mkdir /data
mount /dev/xvdf /data
# ํ์ผ์ ์์ฑํ ํ ํ์ธ
echo "EBS Test" > /data/memo.txt
cat /data/memo.txt
# ๋๋ฐ์ด์ค ํ์ธ
lsblk
df -hT /dev/xvdf
# ์ฌ๋ถํ
์ดํ์๋ ๋ณผ๋ฅจ ์๋ ํ์ฌ๋ฅผ ์ํ fstab ์ค์
# ํ์ผ ์์คํ
์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์์ผ๋ฉฐ, ๋ถํ
ํ ๋ ํ์ผ ์์ ๊ตฌ์ฑ ๊ฐ์ผ๋ก ์๋ ๋ง์ดํธ๋๋๋ก ํ๋ ์ ๋ณด ํ์ธ
cat /etc/fstab
# ์ฅ์ฐฉํ ๋ณผ๋ฅจ ์ ๋ณด ํ์ธ
blkid
# fstab ์ค์ (blkid ์ฝ๋ ๊ฒฐ๊ณผ์์ ํ์ธํ ์์ ์ UUID ์
๋ ฅ => xvdf์ UUID๋ฅผ ์
๋ ฅํด์ผํจ)
echo "UUID=36d4b7ad-5f45-49ee-8cf7-7d7c2fe2f635 /data xfs defaults,nofail 0 2" >> /etc/fstab
# fstab ์ค์ ํ์ธ
cat /etc/fstab
๐์๋์ผ๋ก ๋ง์ดํธํ๋ ๋ฐฉ๋ฒ
์ถ๊ฐ ์์ฑ๋ ๋ณผ๋ฅจ์ ์ฌ๋ถํ ํ ๋ ์๋์ผ๋ก ๋ง์ดํธ๋์ง ์์ ๋งค๋ฒ ๋ง์ดํธ ์์ ์ ์ํํด์ผ ํ๋ค
๋ค๋ผ์ ์๋์ผ๋ก ๋ง์ดํธํ๋ ์์ ์ ํ์ํ ๋ ์ฌ์ฉํ๋ฉด ๋งค์ฐ ์ ์ฉ!
์๋ ๋ง์ดํธ ์ค์
์ค์ ํ์ผ : /etc/fstab
/dev/xvdb1 /data xfx defaults 0 0
๋์ด์ฐ๊ธฐ ๊ธฐ์ค ์์๋๋ก ์ฅ์น๋ช , ๋ง์ดํธ ์์น, ํ์ผ์์คํ , ์์ฑ(default๋ ์ฝ๊ธฐ, ์ฐ๊ธฐ, ์คํ ๋ฑ ์์ ๊ฐ๋ฅ),
๋คํ ์ฌ์ฉ ์ฌ๋ถ, ํ์ผ ์์คํ ์ฒดํฌ ์ฌ๋ถ๋ฅผ ๋ํ๋ธ๋ค
3. EBS ์คํ ๋ฆฌ์ง ๋ณผ๋ฅจ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ค๋ ์ท ๊ธฐ๋ฅ ํ์ธํ๊ธฐ
EBS ๋ณผ๋ฅจ ํฌ๊ธฐ ๋ณ๊ฒฝํ๊ธฐ
์๋ฒ๋ฅผ ์ด์ํ ๋ ๋ก๊ทธ ํ์ผ์ ์ ์ฅํ๋ฉด์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋๋ฐ, ์ ์ฅ ๊ณต๊ฐ ๋๋ถ๋ถ์ ๋ก๊ทธ ํ์ผ์ด ์ฐจ์งํด์ ํน์ ์๋น์ค ์ ๊ทผ์ด ์ฐจ๋จ๋์ด ์ฅ์ ๋ก ์ด์ด์ง๋ ๊ฒฝ์ฐ์ด๋ค
=> ํ์ง๋ง EBS ์คํ ๋ฆฌ์ง๋ ์๋ฒ๋ฅผ ์ด์ํ ๋ ์ ์ฅ ๊ณต๊ฐ ํฌ๊ธฐ๋ฅผ ํ๋ ฅ์ ์ผ๋ก ์กฐ์ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ์๋น์ค ์ฅ์ ์ ๋์ฒํ ์ ์๋ค
์ด๋ฒ ์ค์ต์์๋ ์ฅ์ ์กฐ์น ์ํฉ์ด ์๋ EBS๊ฐ ์ด๋ป๊ฒ ํ๋ ฅ์ ์ผ๋ก ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์๋์ง ์ ๋๋ง ์์๋ณด์
์ฐ์ , ์ธ์คํด์ค STG1์ ๋ฃจํธ ๋ณผ๋ฅจ์ ํ์ฅํ๊ณ ๋ณผ๋ฅจ ์ ํ์ ๋ณ๊ฒฝํ๋ค
AWS ๊ด๋ฆฌ ์ฝ์์์ EC2 > EBS > ๋ณผ๋ฅจ์ ์ ํํ ํ
EC2-STG1_Root_Volume์ ์ฒดํฌํ๊ณ ์์ > ๋ณผ๋ฅจ ์์ ์ ์ ํํ์ฌ ์ค์ ์ ๋ณ๊ฒฝํ๋ค
์ค์ ํ ๋์ ์ํ์์ ๋ค์ ์ค์ ์ ๋ณ๊ฒฝํ ์ ์๋๋ฐ, 3~10๋ถ ์ ๋ ์๊ฐ์ด ์์๋๋ค
์ด๋ ๊ฒ ์์ ์ ํ ์ ์๋ค
๋ณผ๋ฅจ ์ต์ ํ๋ฅผ ์์ํ๋ฉด ํ์ผ ์์คํ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์์ผ๋ฏ๋ก
ํํฐ์ ์กฐ์ -> ํ์ผ ์์คํ ์กฐ์ ์์๋ก ํ์ผ ์์คํ ์ ํ์ฅํ๋ค
# STG1 SSH ํฐ๋ฏธ๋ ์ ์
# ํ์ฌ ๋ฃจํธ
# ๋ณผ๋ฅจ ์ํ ํ์ธ
lsblk
df -hT /dev/xvda1
# growpart ๋ช
๋ น์ด๋ก ํํฐ์
ํ์ฅ(ํํฐ์
์กฐ์ )
growpart /dev/xvda 1
# ๋ณ๊ฒฝ๋ ๋ฃจํธ ๋ณผ๋ฅจ ํํฐ์
์ํ ํ์ธ
lsblk
# xfs_growfs ๋ช
๋ น์ด๋ก ๋ณผ๋ฅจ์ ํ์ผ ์์คํ
ํ์ฅ(ํ์ผ ์์คํ
์กฐ์ )
xfs_growfs -d /
# ๋ณ๊ฒฝ๋ ๋ฃจํธ ๋ณผ๋ฅจ์ ํ์ผ ์์คํ
์ํ ํ์ธ
df -hT /dev/xvda1
EBS ์ค๋ ์ท ๊ธฐ๋ฅ ํ์ธํ๊ธฐ
์์ ์ค์ต์ผ๋ก EBS ํฌ๊ธฐ๋ฅผ ํ๋ ฅ์ ์ผ๋ก ๋ณ๊ฒฝํ์ฌ ๋ฐ์ดํฐ ์ ์ฅ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์๋ค๋ ๊ฒ์ ํ์ธํ๋ค!
ํ์ง๋ง ์ง์์ ์ผ๋ก ํฌ๊ธฐ๋ฅผ ํ์ฅํ๊ธฐ๋ ์ฝ์ง ์์ผ๋ฏ๋ก ๋ฐฑ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐ ์ ์ฅํด์ผ ํ๋ค
=> ์ด๋ฐ ๋ฐฑ์ ์ EBS์์๋ ์ค๋ ์ท ๊ธฐ๋ฅ์ผ๋ก ์ ๊ณตํ๋ค
์ค์ต์ ์ํด ๊ฐ์ ํ์ผ์ 10G ํฌ๊ธฐ๋ก ๋ง๋ค์ด์ ํ ์คํธ ํ๋ค
# STG1 SSH ํฐ๋ฏธ๋ ์ ์
# ๊ฐ์ ํ์ผ ์์ฑ ํ ํ์ธ
fallocate -l 10G /home/10G.dummy
df -hT /dev/xvda1
์ด์ ์ธ์คํด์ค STG1์ ๋ฃจํธ ๋ณผ๋ฅจ์ ์ค๋ ์ท์ผ๋ก ๋ฐฑ์ ํด๋ณด์
EC2 > EBS > ๋ณผ๋ฅจ์์ EC2-STG1_Root_Volume์ ์ฒดํฌํ๊ณ ์์ > ์ค๋ ์ท ์์ฑ์ ์ฐจ๋ก๋ก ์ ํํ๋ค
์ค๋ ์ท ์์ฑ ํ์ด์ง์์ ์ค๋ช ์ FirstSnapshot์ ์ ๋ ฅํ๊ณ ์ค๋ ์ท ์์ฑ์ ๋๋ฅธ๋ค
EC2 > EBS > ์ค๋ ์ท์ ๋ค์ด๊ฐ ์งํ์ฌํญ์ ํ์ธํด๋ณธ๋ค
(์ต์ด ๋ฐฑ์ ์ ๋ณผ๋ฅจ ์ ์ฒด ๋ฐฑ์ ์ด๋ฏ๋ก ๋ค์ ์๊ฐ์ด ์์๋จ)
์ค๋ ์ท ๊ธฐ๋ฅ์ ์ฆ๋ถ ๋ฐฑ์ ํ๋ฏ๋ก ์ค์ต์ ์ํ ๊ฐ์ ํ์ผ์ ์ถ๊ฐ๋ก ์์ฑํด์ ํ์ธํด๋ณธ๋ค!
# STG1 SSH ํฐ๋ฏธ๋ ์ ์
# ๊ฐ์ ํ์ผ์ ์์ฑํ ํ ํ์ธ
fallocate -l 5G /home/5G.dummy
df -hT /dev/xvda1
AWS ๊ด๋ฆฌ ์ฝ์์์ EC2 > EBS > ๋ณผ๋ฅจ ๋ฉ๋ด๋ฅผ ์ฐจ๋ก๋ก ์ ํํ๊ณ
EC2-STG1_Root_Volume์ ์ฒดํฌํ๊ณ ์์ > ์ค๋ ์ท ์์ฑ์ ์ฐจ๋ก๋ก ์ ํํ๋ค
=> ์ค๋ ์ท ์์ฑ ํ์ด์ง์์ ์ ๊ณผ ๋์ผํ๊ฒ ์ค๋ช ์ SecondSnapshot์ ์ ๋ ฅํ ํ ์ค๋ ์ท ์์ฑ์ ๋๋ฅธ๋ค
EC2 > EBS > ์ค๋
์ท ๋ฉ๋ด์์ ์งํ ์ํฉ์ ํ์ธํ๋ค
(์ฆ๋ถ ๋ฐฑ์
์ ๋ณ๊ฒฝ๋ ๋ณผ๋ฅจ๋ง ๋ฐฑ์
ํ๋ฏ๋ก ๋น ๋ฅด๊ฒ ์งํ๋จ)
EFS ์คํ ๋ฆฌ์ง ์์ฑํ๊ณ ์ฌ์ฉํ๊ธฐ
ํ์ฌ ์ค์ต์ ๊ตฌ์ฑ์ ์ดํด๋ณด๋ฉด ๊ฐ AZ๋ณ๋ก ์ธ์คํด์ค(STG)์ ์น ์๋น์ค๊ฐ ๋์ํ๊ณ ์๋ค
๊ฐ์ฉ ์์ญ๋ณ ์ธ์คํด์ค๊ฐ ํ์ผ ๊ณต์ ์คํ ๋ฆฌ์ง๋ฅผ ์ฌ์ฉํ๋ฉด ๋์ผํ ์น ์ฝํ ์ธ ์ ์น ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ํจ๊ณผ๋ฅผ ์ป์ ์ ์๋ค
=> ์ด๋ฒ์๋ ์น ์๋น์ค์ ์ฌ์ฉ๋๋ ๋ฃจํธ ์ญํ ์ ๋๋ ํฐ๋ฆฌ๋ฅผ EFS ์คํ ๋ฆฌ์ง๋ก ๋ง์ดํธํ๊ณ ๋ค๋ฅธ AZ์์๋ ๊ฐ์ ์คํ ๋ฆฌ์ง๋ฅผ ๊ณต์ ํด ๋ณด์
AWS ๊ด๋ฆฌ ์ฝ์์ ์๋น์ค > ์คํ ๋ฆฌ์ง > EFS > ํ์ผ ์์คํ ์์ ํ์ผ ์์คํ ์์ฑ > ์ฌ์ฉ์ ์ง์ ์ ์ ํํ๋ค
๋ค์๊ณผ ๊ฐ์ด ์ค์ ํด์ฃผ๊ณ ๋๋จธ์ง๋ ๊ฑด๋๋ฆฌ์ง ์๊ณ ์์ฑ์ ๋๋ฅธ๋ค!
์ด์ ๋ค์ ํ์ผ ์์คํ ๋ฉ๋ด๋ก ๋์๊ฐ EFS ์คํ ๋ฆฌ์ง๊ฐ ์์ฑ๋์๋์ง ํ์ธํ๋ค
(ํ์ผ ์์คํ ID๋ SSH ํฐ๋ฏธ๋์์ ๋ฐ๋ก ์ฌ์ฉํ ์์ !)
์์ฑ๋ EFS ๋คํธ์ํฌ ์ธํฐํ์ด์ค๊ฐ ํ๋ ์ด์์ธ ์ด์ ๋ EFS๋ฅผ ์์ฑํ ๋ ๋ฆฌ์ ์ ์ ํํ์ฌ VPC ๋ด ๊ฐ์ฉ AZ๋ณ๋ก ๊ฐ๊ฐ ์์ฑ๋๊ธฐ ๋๋ฌธ์ด๋ค
์ธ์คํด์ค STG1์ ์์ฑ๋ EFS๋ฅผ ์ฌ์ฉํ๋๋ก ์ฐ๊ฒฐํด๋ณด์
# STG1 SSH ํฐ๋ฏธ๋ ์ ์
# ํ์ฌ ๋ฆฌ์ ๋ณ ์น ์๋ฒ ๋์ ํ์ธ (STG1)
curl localhost
# ํ์ฌ ๋ฆฌ์ ๋ณ ์น ์๋ฒ ๋์ ํ์ธ (STG2)
curl localhost
# efs ๋๋ ํฐ๋ฆฌ ์์ฑ
mkdir /var/www/html/efs
# ์์ ์ EFS ID ํ์ธ ํ ๋ง์ดํธ
EFS=fs-0458339af31a60450(์์ ์-EFS-ID) # ๋ณ์ ์ง์ , ๋ฐ๋์ ์์ ์ ํ์ผ ์์คํ
ID ํ์ธ ํ ์
๋ ฅ
mount -t efs -o tls $EFS:/ /var/www/html/efs
# EFS ๋ง์ดํธํ ๊ณณ์ ํ์ผ ์์ฑ ํ ํ์ธ
echo "<html><h1>Hello from Amazon EFS</h1></html>" > /var/www/html/efs/index.html
curl localhost/efs/
# EFS Size ํ์ธ - ์ฌ์ฉ์๋ ํ์๋ ์ฉ๋๊ณผ ์๊ด์์ด ์ค์ ์ฌ์ฉํ ์ฉ๋๋งํผ ๋น์ฉ ์ง๋ถ
df -hT |grep efs
# EFS DNS ์ฃผ์๋ฅผ ์กฐํํ ๋ ํ์๋๋ IP๋ ๊ฐ AZ์ ์ํ ์ธํฐํ์ด์ค IP ์ฃผ์ (dig +short ์์ ์-EFS-ID.efs.ap-northeast-2.amazonaws.com)
dig +short $EFS.efs.ap-northeast-2.amazonaws.com
์ด๋ฒ์๋ ์ธ์คํด์ค STG2์ ์์ฑ๋ EFS๋ฅผ ์ฌ์ฉํ๋๋ก ์ฐ๊ฒฐํด๋ณด์
# STG2 SSH ํฐ๋ฏธ๋ ์ ์
# efs ๋๋ ํฐ๋ฆฌ ์์ฑ
mkdir /var/www/html/efs
# ์์ ์ EFS ID ํ์ธ ํ ๋ง์ดํธ(mount -t efs -o tls ์์ ์-EFS-ID:/ /var/www/html/efs)
EFS=fs-0458339af31a60450(์์ ์-EFS-ID) # ๋ณ์ ์ง์ , ๋ฐ๋์ ์์ ์ ํ์ผ ์์คํ
ID ํ์ธ ํ ์
๋ ฅ
mount -t efs -o tls $EFS:/ /var/www/html/efs
# EFS ๋ง์ดํธ ํ์ธ
curl localhost/efs/
# EFS Size ํ์ธ - ์ฌ์ฉ์๋ ํ์๋ ์ฉ๋์ ์๊ด์์ด ์ค์ ์ฌ์ฉํ ์ฉ๋๋งํผ ๋น์ฉ ์ง๋ถ
df -hT |grep efs
# EFS DNS ์ฃผ์๋ฅผ ์กฐํํ ๋ ํ์๋๋ IP๋ ๊ฐ AZ์ ์ํ ์ธํฐํ์ด์ค IP ์ฃผ์(dig +short ์์ ์-EFS-ID.efs.ap-northeast-2.amazonaws.com)
dig +short $EFS.efs.ap-northeast-2.amazonaws.com
EFS ์ฃผ์๋ฅผ ์กฐํํ ๋ ๋ค๋ฅธ IP๋ก ํ์๋๋ ์ด์ ๋ 'EFS๋ AZ๋น ํ๋์ Mount Target(๋คํธ์ํฌ ์ธํฐํ์ด์ค)์ ์ฌ์ฉ'ํ๊ธฐ ๋๋ฌธ์ด๋ค
EFS๋ฅผ ์ด์ฉํ์ฌ ๊ฐ ์ธ์คํด์ค์ ํ์ผ์ ๊ณต์ ํจ
=> ๊ฐ ์ธ์คํด์ค์ SSH ํฐ๋ฏธ๋์ ๋ง๋ ๋ช ๋ น์ด๋ฅผ ์ ์ ๋ ฅํด์ผ ํ๋ค
# STG1 SSH ํฐ๋ฏธ๋ ์ ์
# ์ธ์คํด์ค STG1์์ ํ์ผ ์์ฑ
for i in {1..100}; do touch /var/www/html/efs/deleteme.$i; done;
# STG2 SSH ํฐ๋ฏธ๋ ์ ์
# ์ธ์คํด์ค STG2์์ ํ์ผ ์์ฑ
ls /var/www/html/efs
...
# ์ธ์คํด์ค STG2์์ ์์ฑ๋ ํ์ผ ์ญ์
rm -rf /var/www/html/efs/deleteme*.*
# STG1 SSH ํฐ๋ฏธ๋ ์ ์
# ์ธ์คํด์ค STG1์์ ์ญ์ ๋ ํ์ผ ํ์ธ
ls /var/www/html/efs
์ฌ๊ธฐ๊น์ง ์ธ์คํด์ค ๊ฐ ๊ณต์ ์คํ ๋ฆฌ์ง๋ฅผ ์ด์ฉํ์ฌ ๋์ผํ ํ์ผ ์ ๋ณด๋ฅผ ํ์ธํด ๋ณด์๋ค
์ด์ฒ๋ผ EFS ์คํ ๋ฆฌ์ง๋ ์ฌ๋ฌ ๊ฐ์ฉ ์์ญ์ ๊ฑธ์ณ ์คํ๋๋ ์น ์๋น์ค์ ์ ์ ๋ฐ ๋์ ์ฝํ ์ธ ๋ฅผ ๊ณต์ ํ๊ณ , ์๋ก์ด ํ์ผ์ด๋ ๋ณ๊ฒฝ๋ ์ฝํ ์ธ ๋ฅผ ์ฆ์ ๋ฐ์ํ์ฌ ์ฌ์ฉํด์ผ ํ ๋ ๋งค์ฐ ์ ์ฉํ๋ค
Public S3 ์คํ ๋ฆฌ์ง๋ก ์ธ๋ถ ์ ๊ทผ ํ์ธํ๊ธฐ
S3๋ ๊ฐ์ฒด ์คํ ๋ฆฌ์ง ์๋น์ค๋ก, ์ค์ ์ ๋ฐ๋ผ OS ์์ด ์์ฒด์ ์ธ ์น ์๋ฒ๋ก ์ฌ์ฉ๋๊ฑฐ๋ API ๋ฐฉ์์ ์ด์ฉํ ๋ฐ์ดํฐ ๋ฐฑ์ ๋ฐ ๊ณต์ ๋ฅผ ํ ์ ์๋ค
=> ์ด๋ฒ ์ค์ต์์๋ ๊ณต๊ฐ๋ S3 ์คํ ๋ฆฌ์ง๋ฅผ ๋ง๋ค๊ณ ์ธ๋ถ์์ ์ ๊ทผ์ ์ด์ฉํ ์ ์ ์น ์๋ฒ๋ก ์ฌ์ฉ๋๋ ํ๊ฒฝ์ ๋ง๋ค์ด๋ณด์
AWS ๊ด๋ฆฌ ์ฝ์์ ์๋น์ค > ์คํ ๋ฆฌ์ง > S3 > ๋ฒํท์์ ๋ฒํท ๋ง๋ค๊ธฐ๋ฅผ ๋๋ฌ ๋ฒํท์ ์์ฑํ๋ค
์ค์ ํ๋ฉด์ด ๋จ๋ฉด ์ฌ์ง๊ณผ ๊ฐ์ด ์ค์ ์ ํด์ค๋ค
(์ธ๊ธํ์ง ์์ ๋ถ๋ถ์ ๊ธฐ๋ณธ๊ฐ์ ์ ์ง)
๋ฒํท ์ด๋ฆ์ ๊ณ ์ ํด์ผ ํ๋ฉฐ, ๋ฒํท ์ด๋ฆ ์ง์ ๊ท์น์ ๋ฐ๋ผ์ผํ๋ค!
์์ฑ๋ ๋ฒํท์ ์ ํํ ํ ์ ๋ก๋ > ํ์ผ ์ถ๊ฐ๋ฅผ ๋๋ฅด๊ณ , ์์์ ํ ์คํธ์ฉ ์ด๋ฏธ์ง ํ์ผ์ ์ ํํ ํ ์ ๋ก๋๋ฅผ ๋๋ฅธ๋ค
=> ์ ๋ก๋ ๋ ํ์ผ์ ์ ํํ๋ฉด ๊ฐ์ฒด ๊ฐ์์์ ๊ฐ์ฒด URL์ ํ์ธํ ์ ์๋ค
๊ทธ๋ฐ๋ฐ ๊ฐ์ฒด URL๋ก ์น์ ์ ๊ทผํด๋ณด๋ฉด ํ์ผ ์ ๋ณด๊ฐ ํ์๋์ง ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค
=> ๋ฒํท์ ์ ๋ก๋๋ ํ์ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ๋ถ์์ ์ ๊ทผํ๋ ๊ฒ์ด ์ฐจ๋จ๋์ด ์๊ธฐ ๋๋ฌธ!
์ธ๋ถ์์ ์ ๊ทผํ ํ ์ฌ์ฉํ๋ ค๋ฉด ์ค์ ์ด ์ถ๊ฐ๋ก ํ์ํ๋ค
์ ๋ก๋๋ ํ์ผ์ ์ ํํ ํ ์์ > ACL์ ์ฌ์ฉํด ํผ๋ธ๋ฆญ์ผ๋ก ์ค์ > ํผ๋ธ๋ฆญ์ผ๋ก ์ค์ ์ ์ ํํ๊ณ ๋ค์ ํ์ธํด๋ณด๋ฉด
์ด๋ ๊ฒ ์ ์ ๊ทผ์ด ๋ฉ๋๋ค!
์ธ์คํด์ค STG1์ ์น ์ ๊ทผ์ ํ ๋ S3 ์คํ ๋ฆฌ์ง์ ์ ๋ก๋๋ ํ์ผ์ ์ฌ์ฉํ๋๋ก ์น ์๋ฒ์ index.html ํ์ผ์ ์ค์ ํด์ค์ผ ํ๋ค!
# STG1 SSH ํฐ๋ฏธ๋ ์ ์
# ์ธ์คํด์ค STG1์์ index.html ํ์ผ ์์ฑ
cat <<EOF>> /var/www/html/index.html
<html>
<body>
<h1>CloundNeta S3 Storage<br>
// ์์ ์
๋ก๋ํ ํ
์คํธ ํ์ผ ๊ฐ์ฒด ์ฃผ์ ์
๋ ฅ
<img src="https://cloudneta-jungyo.s3.ap-northeast-2.amazonaws.com/%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7+2023-10-30+162447.png">
</body>
</html>
EOF
# index.html ํ์ผ ์์ฑ ํ์ธ
cat /var/www/html/index.html
..(์๋ต)..
์ด์ ์ธ์คํด์ค STG1 ์น ์๋ฒ์ ์ ๊ทผํด์ ํ์๋๋ ์ฌ์ง์ด S3์ ์ ๋ก๋ํ ํ์ผ์์ ํ์ธํด๋ณด์!
=> ์ ๋ณด์ด๋๊ฑธ ํ์ธํ ์ ์๋ค!
์ด์ ๊ฐ์ฒด๋ง๋ค ์ถ๊ฐ ์ค์ ์์ด๋ ์ธ๋ถ์์ ์ ๊ทผํ๋ฉด ์๋์ผ๋ก ์ฌ์ฉํ ์ ์๋๋ก ์ค์ ํด๋ณด์
์์ ์์ฑํ ๋ฒํท์ ์ ํํ๊ณ ๊ถํ ํญ์ ํด๋ฆญํ๋ค.
๋ฒํท ์ ์ฑ ์์ ํธ์ง์ ๋๋ฅธ ํ ๋ฐ์ ์ ์ฑ ์ ์ถ๊ฐํ๊ณ ๋ณ๊ฒฝ ์ฌํญ ์ ์ฅ์ ์ ํํ๋ค
# S3์ ๋ณด์ ์ ์ฑ
์ ์ด์ฉํ์ฌ ์ธ๋ถ ์ ๊ทผ์ ํ์ฉํ๋ ์ค์
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::cloudneta-jungyo/*"
}
]
}
Resource ๋ถ๋ถ์์ ์์ ์ ๋ฒํท ARN ๋ค์ /* ๋ฅผ ๋ถ์ฌ ๋ฒํท๋ด์ ๋ชจ๋ ๊ฐ์ฒด์๋ ๊ถํ์ ๋ถ์ฌํด์ค๋ค
=> ์ค์ ํ ํ ์์ฑ๋ ๋ฒํท์ 'ํผ๋ธ๋ฆญ ์ก์ธ์ค ๊ฐ๋ฅ' ๋ฌธ๊ตฌ๋ฅผ ํ์ธํ๋ค
๋ฒํท ๋ฉ๋ด๋ก ๋์์์ ๋ฐ์คํธ์ฉ ์ด๋ฏธ์ง ํ์ผ์ ์๋กญ๊ฒ ์
๋ก๋ํ ํ
๊ฐ์ฒด URL์ ํด๋ฆญํด๋ณด๋ฉด ์ธ๋ถ์์ ๋ณ๋ค๋ฅธ ์ค์ ์์ด ์ ๊ทผํ ์ ์๋ค!
Private S3 ์คํ ๋ฆฌ์ง์ ์ ํ๋ ์ ๊ทผ ๋ฐ ๋ฐ์ดํฐ ๋ฐฑ์ ํ๊ธฐ
์ด๋ฒ ์ค์ต์์๋ S3 ์คํ ๋ฆฌ์ง๋ฅผ ๊ด๋ฆฌ ์ฝ์์ด ์๋ AWS CLI์์ ๋ง๋ค์ด VPC ๋ด๋ถ์์๋ง ์ ๊ทผํด์ ์ฌ์ฉํ ์ ์๋๋ก Private S3 ๋ฒํท์ ์์ฑํด๋ณด์!
์ค์ต์ ํ์ํ CLI์ S3 ์ ๊ทผ์ ๋ฐ๋ฅธ IAM ๊ถํ์ ์ค์ต ํ๊ฒฝ์ ์ฌ์ฉ๋ CloudFormation์ผ๋ก ์ด๋ฏธ ์ค์น ๋ฐ ์ ์ฉ๋์ด ์๋ค
AWS CLI๋ฅผ ์ด์ฉํ์ฌ Private S3 ๋ฒํท์ ์์ฑํ ํ ์ฌ์ฉํ ์ ์๊ฒ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํ๋ค
# STG1 SSH ํฐ๋ฏธ๋ ์ ์
# ๊ธฐ์กด S3 ์กฐํ
aws s3 ls
# S3 ๋ฒํท ์์ฑ(aws s3 mb s3://์์ ์ ๊ณ ์ ํ BUCKET_NAME) - ๋ฒํท ์์ฑ ํ S3 ์น ์ฝ์์์ ํ์ธ
aws s3 mb s3://cloudneta-jungyo-s3-private
# ๋ฒํท ์ด๋ฆ์ ๋ณ์์ ์ง์ (MyS3=๋ฒํท)
MyS3=cloudneta-jungyo-s3-private
# ํ์ผ ์์ฑ ํ S3์ ์
๋ก๋
echo "111" > /var/www/html/111.txt
aws s3 cp /var/www/html/111.txt s3://$MyS3
aws s3 ls s3://$MyS3
# ์น ๋๋ ํฐ๋ฆฌ(ํ์ ํฌํจ)๋ฅผ S3 ๋ฒํท์ ์
๋ก๋(์๋ ๋ฐฑ์
) ํ ํ์ธ
aws s3 sync --delete /var/www/html s3://$MyS3
aws s3 ls s3://$MyS3 --recursive
๋ค์ ์ฝ๋๋ฅผ ์ ๋ ฅํ์ฌ ํ์ผ์ ์ ๋ก๋ํ๊ณ ๋ฒํท์ ์กฐํํ ํ ๋ก๊ทธ๋ฅผ ํ์ธํ๋ค
(ํ์ธ ํ์๋ ctrl+c ๋ฅผ ๋๋ฌ ๋น ์ ธ๋์ด)
# STG1 SSH ํฐ๋ฏธ๋ ์ ์
# crontab ๋ด์ฉ ์ถ๊ฐ
cat <<EOF>> /etc/crontab
*/1 * * * * root aws s3 sync -delete /var/www/html s3://$MyS3
EOF
# crontab ๋ด์ฉ ํ์ธ
cat /etc/crontab
...(์๋ต)...
# ์ ์ฉ ๋ฐ ์ถ๊ฐ ํ์ผ ์์ฑ
systemctl restart crond
echo "222" > /var/www/html/222.txt
echo "333" > /var/www/html/333.txt
# ์ค์๊ฐ ๋ฒํท ์กฐํ ํ ๋ก๊ทธ ํ์ธ
while true; do aws s3 ls s3://$MyS3; date; echo "---[S3 ls]---"; sleep 3; done
tail -f /var/log/cron
์์ฑ๋ Private S3 ๋ฒํท์ ์ผ๋ฐ์ ์ผ๋ก ์ธ๋ถ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ์ง๋ง Pre-sign URL ๊ธฐ๋ฅ์ ์ด์ฉํ์ฌ ํน์ ํ ์ฌ์ฉ์์๊ฒ ์ ํ๋ ์๊ฐ ๋์ ์ธ๋ถ ์ ๊ทผ์ ํ์ฉํ ์ ์๋ค
# STG1 SSH ํฐ๋ฏธ๋ ์ ์
# ํ
์คํธ ํ์ผ ์์ฑ ํ S3์ ์
๋ก๋
echo "presigned test" > /var/www/html/presigned.txt
aws s3 cp /var/www/html/presigned.txt s3://$MyS3
# ๊ฐ์ฒด URL๋ก ์ง์ ์ ๊ทผ์ ๋ถ๊ฐํ๋ Pre-sign URL ์์ฑ
aws s3 presign s3://$MyS3/presinged.txt --expires-in 120
์์ ์ฝ๋ ๋ง์ง๋ง์ค์์ ์์ฑ๋ Pre-sign URL๋ก ์น์์ ์ ๊ทผํ ์ ์๋์ง ํ์ธํ๋ค (120์ด ์ ๋ ์์)
์ด๋ ๊ฒ 5์ฅ ์ค์ต์ด ๋๋ฌ๋ค!
์ด์ ์ค์ตํ ๋ ์์ฑํ ๋ชจ๋ ์์์ ์ญ์ ํด๋ณด์
1. ์๋น์ค > EC2 > EBS > ์ค๋ ์ท ๋ฉ๋ด๋ก ๋ค์ด๊ฐ ๋ชจ๋ ์ค๋ ์ท์ ์ฒดํฌํ ํ ์์ > ์ค๋ ์ท ์ญ์ ๋ฅผ ์ ํํ๋ค
2. EC2 > EBS > ๋ณผ๋ฅจ ๋ฉ๋ด๋ก ๋ค์ด๊ฐ๊ณ Data1 ์ ์ฒดํฌํ ํ ์์ > ๋ณผ๋ฅจ ๋ถ๋ฆฌ๋ฅผ ์ ํํ๋ค (5๋ถ ~ 10๋ถ)
=> Data1 ์ ์ฒดํฌํ ํ ์์ > ๋ณผ๋ฅจ ์ญ์ ๋ฅผ ์ ํํ๋ค
3. ์๋น์ค > EFS > ํ์ผ ์์คํ ๋ฉ๋ด๋ก ๋ค์ด๊ฐ ํ ์์ฑํ ํ์ผ ์์คํ ์ ์ ํํ๊ณ ์ญ์ ๋ฅผ ๋๋ฅธ๋ค
4. ์๋น์ค > S3 > ๋ฒํท ๋ฉ๋ด๋ก ๋ค์ด๊ฐ์ ์์ฑํ ๋ฒํท์ ์ ํํ ํ ์ค๋ฅธ์ชฝ ์์ ์๋ ๋น์ด์์์ ๋๋ฅธ๋ค
=> ๋ค์ ๋ฒํท์ ์ ํํ๊ณ ์ญ์ ๋ฅผ ๋๋ฅด๋ฉด ๋จ
5. ์๋น์ค > CloudFormation > ์คํ ๋ฉ๋ด์์ storagelab ์คํ์ ์ ํํ ํ ์ญ์ ๋ฅผ ๋๋ฅธ๋ค
๐์ด๋ ๊ฒ ํด์ 5์ฅ์ด ๋๋ฌ์ต๋๋ค๐คญ
'๐ Infra > AWS ๊ต๊ณผ์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[AWS ๊ต๊ณผ์] 6์ฅ - AWS ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋น์ค(2) (0) | 2024.01.16 |
---|---|
[AWS ๊ต๊ณผ์] 6์ฅ - AWS ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋น์ค(1) (1) | 2024.01.15 |
[AWS ๊ต๊ณผ์] 5์ฅ - AWS ์คํ ๋ฆฌ์ง ์๋น์ค(1) (3) | 2024.01.13 |
[AWS ๊ต๊ณผ์] 4์ฅ - AWS ๋ถํ๋ถ์ฐ ์๋น์ค(3) (1) | 2024.01.12 |
[AWS ๊ต๊ณผ์] 4์ฅ - AWS ๋ถํ๋ถ์ฐ ์๋น์ค(2) (4) | 2024.01.12 |