[HAProxy] Health Check

[์›๋ณธ ๋งํฌ]

HAProxy๋Š” ํ—ฌ์Šค์ฒดํฌ๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์˜ ์ƒ์กด์—ฌ๋ถ€๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.
ํ—ฌ์Šค์ฒดํฌ์— ์‹คํŒจํ•œ ์„œ๋ฒ„๋Š” ์‹ค์ œ ๋ผ์šฐํŒ… ๋Œ€์ƒ์—์„œ ์ œ์™ธ๋˜๊ณ , ํ—ฌ์Šค์ฒดํฌ๊ฐ€ ๋‹ค์‹œ ์„ฑ๊ณตํ•˜๋ฉด ๋ผ์šฐํŒ… ๋Œ€์ƒ์œผ๋กœ ๋Œ์•„์˜จ๋‹ค.

ํ—ฌ์Šค์ฒดํฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
์ด ๊ฒฝ์šฐ์—๋Š” "GET /" API๋ฅผ ํ—ฌ์Šค์ฒดํฌ๋กœ ์‚ฌ์šฉํ–ˆ๋‹ค.

frontend test-front
    mode http
    bind *:8000
    default_backend test-back

backend test-back
    balance roundrobin
    option httpchk GET /
    server server1 0.0.0.0:8081 check
    server server2 0.0.0.0:8082 check

ํ—ฌ์Šค์ฒดํฌ๋Š” TCP๋กœ๋„ ๊ฐ€๋Šฅํ•œ๋ฐ, ์—ฌ๊ธฐ์„œ๋Š” HTTP๋งŒ ์˜ˆ์‹œ๋กœ ๋‹ค๋ฃฌ๋‹ค.

๋งŒ์•ฝ ๊ฐ‘์ž๊ธฐ server2 ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋œ๋‹ค๊ณ  ํ•˜๋ฉด, ์ˆœ๊ฐ„์ ์œผ๋กœ server2์— ์—ฐ๊ฒฐํ•œ ์š”์ฒญ์€ ๋ป—์„ ์ˆ˜ ์žˆ์ง€๋งŒ

server2๊ฐ€ ํ—ฌ์Šค์ฒดํฌ์— ์‹คํŒจํ•ด์„œ ๋ผ์šฐํŒ… ๋Œ€์ƒ์—์„œ ๋น ์ง€๊ฒŒ ๋˜๋ฏ€๋กœ, server1์—๋งŒ ๋ผ์šฐํŒ…์ด ๋˜๊ฒŒ ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ์‹คํŒจํ–ˆ๋‹ค๊ณ  ๋์€ ์•„๋‹ˆ๋‹ค. server2๊ฐ€ ๋‹ค์‹œ ์‹คํ–‰๋˜๊ณ , ํ—ฌ์Šค์ฒดํฌ์—๋„ ์„ฑ๊ณตํ•˜๋ฉด ๋‹ค์‹œ ๋ผ์šฐํŒ… ๋Œ€์ƒ์ด ๋œ๋‹ค.




๊ธฐํƒ€ ์„ค์ •

disabled
ํŠน์ • ์„œ๋ฒ„๋ฅผ ์ž„์˜๋กœ ๋ผ์šฐํŒ… ๋Œ€์ƒ์—์„œ ์ œ์™ธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, disabled ํ‚ค์›Œ๋“œ๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฑธ ์“ฐ๋ฉด ์ € ํ–‰ ์ž์ฒด๊ฐ€ ๋น ์ง€๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ, comment์™€ ๋™์ผํ•œ ํšจ๊ณผ๋ฅผ ์ค€๋‹ค.

backend test-back
    balance roundrobin
    option httpchk GET /
    server server1 0.0.0.0:8081 check
    server server2 0.0.0.0:8082 check

http-check
http-check ์ ˆ๊ณผ expect๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‘๋‹ต ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
์ด๋Ÿฌ๋ฉด ์‘๋‹ต์ด 200์œผ๋กœ ์™”์„ ๋•Œ๋งŒ ํ—ฌ์Šค์ฒดํฌ๊ฐ€ ์„ฑ๊ณตํ•œ ๊ฒƒ์œผ๋กœ ์นœ๋‹ค.

backend test-back
    balance roundrobin
    option httpchk GET /
    http-check expect status 200
    server server1 0.0.0.0:8081 check
    server server2 0.0.0.0:8082 check

inter
inter ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ—ฌ์Šค์ฒดํฌ์— ๋Œ€ํ•œ ๊ฐ„๊ฒฉ๋„ ์กฐ์ • ๊ฐ€๋Šฅํ•˜๋‹ค. ๋‹ค์Œ ์„ค์ •์€ 4์ดˆ๋งˆ๋‹ค ํ—ฌ์Šค์ฒดํฌ๋ฅผ ํ•˜๊ฒŒ ํ•œ๋‹ค.

backend test-back
    balance roundrobin
    option httpchk GET /
    server server1 0.0.0.0:8081 check inter 4s
    server server2 0.0.0.0:8082 check inter 4s

์„ค์ •ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’์€ 2์ดˆ๋‹ค.

fall
fall ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‹คํŒจ์— ๋Œ€ํ•œ ๊ธฐ์ค€๋„ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
๋‹ค์Œ ์„ค์ •์€ 5๋ฒˆ ์‹คํŒจํ–ˆ์„๋•Œ๋ถ€ํ„ฐ ์‹คํŒจ๋กœ ๊ฐ€์ •ํ•œ๋‹ค.

backend test-back
    balance roundrobin
    option httpchk GET /
    server server1 0.0.0.0:8081 check fall 5
    server server2 0.0.0.0:8082 check fall 5

fall์˜ ๊ธฐ๋ณธ๊ฐ’์€ 3์ด๋‹ค.

rise
rise ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฃฝ์€ ์ƒํƒœ์—์„œ healthyํ•œ ์ƒํƒœ๋กœ ๋‹ค์‹œ ํŒ๋‹จํ•˜๋Š” ์„ฑ๊ณต ํšŸ์ˆ˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง€์ •ํ•œ๋‹ค๋ฉด, 7๋ฒˆ ์‹คํŒจํ•˜๋ฉด ์ฃฝ์—ˆ๋‹ค๊ณ  ํŒ๋‹จํ•ด์„œ ๋’ค๋กœ ๋ฏธ๋ฃจ๊ณ , ๊ทธ ์ƒํƒœ์—์„œ ๋‹ค์‹œ 8๋ฒˆ ์„ฑ๊ณตํ•˜๋ฉด ์‚ด์•˜๋‹ค๊ณ  ํŒ๋‹จํ•œ๋‹ค.

backend test-back
    balance roundrobin
    option httpchk GET /
    server server1 0.0.0.0:8081 check fall 7 rise 8
    server server2 0.0.0.0:8082 check fall 7 rise 8

rise์˜ ๊ธฐ๋ณธ๊ฐ’์€ 2๋‹ค.


์ถ”๊ฐ€์ ์ธ ๋‚ด์šฉ์€ ๋ณ„๋„ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.
https://www.haproxy.com/documentation/haproxy-configuration-tutorials/reliability/health-checks/



์ฐธ์กฐ
https://www.haproxy.com/documentation/haproxy-configuration-tutorials/reliability/health-checks/
https://cyuu.tistory.com/71