๐ Linux ๋คํธ์ํฌ ์ฐ๊ฒฐ ์ถ์ ๋ฌธ์ ํด๊ฒฐ ๋ง์คํฐ ์ฒญ์ฌ์ง
๐ก ์ํฉ ํด๋
- ํ์ฌ ์ํ: ์ปดํจํฐ๊ฐ "๋๊ฐ ๋๊ตฌ์ ์ฐ๊ฒฐ๋์ด ์๋์ง" ๊ธฐ๋กํ๋ ๋ฉ๋ชจ์ฅ์ด ๊ฐ๋ ์ฐจ์ ์๋ก์ด ์ธํฐ๋ท ์ฐ๊ฒฐ์ ๋ฐ์ ์ ์๋ ์ํฉ์ด์์ผ๋, ๋ฉ๋ชจ์ฅ ํฌ๊ธฐ๋ฅผ 4๋ฐฐ๋ก ๋๋ ค์ ํด๊ฒฐ ์๋ฃ
- ํต์ฌ ์์ :
- ๋์์ธ์ฌ์ด๋ ํธ๋ํฝ ๊ธ์ฆ์ผ๋ก ๋์ ์ฐ๊ฒฐ ์ ํญ์ฆ
- ๊ธฐ๋ณธ ์ค์ (262,144๊ฐ)์ด ํ์ค์ ์ธ ์๋ฒ ๋ถํ์ ๋ถ์กฑ
- ์ผ์์ ๋ฌธ์ ๊ฐ ์๋ ๊ตฌ์กฐ์ ์ฉ๋ ๋ถ์กฑ ๋ฌธ์
- ์์ vs ํ์ค:
- ์์: ๊ฐ์ธ ์๋ฒ๋ผ์ ์ฐ๊ฒฐ ์๊ฐ ๋ง์ง ์์ ๊ฒ
- ํ์ค: SNS ์ ์ ๋ง์ผ๋ก๋ ์์ญ๋ง ์ฐ๊ฒฐ์ด ๋์ ๋ฐ์ ๊ฐ๋ฅ
- ์ํฅ ๋ฒ์: ์น์ฌ์ดํธ ์ ์ ๋ถ๊ฐ โ ์ฌ์ฉ์ ์ดํ โ ์๋น์ค ์ ๋ขฐ๋ ํ๋ฝ์ ์ฐ์ ๋ฐ์
๐ ์์ธ ํฌ์
- ๊ทผ๋ณธ ์์ธ: Linux ์ปค๋์ด ๋คํธ์ํฌ ๋ณด์์ ์ํด ๋ชจ๋ ์ฐ๊ฒฐ์ ์ถ์ ํ๋๋ฐ, ๊ทธ ์ถ์ ํ ์ด๋ธ์ ๊ธฐ๋ณธ ํฌ๊ธฐ๊ฐ ํ๋์ ์น ์๋น์ค์๋ ํฑ์์ด ๋ถ์กฑํจ
- ์ฐ๊ฒฐ ๊ณ ๋ฆฌ: ์ฌ์ฉ์ ์ฆ๊ฐ โ ๋์ ์ฐ๊ฒฐ ์ฆ๊ฐ โ ์ถ์ ํ ์ด๋ธ ํฌํ โ ์ ์ฐ๊ฒฐ ๊ฑฐ๋ถ โ ์๋น์ค ๋ง๋น
- ์ผ์ ๋น์ :
- ์นดํ ์ข์ํ: 30์ ์นดํ์ 100๋ช ์ด ๋ชฐ๋ฆฌ๋ฉด ์ข์ํ๊ฐ ๊ฐ๋ ์ฐจ์ ์ ๊ท ์๋์ ๋ฐ์ ์ ์์
- ์ฃผ์ฐจ์ฅ ๊ด๋ฆฌ์: 100๋ ์ฃผ์ฐจ์ฅ์ 200๋๊ฐ ๋ค์ด์ค๋ ค ํ๋ฉด ๊ด๋ฆฌ ์์คํ ์ด ๋ง๋น๋จ
- ์ ํ ๊ตํ๋: ์๋ ์๋ ๊ตํ๋์์ ์ ์ด ๋ถ์กฑํ๋ฉด ํตํ ์ฐ๊ฒฐ ๋ถ๊ฐ
- ์จ๊ฒจ์ง ์์:
- Docker, Kubernetes ํ๊ฒฝ์์๋ ๋ด๋ถ ํต์ ๋ง์ผ๋ก๋ ์ฐ๊ฒฐ ์๊ฐ ๊ธฐํ๊ธ์์ ์ฆ๊ฐ
- ๊ฐ HTTP ์์ฒญ๋ง๋ค ์ฌ๋ฌ ๊ฐ์ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ์์ฑ๋จ (DB, API, ์บ์ ๋ฑ)
๐ ๏ธ ํด๊ฒฐ ์ค๊ณ๋
- ์ฆ์ ๋์: ์์ ์ฉ๋ ์ฆ์ค
- ํต์ฌ ํ๋: ํ์ฌ ์คํ ์ค์ธ ์์คํ ์ ์ฐ๊ฒฐ ์ถ์ ํ๊ณ๋ฅผ 4๋ฐฐ๋ก ํ์ฅ
- ์คํ ๊ฐ์ด๋:
sudo sysctl -w net.netfilter.nf_conntrack_max=1048576 sudo sysctl -w net.netfilter.nf_conntrack_buckets=262144
- ์ฑ๊ณต ์งํ:ย
sysctl net.netfilter.nf_conntrack_max
ย ์คํ ์ 1048576์ด ์ถ๋ ฅ๋จ - ์์/์ฝ๋:
// ๋ณ๊ฒฝ ์ nf_conntrack_max = 262144 (๊ธฐ๋ณธ๊ฐ) // ๋ณ๊ฒฝ ํ nf_conntrack_max = 1048576 (4๋ฐฐ ์ฆ๊ฐ) // ํต์ฌ ๋ณํ ์ค๋ช ๋์ ์ถ์ ๊ฐ๋ฅํ ๋คํธ์ํฌ ์ฐ๊ฒฐ ์๊ฐ 26๋ง๊ฐ์์ 104๋ง๊ฐ๋ก ์ฆ๊ฐ
- ์ฃผ์์ฌํญ: ์ฌ๋ถํ ํ๋ฉด ์๋๋๋ก ๋์๊ฐ๋ฏ๋ก ์์ ์กฐ์น์ผ ๋ฟ
- ์๊ตฌ ๋ณด์ฅ: ์์คํ ์ค์ ๊ณ ์
- ํต์ฌ ํ๋: ์์คํ ์ด ์ฌ์์๋์ด๋ ์ค์ ์ด ์ ์ง๋๋๋ก ์ค์ ํ์ผ์ ๊ธฐ๋ก
- ์คํ ๊ฐ์ด๋:
sudo nano /etc/sysctl.d/99-conntrack.conf # ํ์ผ์ ๋ค์ ๋ด์ฉ ์ ๋ ฅ: net.netfilter.nf_conntrack_max = 1048576 net.netfilter.nf_conntrack_buckets = 262144 sudo sysctl -p /etc/sysctl.d/99-conntrack.conf
- ์ฑ๊ณต ์งํ: ์ฌ๋ถํ ํ์๋ ์ค์ ๊ฐ์ด ์ ์ง๋จ
- ์ฃผ์์ฌํญ: ๋ชจ๋ ๋ก๋ฉ ์์ ๋ฌธ์ ๋ก ๊ฐ๋ ์ค์ ์ด ๋ฌด์๋ ์ ์์
- ์์ ์์ ํ: ๋ชจ๋ ๋ก๋ฉ ์์ ์ ์ด
- ํต์ฌ ํ๋: ์์คํ ๋ถํ ์ netfilter ๋ชจ๋์ ๋จผ์ ๋ก๋ํ๋๋ก ์ค์
- ์คํ ๊ฐ์ด๋:
echo "nf_conntrack" | sudo tee -a /etc/modules
- ์ฑ๊ณต ์งํ: ์ฌ๋ถํ ํ ๋ชจ๋ ์ค์ ์ด ์๋ฒฝํ๊ฒ ์ ์ฉ๋จ
- ์ฃผ์์ฌํญ: ์ด ๋จ๊ณ๊น์ง ํด์ผ 100% ์์ ํจ
๐ง ํต์ฌ ๊ฐ๋ ํด๋ถ
- Connection Tracking: ๋คํธ์ํฌ ์ฐ๊ฒฐ ๊ฐ์์
- 5์ด์๊ฒ ์ค๋ช ํ๋ค๋ฉด: ์ธํฐ๋ท์ผ๋ก ๋ค์ด์ค๊ณ ๋๊ฐ๋ ๋ชจ๋ ๋ํ๋ฅผ ๊ธฐ๋กํ๋ ๋น์
- ์ค์ํ ์์: ์ํํธ ๊ฒฝ๋น์ค์์ ์ถ์ ์ ๋ช ๋จ์ ์์ฑํ๋ ๊ฒ๊ณผ ๋์ผ
- ์จ๊ฒจ์ง ์ค์์ฑ: ํดํน ๋ฐฉ์ง, ๋ฐฉํ๋ฒฝ ๋์, NAT ๊ธฐ๋ฅ์ ํต์ฌ ๊ธฐ๋ฐ
- ์คํด์ ์ง์ค:
- ์คํด: "๋จ์ํ ๋ก๊ทธ ๊ธฐ๋ฅ"
- ์ง์ค: "๋ชจ๋ ๋คํธ์ํฌ ๋ณด์์ ๊ธฐ์ด ์ธํ๋ผ"
- ํ ์ด๋ธ ํฌํ: ๊ธฐ๋ก ๊ณต๊ฐ ๋ถ์กฑ ํ์
- 5์ด์๊ฒ ์ค๋ช ํ๋ค๋ฉด: ์ผ๊ธฐ์ฅ์ด ๊ฐ๋ ์ฐจ์ ์๋ก์ด ์ผ์ ์ ์ ์ ์๋ ์ํ
- ์ค์ํ ์์: ์ฃผ์ฐจ์ฅ์ด ๋ง์ฐจ๋์ด ์ ์ฐจ๊ฐ ๋ค์ด์ฌ ์ ์๋ ์ํฉ
- ์จ๊ฒจ์ง ์ค์์ฑ: ์ ์ฒด ์์คํ ๋ง๋น๋ก ์ด์ด์ง ์ ์๋ ์น๋ช ์ ๋ณ๋ชฉ์
- ์คํด์ ์ง์ค:
- ์คํด: "๋ฉ๋ชจ๋ฆฌ๋ CPU ๋ฌธ์ "
- ์ง์ค: "์ปค๋ ๋ ๋ฒจ ํ ์ด๋ธ ํฌ๊ธฐ ์ ํ ๋ฌธ์ "
- Netfilter: Linux ๋คํธ์ํฌ ๊ด๋ฌธ ์์คํ
- 5์ด์๊ฒ ์ค๋ช ํ๋ค๋ฉด: ์ง ํ๊ด๋ฌธ์์ ๋๊ฐ ๋ค์ด์ค๊ณ ๋๊ฐ๋์ง ํ์ธํ๋ ๊ฒฝ๋น ์์คํ
- ์ค์ํ ์์: ๊ณตํญ ์ถ์ ๊ตญ ๊ด๋ฆฌ์์ ์ฌ๊ถ ๊ฒ์ฌ ์์คํ
- ์จ๊ฒจ์ง ์ค์์ฑ: iptables, Docker ๋คํธ์ํน, ํด๋ผ์ฐ๋ ๋ณด์์ ํต์ฌ ์์ง
- ์คํด์ ์ง์ค:
- ์คํด: "๊ณ ๊ธ ์ฌ์ฉ์๋ง ์ ๊ฒฝ์ธ ๊ธฐ๋ฅ"
- ์ง์ค: "๋ชจ๋ Linux ์๋ฒ์ ํ์ ๊ธฐ๋ฐ ๊ตฌ์กฐ"
๐ฎ ๋ฏธ๋ ์ ๋ต ๋ฐ ์งํ
- ์๋ฐฉ ์ ๋ต:
- ์ฉ๋ ๋ชจ๋ํฐ๋ง: Netdata๋ก connection tracking ์ฌ์ฉ๋ฅ ์ ์์ ๊ฐ์
- ํธ๋ํฝ ํจํด ๋ถ์: ์ฃผ๊ธฐ์ ์ผ๋ก nginx ๋ก๊ทธ๋ฅผ ๋ถ์ํด ๊ธ์ฆ ํจํด ํ์
- ๋จ๊ณ๋ณ ํ์ฅ ๊ณํ: 50%, 70%, 90% ์๊ณ์ ๋ณ๋ก ์๋ ํ์ฅ ์คํฌ๋ฆฝํธ ์ค๋น
- ์ฅ๊ธฐ์ ๊ณ ๋ ค์ฌํญ:
- ์๋น์ค ์ฑ์ฅ์ ๋ฐ๋ฅธ ์ธํ๋ผ ์ค์ผ์ผ๋ง์ ์ฌํ ๋์์ด ์๋ ์ฌ์ ๊ณํ์ด ํต์ฌ
- ํ๋์ ๋ณ๋ชฉ์ ํด๊ฒฐ์ด ๋ค๋ฅธ ๋ณ๋ชฉ์ (๋ฉ๋ชจ๋ฆฌ, CPU)์ ๋๋ฌ๋ผ ์ ์์
- ํด๋ผ์ฐ๋ ํ๊ฒฝ์์๋ ๋ก๋๋ฐธ๋ฐ์์ ์คํ ์ค์ผ์ผ๋ง์ผ๋ก ๊ทผ๋ณธ ํด๊ฒฐ ๊ฐ๋ฅ
- ์ ๋ฌธ๊ฐ ์ฌ๊ณ ๋ฐฉ์:
- ๋ฌธ์ ๋ฐ์ โ ์์ธ ๋ถ์ โ ์์ ํด๊ฒฐ โ ๊ทผ๋ณธ ํด๊ฒฐ โ ์๋ฐฉ ์ฒด๊ณ ๊ตฌ์ถ์ 5๋จ๊ณ ์ ๊ทผ
- ๋จ์ผ ์งํ๊ฐ ์๋ ์ ์ฒด ์์คํ ๊ด์ ์์ ๋ณ๋ชฉ์ ํ์
- ๋น์ฉ-ํจ๊ณผ ๋ถ์์ ํตํ ์ต์ ํด๊ฒฐ์ฑ ์ ํ
- ํ์ต ๋ก๋๋งต:
- ์ด๊ธ: Linux ๋คํธ์ํน ๊ธฐ์ด, iptables ๊ธฐ๋ณธ ๋ช ๋ น์ด
- ์ค๊ธ: Docker ๋คํธ์ํน, Kubernetes ์๋น์ค ๋ฉ์
- ๊ณ ๊ธ: ๋คํธ์ํฌ ์ฑ๋ฅ ํ๋, ๊ณ ๊ฐ์ฉ์ฑ ์ํคํ ์ฒ ์ค๊ณ
๐ ์ค์ ์ ์ฉ ์ฒญ์ฌ์ง
- ์ฆ์ ์ ์ฉ:
- ํ์ฌ ์๋ฒ์ ๋ชจ๋ํฐ๋ง ๋์๋ณด๋ ์ค์ (Netdata์ netfilter ์ฐจํธ ํ์ธ)
- ํธ๋ํฝ ๊ธ์ฆ ์ ์๋ฆผ ์ค์ (90% ์๊ณ์ ์์ ์๋ฆผ)
- ๋ค๋ฅธ ์๋ฒ๊ฐ ์๋ค๋ฉด ๋์ผํ ์ค์ ์ ์ฉ
- ์ค๊ธฐ ํ๋ก์ ํธ:
- nginx ๋ก๊ทธ ๋ถ์ ์๋ํ ์คํฌ๋ฆฝํธ ์์ฑ (1-2์ฃผ)
- ํธ๋ํฝ ํจํด๋ณ ๋์ ๋งค๋ด์ผ ์์ฑ (2-3์ฃผ)
- ํด๋ผ์ฐ๋ ๋ง์ด๊ทธ๋ ์ด์ ๋๋ CDN ๋์ ๊ฒํ (1๊ฐ์)
- ์๋ จ๋ ์ ๊ฒ:
- ์๋ก์ด ์๋ฒ์์ ๋์ผํ ๋ฌธ์ ๋ฅผ ์ค์ค๋ก ํด๊ฒฐํ ์ ์๋๊ฐ?
- connection tracking ์ธ์ ๋ค๋ฅธ Linux ๋คํธ์ํฌ ๋ณ๋ชฉ์ ์ ์ค๋ช ํ ์ ์๋๊ฐ?
- ์๋น์ค ๊ท๋ชจ๋ณ๋ก ์ ์ ์ค์ ๊ฐ์ ๊ณ์ฐํ ์ ์๋๊ฐ?
- ์ถ๊ฐ ๋ฆฌ์์ค:
- ์ด๊ธ: "Linux ์์คํ ๊ด๋ฆฌ์๋ฅผ ์ํ ๋คํธ์ํฌ ๊ฐ์ด๋"
- ์ค๊ธ: Red Hat ๊ณต์ ๋คํธ์ํฌ ํ๋ ๊ฐ์ด๋
- ๊ณ ๊ธ: Kernel.org netfilter ๊ฐ๋ฐ์ ๋ฌธ์
๐ ์ง์ ์์ถ ์์ฝ
Linux ์๋ฒ์ ๋คํธ์ํฌ ์ฐ๊ฒฐ ์ถ์ ํ ์ด๋ธ์ ํ๋์ ์น ์๋น์ค์๋ ํฑ์์ด ์์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ๋์ด ์์ด, ํธ๋ํฝ ๊ธ์ฆ ์ ์ ์ฒด ์๋น์ค ๋ง๋น๋ฅผ ์ผ์ผํฌ ์ ์๋ ์จ๊ฒจ์ง ๋ณ๋ชฉ์ ์ด๋ค.ย ์ด ๋ฌธ์ ๋ ๊ฐ๋จํ ์ค์ ๋ณ๊ฒฝ์ผ๋ก ํด๊ฒฐ๋์ง๋ง, ์๊ตฌ์ ํด๊ฒฐ์ ์ํด์๋ ์์คํ ์ค์ ํ์ผ ์์ ๊ณผ ๋ชจ๋ ๋ก๋ฉ ์์ ์ ์ด๊น์ง ํ์ํ๋ค.ย ์ง์ ํ ํด๊ฒฐ์ฑ ์ ์ฌ์ ๋ชจ๋ํฐ๋ง๊ณผ ์ฉ๋ ๊ณํ์ ํตํด ๋ฌธ์ ๋ฐ์ ์์ฒด๋ฅผ ์๋ฐฉํ๋ ๊ฒ์ด๋ฉฐ, ์ด๋ ์๋น์ค ์ ๋ขฐ์ฑ์ ํต์ฌ ์์๋ค.ย ๋ฐ์ดํฐ์์ง๋์ด๋ก์ ์ด๋ฐ ์ธํ๋ผ ๋ฌธ์ ๋ฅผ ์ดํดํ๊ณ ํด๊ฒฐํ ์ ์๋ ๋ฅ๋ ฅ์ ์์คํ ์ ์ฒด๋ฅผ ๋ฐ๋ผ๋ณด๋ ๊ด์ ์ ๊ธฐ๋ฅด๋ ๋ฐ ๋งค์ฐ ์ค์ํ๋ค.
ย
ย
๋๊ธ
๋๊ธ ๋ก๋ฉ ์ค...