๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐ•์˜ ์ •๋ฆฌ/CLASS101 ๋ฐฑ์—”๋“œ ์‹œ์Šคํ…œ ์‹ค๋ฌด

Chapter3 - CPU Bound ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ(Nginx ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ)

by ์ฃผ๋ฐœ2 2021. 2. 27.
๋ฐ˜์‘ํ˜•

 ์•ˆ๋…•ํ•˜์„ธ์š”~ ์ด์ „์— ์šด์˜ํ•˜๋˜ ๋ธ”๋กœ๊ทธ ๋ฐ GitHub, ๊ณต๋ถ€ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๋Š” Study-GitHub ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค!

 ๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ

 GitHub

 Study-GitHub

 ๐Ÿ”


โœ” CLASS101 ๋ฐฑ์—”๋“œ ์‹œ์Šคํ…œ ์‹ค๋ฌด - Chapter3 CPU Bound ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ

์•ˆ๋…•ํ•˜์„ธ์š”, ํด๋ž˜์Šค101 ๋ฐฑ์—”๋“œ ์‹œ์Šคํ…œ ์‹ค๋ฌด ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ , ๋ณต์Šต ์ฐจ์›์œผ๋กœ ์ •๋ฆฌํ•˜์—ฌ ๋‚จ๊ธฐ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค!

ํ˜น์‹œ ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค๋ฉด ๊ธ€์„ ์‚ญ์ œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค !!

 

class101.net/products/5fc4a3b4fc231b000d85661b

 

ํ˜„์ง ๋Œ€๊ธฐ์—… ๊ฐœ๋ฐœ์ž ํ‘ธ์™€ ํ•จ๊ป˜ํ•˜๋Š” ์ง„์งœ ๋ฐฑ์—”๋“œ ์‹œ์Šคํ…œ ์‹ค๋ฌด!

IT ๋Œ€๊ธฐ์—…๋“ค์˜ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ๊ณต๊ณ ๋ฅผ ๋ณธ ์  ์žˆ๋‚˜์š”? ๐Ÿ“์œ„ ๋ฐ‘์ค„ ์นœ ๋ถ€๋ถ„์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋„๋ก ์ปค๋ฆฌํ˜๋Ÿผ์„ ๊ตฌ์„ฑํ–ˆ์–ด์š”. ๊ฒ‰๋ณด๊ธฐ์—” ์–ด๋ ค์›Œ ๋ณด์ด์ง€๋งŒ, ๊ฒฐ๊ตญ ๋ฐฐ์šฐ๊ณ  ๋‚˜๋ฉด ๋‚˜๋„ ์ €๋Ÿฐ ๊ณณ์—์„œ ์ผํ•  ์ˆ˜ ์žˆ

class101.net


 

โœ” ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ํ™˜๊ฒฝ ์ดํ•ดํ•˜๊ธฐ

    • ๋ฌด์ค‘๋‹จ + ๋ฐฐํฌ = ๋ฐฐํฌ๋ฅผ ์ค‘๋‹จ์—†์ด ์ง„ํ–‰ํ•œ๋‹ค๋Š” ์˜๋ฏธ

    • ๋ฐฐํฌ(Deploy)๋ž€, ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœ๋œ ์ฝ”๋“œ๋ฅผ ํŒจํ‚ค์ง•ํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ

 

class101.net/products/5fc4a3b4fc231b000d85661b

๊ตฌ ๋ฒ„์ „(v1)์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ข…๋ฃŒํ•˜๊ณ , ์ƒˆ๋กœ์šด ๋ฒ„์ „(v2)์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›์„ ์ค€๋น„๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ์„œ๋น„์Šค๊ฐ€ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ, ์„œ๋น„์Šค๊ฐ€ ์ค‘๋‹จ๋˜๋Š” ์‹œ๊ฐ„์„ ๋‹ค์šดํƒ€์ž„(downtime) ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

๐ŸŽ— ์ƒˆ๋กœ์šด ๋ฒ„์ „(v2)๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๊ตฌ ๋ฒ„์ „(v1)์„ ๋‚ด๋ ค์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?

    • v1๊ณผ v2๊ฐ€ ๋™์ผํ•œ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

        • ํ•œ ์„œ๋ฒ„์—์„œ ํ•œ ํฌํŠธ๋ฅผ ๋™์‹œ์— ์„œ๋กœ ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

