Master-slave Architecture

์ผ๋ฐ˜์ ์œผ๋กœ master๋Š” read/write์ด๋‹ค. secondary๋Š” read๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

secondary node๊ฐ€ ์ฃฝ์—‡์„๊ฒฝ์šฐ ๋™์ž‘ ํ…Œ์ŠคํŠธ

cd redis/replica-multi-node
docker-compose up -d

# main
docker run -it --rm bitnami/redis:7.2 redis-cli -h host.docker.internal -p 6379

# secondary-1
docker run -it --rm bitnami/redis:7.2 redis-cli -h host.docker.internal -p 6380

# secondary-2
docker run -it --rm bitnami/redis:7.2 redis-cli -h host.docker.internal -p 6381
alt text

๋ชจ๋“  ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค

์ด์ œ secondary-1์„ ์ฃฝ์ด์ž

docker-compose stop redis-secondary-1
alt text

secondary-1์ด ์—ฐ๊ฒฐ์ด ์•ˆ๋œ๋‹ค.

๋‹ค์‹œ ์˜ฌ๋ ค๋ณด์ž.

docker-compose start redis-secondary-1
alt text
alt text

๋ถ€ํŒ… ๋˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋ถ€ ๋‹ค ๊ฐ€์ ธ์˜จ๊ฑธ ์•Œ์ˆ˜ ์žˆ๋‹ค.

secondary์— write๋ฅผ ํ•ด๋ณด์ž.

write ๋ฅผ ํ• ์ˆ˜ ์—†๋‹ค.

alt text

secondary๋ฅผ ๋ชจ๋‘ ์ฃฝ์ธํ›„ ๋‹ค์‹œ ์‚ด๋ฆฌ๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊ฐ€?

๋ฉ”์ธ์—์„œ ๋‹ค ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ์—†์ด ์ž˜ ๋œ๋‹ค.

main์ด ์ฃฝ์œผ๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊ฐ€?

์ผ๋‹จ ๋‹ค์Œ ์ปค๋งจ๋“œ๋ฅผ ์‹คํ–‰ํ•ด๋ณด์ž.

role
alt text

์ด์ œ main์„ ์ฃฝ์ด์ž.

docker-compose stop redis-main

๋‹ค์‹œ redis cli์—์„œ ํ™•์ธํ•ด๋ณด์ž.

role
alt text

main์€ ์—†์–ด์ง€๊ณ  secondary๋Š” ๊ณ„์† slave์ด๋‹ค.

์ด์ œ secondary-1์„ main์œผ๋กœ ๋งŒ๋“ค์ž.

# redis-cli
SLAVEOF NO ONE
alt text

์ด์ œ secondary-1์ด main์ด ๋˜์—ˆ๋‹ค.

secondary-2๋ฅผ main์— ๋ถ™์—ฌ์ฃผ์ž.

# redis-cli
SLAVEOF redis-secondary-1 6379

๊ฒฐ๊ณผ๋ฅผ ๋ณด์ž.

alt text

์ด์ œ secondary-2๊ฐ€ secondary-1์— ๋ถ™์—ˆ๋‹ค.

์ด์ œ main์„ ๋‹ค์‹œ ์‚ด๋ ค๋ณด์ž. ๊ทธ๋ฆฌ๊ณ  ์„ค์ •์„ ๋ฐ”๊ฟ”์ฃผ์ž.

docker-compose start redis-main

SLAVEOF redis-secondary-1 6379
alt text

์ด์ œ main์ด secondary-1์— ๋ถ™์—ˆ๋‹ค.

test๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š”์ง€ ๋ณด์ž.

alt text

์ž˜ ๊ฐ€์ ธ์˜จ๋‹ค. ๋ณต๊ตฌ ์„ฑ๊ณต

Last updated

Was this helpful?