Load Balancer - HAProxy

circle-info

์ด ๊ธ€์—์„œ ์„ค๋ช…ํ•˜๋Š” ์„œ๋น„์Šค ๊ตฌ์„ฑ์— ํ•„์š”ํ•œ ๊ฐ€์ƒ ๋จธ์‹ , ๊ณต์ธ IP, ๋„๋ฉ”์ธ์€ ๋ชจ๋‘ ์ค€๋น„๋˜์–ด ์žˆ์Œ์„ ์ „์ œํ•จ

์„œ๋น„์Šค ๊ตฌ์„ฑ๋„

์„œ๋ฒ„ ์ •๋ณด

๊ฐ€์ƒ๋จธ์‹ 
IP
์šด์˜์ฒด์ œ
์šฉ๋„

VM1

192.168.10.116

Linux (CentOS 7)

Load Balancer

VM2

192.168.10.121

WindowsServer2016

์›น ์„œ๋น„์Šค (IIS)

VM3

192.168.10.122

WindowsServer2016

์›น ์„œ๋น„์Šค (IIS)

VM4

192.168.10.123

WindowsServer2016

์›น ์„œ๋น„์Šค (IIS)

VM5

192.168.10.125

WindowsServer2016

์›น ์„œ๋น„์Šค (IIS)

HAProxy ์„ค์ •

์„ค์น˜

์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๊ธฐ๋ณธ์ ์ธ ์„ค์ •ํŒŒ์ผ์€ ๋‹ค์Œ ๊ฒฝ๋กœ์— ์žˆ์Œ

ํŒŒ์ผ ๋‚ด์šฉ ์ˆ˜์ •

๋ฐฑ์—”๋“œ ์„ค์ •

HTTP ์„ค์ •

WEB UI ์„ค์ •

HAProxy ์„œ๋น„์Šค

์‹œ์ž‘

๋ถ€ํŒ… ํ›„ ์ž๋™ ์‹คํ–‰

์ƒํƒœ ํ™•์ธ

์‹คํ–‰ ์˜ค๋ฅ˜ ์‹œ ํ™•์ธ ๋ฐฉ๋ฒ•: ๋ฃจํŠธ๋กœ ํฌ๊ทธ๋ผ์šด๋“œ์—์„œ ์ˆ˜๋™์œผ๋กœ ์‹œ์ž‘ํ•˜๊ณ  ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธ

์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘๋˜์ง€ ์•Š๊ณ  ์•„๋ž˜ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์™€ ๊ฐ™์ด ๋œฐ ๊ฒฝ์šฐ

์˜ค๋ฅ˜๋ฉ”์‹œ์ง€: "Starting frontend mssql_frontend: cannot bind socket [0.0.0.0:1433]"

setsebool -P haproxy_connect_any=1 ๋ช…๋ น์–ด์˜ ์—ญํ• 

  • setsebool: SELinux์˜ boolean ๊ฐ’์„ ์„ค์ •ํ•˜๋Š” ๋ช…๋ น์–ด

  • -P: ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์˜๊ตฌ์ ์œผ๋กœ ์ ์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ ์žฌ๋ถ€ํŒ… ํ›„์—๋„ ์œ ์ง€

  • haproxy_connect_any=1: HAProxy๊ฐ€ ๋ชจ๋“  ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๋Š” boolean ๊ฐ’์„ ํ™œ์„ฑํ™”

๋ฐฉํ™”๋ฒฝ ์„ค์ • (ํฌํŠธ ๋ฐ ์„œ๋น„์Šค ๋“ฑ๋ก)

์ƒˆ๋กœ์šด zone ์ƒ์„ฑ

๋ฐฉํ™”๋ฒฝ์— ์„œ๋น„์Šค ์ถ”๊ฐ€

๋ฐฉํ™”๋ฒฝ์— ํฌํŠธ ์ถ”๊ฐ€

firewalld ์žฌ์‹œ์ž‘ ๋ฐ ์ƒˆ๋กœ ๋“ฑ๋กํ•œ zone ํ™œ์„ฑํ™”

์ •์ƒ ์„ค์ • ์—ฌ๋ถ€ ํ™•์ธ