๐ŸŽ— ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, ๋‹จ์ˆœํžˆ ์„œ๋ฒ„๋งŒ ๋‘ ๋Œ€๋กœ ๋Š˜๋ฆฐ๋‹ค๋ฉด ํ•ด๊ฒฐ์ด ๋ ๊นŒ์š”?

    • ์‚ฌ์šฉ์ž(ํด๋ผ์ด์–ธํŠธ)๋Š” ๋‘ ์„œ๋ฒ„์˜ IP ํ˜น์€ DNS ์ฃผ์†Œ๋ฅผ ์•Œ์•„์•ผ ํ•œ๋‹ค๋Š” ๋ฌธ์ œ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

    • ๋˜ํ•œ ์–ด๋– ํ•œ ์„œ๋ฒ„๊ฐ€ ๋ฐฐํฌ๋˜๋Š”์ง€ ์•Œ ๋ฐฉ๋ฒ•๋„ ์—†์Šต๋‹ˆ๋‹ค.

 

๐ŸŽ— ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์™€ ์‚ฌ์šฉ์ž ์‚ฌ์ด์— ์ค‘๊ณ„(Proxy)ํ•ด ์ค„ ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์™€ ์‚ฌ์šฉ์ž ์‚ฌ์ด์—์„œ ์š”์ฒญ์„ ์ค‘๊ณ„ํ•ด์ฃผ๋Š” ์„œ๋ฒ„๋ฅผ '๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ(Reverse Proxy)' ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

    • ํ”„๋ก์‹œ๋Š”, ๋Œ€๋ฆฌ์ž์˜ ๋œป์œผ๋กœ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ˆจ๊ฒจ์ฃผ๋Š” ์—ญํ• (์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์‹๋ณ„์ด ๋ถˆ๊ฐ€๋Šฅ)

    • ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋Š” ํ”„๋ก์‹œ์™€ ๋ฐ˜๋Œ€๋กœ ์„œ๋ฒ„๋ฅผ ์ˆจ๊ฒจ์ฃผ๋Š” ์—ญํ• (ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ ์‹๋ณ„์ด ๋ถˆ๊ฐ€๋Šฅ)

 

 

 

class101.net/products/5fc4a3b4fc231b000d85661b

๐ŸŽ— ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋กœ ์„œ๋ฒ„๋ฅผ ์ˆจ๊ธฐ๋‹ค๋ณด๋‹ˆ, ํŠธ๋ž˜ํ”ฝ๋„ ๋ถ„์‚ฐ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

    • ํ•˜๋‚˜์˜ ์„œ๋ฒ„์—์„œ ๋ฐ›์•„์•ผ ํ•  ํŠธ๋ž˜ํ”ฝ์„ ์—ฌ๋Ÿฌ ์„œ๋ฒ„๋กœ ๋ถ„์‚ฐ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

        • ์ด๋ฅผ ๋ถ€ํ•˜ ๋ถ„์‚ฐ(๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ) ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

        • ์ด๋Ÿฌํ•œ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ์™€ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ์œ„ํ•ด ํ˜„์žฌ ๊ฐ€์žฅ ์ธ๊ธฐ์žˆ๋Š” ์›น์„œ๋ฒ„๊ฐ€ "Nginx(์—”์ง„์—‘์Šค)" ์ž…๋‹ˆ๋‹ค.

 

 

๐ŸŽ— Nginx ๋งŒ์œผ๋กœ ํŠธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ๊ฐ€ ๋ชจ๋‘ ๊ฐ€๋Šฅํ• ๊นŒ์š”?

    • Nginx๋„ ์„œ๋ฒ„ ์ž์›์„ ์‚ฌ์šฉํ•ด์„œ ๋™์ž‘ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๊ธฐ์— ํŠธ๋ž˜ํ”ฝ์„ ๋ฌดํ•œ์ • ๋ฐ›์•„๋‚ผ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

    • ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

        • Nginx๊ฐ€ ์‹คํ–‰๋˜๋Š” ์„œ๋ฒ„์˜ Scale-Up ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

        • ๋„คํŠธ์›Œํฌ ์žฅ์น˜(ํ•˜๋“œ์›จ์–ด ์„ฑ๋Šฅ ↑)๋กœ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ(L4, L7 ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ)

        • DNS ๋ฆฌ๋‹ค์ด๋ ‰์…˜

 

๐ŸŽ— ์ฒดํฌํ•  ์‚ฌํ•ญ

    • ๋ฐฐํฌ ์„ฑ๊ณต ์—ฌ๋ถ€ ์ฒดํฌ

        • ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ ์ž์ฒด์— ํฌํ•จ๋  ์ˆ˜ ์žˆ์œผ๋‚˜, ์ƒˆ๋กœ ๋ฐฐํฌ๋œ ์„œ๋น„์Šค์˜ ํŠน์ • API ์š”์ฒญ์„ ํ–ˆ์„๋•Œ, ์˜ฌ๋ฐ”๋ฅธ ์š”์ฒญ์ด ๋„์ฐฉํ•˜

          ๋Š”์ง€ ์ฒดํฌ(Health Check)

        • ๋กค๋ฐฑ์„ ์ˆ˜๋™์œผ๋กœ ํ• ์ง€, ์ž๋™์œผ๋กœ ํ• ์ง€์˜ ์—ฌ๋ถ€


 

โœ” Nginx๋ฅผ ํ†ตํ•œ ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ ๊ตฌ์„ฑ

    • ๋ฌด์ค‘๋‹จ + ๋ฐฐํฌ = ๋ฐฐํฌ๋ฅผ ์ค‘๋‹จ์—†์ด ์ง„ํ–‰ํ•œ๋‹ค๋Š” ์˜๋ฏธ

    • ๋ฐฐํฌ(Deploy)๋ž€, ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœ๋œ ์ฝ”๋“œ๋ฅผ ํŒจํ‚ค์ง•ํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ

class101.net/products/5fc4a3b4fc231b000d85661b

 

 

 

 

๐ŸŽ— GCP ์ธ์Šคํ„ด์Šค ๋ณต์ œ(๋จธ์‹  ์ด๋ฏธ์ง€) - ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ธ์Šคํ„ด์Šค๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์ƒ์„ฑ

GCP์—์„œ ๋จธ์‹  ์ด๋ฏธ์ง€ > ๋จธ์‹  ์ด๋ฏธ์ง€ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

 

 

 

์ด๋ฆ„, ์†Œ์Šค VM ์ธ์Šคํ„ด์Šค๋ฅผ ์ˆ˜์ •ํ•œ ํ›„ CREATE๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.

 

 

 

์ž‘์—…์˜ ์  > ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

 

 

 

์ด๋ฆ„๋งŒ ์ˆ˜์ •ํ•˜๊ณ , ๋‚˜๋จธ์ง€๋Š” ๊ธฐ์กด์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณต์ œํ–ˆ์œผ๋ฏ€๋กœ ๋™์ผํ•œ ์„ค์ •์„ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์œ„์™€ ๊ฐ™์ด ์ˆ˜์ •ํ•œ ํ›„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

 

 

 

์œ„์™€ ๊ฐ™์ด ๋™์ผํ•˜๊ฒŒ cpu์˜ ์ธ์Šคํ„ด์Šค๋ฅผ 3๊นŒ์ง€ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.

 

 

 

Jenkins์—์„œ ๊ด€๋ฆฌ > ์‹œ์Šคํ…œ ์„ค์ •์œผ๋กœ ๋“ค์–ด๊ฐ€์„œ ์œ„์™€ ๊ฐ™์ด SSH Server์„ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค.

     Hostname์€ GCP์—์„œ ๋‚ด๋ถ€ IP๋ฅผ ์ ์–ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

 

 

 

Jenkins์—์„œ GCP์˜ ์ธ์Šคํ„ด์Šค 1,2,3 ์„ ๋ชจ๋‘ ๋ฐฐํฌํ•ด์•ผ ํ•˜๊ธฐ์— ํ”„๋กœ์ ํŠธ Name์„ ์œ„์™€๊ฐ™์ด ์ผ๋ถ€ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

๊ทธ ํ›„ ํ”„๋กœ์ ํŠธ์—์„œ ๊ตฌ์„ฑ์„ ํด๋ฆญํ•œ ๋’ค, ์œ„์™€ ๊ฐ™์ด GCP ์ธ์Šคํ„ด์Šค 2, 3๋ฒˆ์— ๋Œ€ํ•œ SSH Server๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ธฐ์กด์— /dev/null ๋ฒ„๋ ธ๋˜ ๋กœ๊ทธ๋ฅผ, ์ด๋ฒˆ์—๋Š” ๋‚จ๊ฒจ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

Exec command ๋ช…๋ น์–ด๋ฅผ ๋‹ค์Œ์ฒ˜๋Ÿผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