์ˆ˜์‹ ์ค‘์ธ ํฌํŠธ ํ™•์ธ

  • ๋ฐฉํ™”๋ฒฝ์—์„œ ํฌํŠธ๋ฅผ ์„ค์ •ํ•ด๋„ ํ•ด๋‹น ํฌํŠธ๋กœ ์‹ค์ œ ์„œ๋น„์Šค๊ฐ€ ์ˆ˜์‹ ๋˜๊ณ  ์žˆ์–ด์•ผ ๋‚˜ํƒ€๋‚จ

  • ๋ฐฉํ™”๋ฒฝ ์˜คํ”ˆ์€ ๋˜์—ˆ์œผ๋‚˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•ˆ ๋–  ์žˆ๋Š” ๊ฒƒ (ํฌํŠธ๋ฅผ ์—ด๊ณ  ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ์ง€ ์•Š์€ ์ƒํƒœ)

certbot SSL ์ธ์ฆ์„œ ๋ฐœ๊ธ‰

letsencrypt์œผ๋กœ ๋ฐœ๊ธ‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” certbot ํ”„๋กœ์„ธ์„œ๋กœ ๋ฐœ๊ธ‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ CentOS7์—์„œ๋Š” epel-release๋ฅผ ์„ค์น˜ํ•ด์•ผ ๋‹ค์šด๋กœ๋“œ๊ฐ€ ๊ฐ€๋Šฅ

๋ฐœ๊ธ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•

Multi-Domain

circle-exclamation

์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๋‹ค์Œ ๊ฒฝ๋กœ์— ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์น˜

ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค๋Š”๊ฒƒ์„ ๊ฐ„์†Œํ™” ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ํ•˜๋‚˜๋กœ ํ•ฉ์นœ๋‹ค

์ธ์ฆ์„œ ์ž๋™ ๊ฐฑ์‹  ์„ค์ •

Bash ์‰˜ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ์ž‘์„ฑ

์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์— ๊ถŒํ•œ ๋ถ€์—ฌ

์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ์‹คํ–‰ํ•˜๊ณ  ์ƒ์„ฑ๋œ ๋กœ๊ทธ ํŒŒ์ผ ๋งˆ์ง€๋ง‰ ์ˆ˜์ • ์ผ์ž ํ™•์ธ

crontab์„ ์ด์šฉํ•˜์—ฌ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ์ž๋™ ์‹คํ–‰ ์„ค์ •

๋งค์ผ ์˜ค์ „ 3์‹œ ๋งˆ๋‹ค ์‹คํ–‰

crontab ์„œ๋น„์Šค ์‹œ์ž‘

HTTPS ๋ฐ ๋„๋ฉ”์ธ๋ณ„ ์ ‘์†ํ•  ๋ฐฑ์—”๋“œ ์„ค์ •

๊ธฐ์กด ์ •์˜ํ•œ 80 ํฌํŠธ ์„ค์ •์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝ

  • HTTP ์š”์ฒญ์„ ๋ฐ›์•„๋“ค์ด๋Š” ํ”„๋ก ํŠธ์—”๋“œ๋กœ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ HTTPS๊ฐ€ ์•„๋‹Œ ์š”์ฒญ์„ ๋ณด๋‚ผ ๊ฒฝ์šฐ์—๋Š” redirect ์ง€์‹œ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ HTTPS๋กœ ๋ฆฌ๋””๋ ‰์…˜

HTTPS ์„ค์ •

์—ฌ๋Ÿฌ๊ฐœ ์ธ์ฆ์„œ ํŒŒ์ผ(.pem) ์„ธํŒ… ๋ฐฉ๋ฒ• <์ฐธ๊ณ >

โ€ป ๋ฆฌ๋ˆ…์Šค ์˜คํ”ˆ๋œ ํฌํŠธ ํ™•์ธ ๋ฐ ๋“ฑ๋ก

์˜คํ”ˆ๋œ HTTP Port ํ™•์ธ๋ฐฉ๋ฒ•

HTTP Port ์˜คํ”ˆํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•

HTTP Port ๋‹ซ๊ธฐ ์œ„ํ•ด ์ œ๊ฑฐ

๊ธฐํƒ€

Last updated