nohup docker run -p 8080:80 docker๊ณ„์ •/docker repo์ด๋ฆ„ > nohup.out 2>&1 &

ex) nohup docker run -p 8080:80 juhyun419/spring-boot-cpu-bound > nohup.out 2>&1 &

 

์œ„์™€๊ฐ™์ด ์ˆ˜์ •ํ•œ ํ›„ ์ €์žฅ์„ ํ•˜๊ณ  ๋ฐฐํฌ(Build Now)๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

๋ฐฐํฌ๋ฅผ ํ•œ ๋’ค ๋กœ๊ทธ๋ฅผ ๋ณด๋ฉด ๋”ฑํžˆ ์˜ค๋ฅ˜๊ฐ€ ์—†๋Š”๋ฐ, GCP ์ธ์Šคํ„ด์Šค์˜ SSH์—์„œ nohup.out ํŒŒ์ผ์„ ํ™•์ธํ•ด ๋ด…๋‹ˆ๋‹ค.

 

 

 

 

instance-1

GCP์—์„œ ์ธ์Šคํ„ด์Šค-1์€ ์œ„์™€ ๊ฐ™์ด port is already allocated ๋ผ๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, Port๊ฐ€ ์ด๋ฏธ ํ• ๋‹น๋˜์—ˆ๋‹ค๋Š” ์˜ค๋ฅ˜์ธ๋ฐ์š”..

๊ธฐ์กด์— 8080 ํฌํŠธ๋ฅผ ์‹คํ–‰์ค‘์ด์—ˆ๊ธฐ์— ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.

 

 

 

๋˜ํ•œ GCP ์ธ์Šคํ„ด์Šค-2,3 ์€ ์œ„์™€ ๊ฐ™์ด Docker demon์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†๋‹ค๊ณ , ์‹คํ–‰์ค‘์ธ ์ƒํƒœ๋ƒ๊ณ  ์นœ์ ˆํ•˜๊ฒŒ ๋กœ๊ทธ๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

 

์ธ์Šคํ„ด์Šค-2,3 ์€ ๋กœ๊ทธ๋ฅผ ์ข…๋ฃŒ(Ctrl + C) ํ•œ ๋’ค, docker๋ฅผ ์‹คํ–‰ํ•ด์ค๋‹ˆ๋‹ค.

$ sudo systemctl start docker

 

๋˜ํ•œ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๊ถŒํ•œ์„ ์ˆ˜์ •ํ•ด์ค๋‹ˆ๋‹ค.

$ sudo chmod 666 /var/run/docker.sock

 

์œ„ ๊ณผ์ •์„ ๋๋‚ด๊ณ  Jenkins์—์„œ ๋‹ค์‹œ ๋ฐฐํฌ๋ฅผ ํ•ด๋ด…์‹œ๋‹ค!!

 

 

 

nohup ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ด๋ณด์‹œ๋ฉด, GCP ์ธ์Šคํ„ด์Šค-2,3 ์€ ์ด์ œ ์ •์ƒ์ ์œผ๋กœ ๋ฐฐํฌ๊ฐ€ ๋œ ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๐Ÿ™Œ 

 

 

 

 

 

๐ŸŽ— Nginx GCP ์ธ์Šคํ„ด์Šค ์ƒ์„ฑํ•˜๊ธฐ

 

์ด์ œ Nginx ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ด์ค๋‹ˆ๋‹ค!!

์ด๋ฆ„์€ nginx-instance-1

๋ฆฌ์ „์€ ํƒ€์ด์™„์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.(์„œ์šธ ๋ฆฌ์ „์€ ์ตœ๋Œ€ 4๊ฐœ๊ฐ€ ๋˜๋Š”๋ฐ, ๋ชจ๋‘ ํ• ๋‹นํ–ˆ๊ธฐ๋•Œ๋ฌธ)

๋จธ์‹  ์œ ํ˜•์€ e2-medium ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

 

๊ธฐํƒ€ CentOS 7, ๋ฐฉํ™”๋ฒฝ์€ HTTP, HTTPS ๋ชจ๋‘ ํ—ˆ์šฉ์€ ๋™์ผํ•˜๊ฒŒ ์„ค์ •ํ•˜๊ณ  ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

๐ŸŽ— GCP ์ธ์Šคํ„ด์Šค์—์„œ Nginx ์„ค์น˜ & ์‹คํ–‰ํ•˜๊ธฐ

์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์ด ๋‹ค๋˜์—ˆ์œผ๋ฉด, SSH๋ฅผ ์ ‘์†ํ•ด์„œ Nginx๋ฅผ ์„ค์น˜ํ•ด์ค๋‹ˆ๋‹ค.

$ sudo yum install nginx

 

์„ค์น˜๊ฐ€ ๋‹ค ๋๋‚ฌ์œผ๋ฉด Nginx๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

$ sudo systemctl start nginx

 

 

 

Nginx๋ฅผ ์„ค์น˜ํ•œ ์ธ์Šคํ„ด์Šค์˜ ์™ธ๋ถ€IP๋กœ ์ ‘์†ํ•ด๋ณด๋ฉด ์œ„์™€ ๊ฐ™์€ ์‚ฌ์ดํŠธ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค. โœŒ

 

 

 

 

๐ŸŽ— Nginx ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ ์„ค์ •

Nginx์˜ ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด ์œ„ conf ํŒŒ์ผ์— vi ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

์˜คํƒ€ ์กฐ์‹ฌ!!! ๐Ÿ˜ข

Nginx์— ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ์„ ์„ค์ •์„ ํ•ฉ๋‹ˆ๋‹ค.

 

์œ„์™€ ๊ฐ™์€ ์„ค์ • ํŒŒ์ผ์€ Nginx์˜ ๊ณต์‹ ๋ฌธ์„œ ๋ฅผ ์ฐธ๊ณ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ server๋Š” GCP ์ธ์Šคํ„ด์Šค์˜ ๋‚ด๋ถ€ IP๋ฅผ ์ž‘์„ฑํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

upstream์˜ ๊ฐ„๋‹จํ•œ ์„ค๋ช…...

upstream <upstream name> {
    <๋กœ๋“œ๋ฐธ๋Ÿฐ์Šค ํƒ€์ž…> - default๋Š” ๋ผ์šด๋“œ ๋กœ๋นˆ(๋“ค์–ด์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌ)
    server <host1>:<port1> <option ...>
    ...
    server <host2>:<port2> <option ...>
}

weight:  ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ์— ๊ฐ€์ค‘์น˜๋ฅผ ๋‘ฌ์„œ ๋ถ„์‚ฐ์‹œํ‚ต๋‹ˆ๋‹ค.
max_conns:  ์ตœ๋Œ€ ์—ฐ๊ฒฐ ํ•œ๊ณ„๋ฅผ ์ •ํ•ฉ๋‹ˆ๋‹ค.
max_fails:  ์ตœ๋Œ€ ์‹คํŒจ ํ•œ๊ณ„๋ฅผ ์ •ํ•ฉ๋‹ˆ๋‹ค.(์ตœ๋Œ€ ์‹คํŒจํšŸ์ˆ˜์— ๋„๋‹ฌํ•˜๋ฉด ์„œ๋ฒ„๊ฐ€ ์ฃฝ์€๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ)
fail_timeout:  ์‹œ๊ฐ„ ์ง€์ •(์ด ์‹œ๊ฐ„์„ ๋„˜์–ด์„œ๋„ ์‘๋‹ต์ด ์—†์œผ๋ฉด ์„œ๋ฒ„๊ฐ€ ์ฃฝ์€๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ)
backup:  backup ์„œ๋ฒ„๋กœ, ๋‹ค๋ฅธ ์„œ๋ฒ„๊ฐ€ ์ฃฝ์—ˆ์„ ๋•Œ ๋™์ž‘

 

 

 

Nginx์˜ IP์—์„œ /hash/123 ์œผ๋กœ ์ ‘๊ทผ์„ ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ํ˜„์žฌ๋Š” ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ์ด ์ ์šฉ์ด ๋˜์–ด์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—,

404 ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ, Nginx๋ฅผ reload(restart) ํ•œ ๋’ค ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

$ sudo systemctl reload nginx

 

๋˜ํ•œ ์•„๋ž˜ ์„ค์ •์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

$ sudo setsebool -P httpd_can_network_connect on

 

 

 

 

๊ทธ ํ›„ Nginx์˜ ์„œ๋ฒ„๋กœ ์ ‘์†ํ•ด๋ณด๋ฉด /hash/123 URL์ด ์ •์ƒ์ ์œผ๋กœ ์ ‘๊ทผ์ด ๋ฉ๋‹ˆ๋‹ค!! ๐Ÿ˜‚

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€