๐Ÿ’จ Redis ๊ฐ์„ฑ ๋ชจ๋ฅด๋ฉด ๋‚˜๊ฐ€๋ผ

hannaxannahยท2024๋…„ 5์›” 3์ผ
4
post-thumbnail

Redis ๊ณต์‹ ์œ ํŠœ๋ธŒ ์ฑ„๋„์—์„œ ์ œ๊ณตํ•˜๋Š” Redis Cluster์— ๊ด€ํ•œ ๋™์˜์ƒ์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.


Redis


๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ, Redis์— ๋Œ€ํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Redis๋Š” key-value ๊ตฌ์กฐ์˜ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์˜คํ”ˆ ์†Œ์Šค DBMS์ž…๋‹ˆ๋‹ค.

์บ์‹œ ์ €์žฅ์†Œ๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋ฉฐ, ์ธ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— Redis ์„œ๋ฒ„๋ฅผ ์žฌ์‹œ์ž‘ํ•˜๋ฉด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์†Œ๋ฉธ๋œ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค.


ํ™•์žฅ์„ฑ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ปค์ง€๋ฉด ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ์™€ ๋” ๋งŽ์€ CPU, ๊ทธ๋ฆฌ๊ณ  ๋” ๋งŽ์€ ์ฒ˜๋ฆฌ๋Ÿ‰์ด ํ•„์š”ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ Redis Cluster๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•„์š”ํ•œ ์ถ”๊ฐ€ ์šฉ๋Ÿ‰์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ์—ฌ๊ธฐ์„œ ํ™•์žฅ์„ฑ์ด๋ž€ ๊ฐœ๋…์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ™•์žฅ์„ฑ์ด๋ž€ โ€˜์‹œ์Šคํ…œ์— ๋ฆฌ์†Œ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ, ๋Š˜์–ด๋‚˜๋Š” ์ž‘์—…๋Ÿ‰์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ์˜ ์†์„ฑโ€™์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ํ™•์žฅ ๋ฐฉ๋ฒ•์œผ๋กœ ์ˆ˜์ง์  ํ™•์žฅ๊ณผ ์ˆ˜ํ‰์  ํ™•์žฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜์ง์  ํ™•์žฅ

์ˆ˜์ง์  ํ™•์žฅ์€ ์„œ๋ฒ„์— CPU๋‚˜ ๋ฉ”๋ชจ๋ฆฌ์™€ ๊ฐ™์€ ๋ฆฌ์†Œ์Šค๋ฅผ ๋” ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
์ฆ‰, ํฐ ์„œ๋ฒ„๋ฅผ ํ™•๋ณดํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜ํ‰์  ํ™•์žฅ

์ˆ˜ํ‰์  ํ™•์žฅ์€ ๋ฆฌ์†Œ์Šค ํ’€์— ๋” ๋งŽ์€ ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
์ฆ‰, ์ „์ฒด ์„œ๋ฒ„๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


Redis์˜ ๊ฒฝ์šฐ ๋Œ€๋ถ€๋ถ„ ๋‹จ์ผ ์Šค๋ ˆ๋“œ์ด๋ฏ€๋กœ, ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋ช…๋ น ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์„œ๋ฒ„ CPU์˜ ๋‹ค์ค‘ ์ฝ”์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋‘ ๊ฐœ์˜ Redis ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• ํ•˜๋ฉด ์‹œ์Šคํ…œ์ด ์š”์ฒญ์„ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋‘ ๋ฐฐ๋กœ ๋Š˜๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


Redis Cluster

์ด์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ Redis ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค ํ˜น์€ Redis ๋…ธ๋“œ์— ๋ถ„์‚ฐํ•˜๋Š” ์ž‘์—…์„ ๋ฐ”๋กœ Redis Cluster๋ฅผ ํ†ตํ•ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Redis Cluster๋Š” ์—ฌ๋Ÿฌ ๋…ธ๋“œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ๋ถ„์‚ฐํ•ด์ฃผ๊ณ , ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋„ ์ž‘์—…์„ ๊ณ„์† ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋งํ•ด, ๊ณ ์„ฑ๋Šฅ์˜ ํ™•์žฅ์„ฑ์„ ์ œ๊ณตํ•˜๋ฉด์„œ ์ ์ ˆํ•œ ์ˆ˜์ค€์˜ ๋ฐ์ดํ„ฐ ์•ˆ์ •์„ฑ๊ณผ ๊ฐ€์šฉ์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๋ฐ์ดํ„ฐ ๋ถ„์‚ฐ ๊ธฐ์ค€ ๋ฐ Key ๊ด€๋ฆฌ

๊ทธ๋Ÿผ Redis Cluster๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ๋ถ„์‚ฐํ•˜๊ณ  key๊ฐ’์„ ๊ด€๋ฆฌํ• ๊นŒ์š”?

๋‹จ์ˆœ ํ•ด์‹ฑ

์ผ๋ฐ˜์ ์ธ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋ถ„์‚ฐํ•˜๋ ค๋Š” ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๋งŒํผ ํ•ด์‹œ ํ•จ์ˆ˜์™€ ๋ชจ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋‹จ์ˆœ ํ•ด์‹ฑ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋‹จ์ˆœ ํ•ด์‹ฑ์€ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋ณ€ํ•  ๋•Œ ๋งˆ๋‹ค ๋ณ€ํ•˜๋Š” ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๋งŒํผ ํ•ด์‹œ ํ•จ์ˆ˜์™€ ๋ชจ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ณผ์ •์„ ๋‹ค์‹œ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๋†’์€ ๊ฐ€์šฉ์„ฑ์„ ํ™•๋ณดํ•˜๊ธฐ ์œ„ํ•ด, Redis Cluster๋Š” Hash slot์ด๋ผ๋Š” ๋…ผ๋ฆฌ ๋‹จ์œ„๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Hash slot

Redis Cluster์—๋Š” 16,384๊ฐœ์˜ Hash slot์ด ์žˆ์œผ๋ฉฐ, ๊ฐ๊ฐ์˜ Hash slot์—์„œ๋Š” key์— ๋Œ€ํ•œ ๊ด€๋ฆฌ๊ฐ€ ์ด๋ฃจ์–ด์ง€๊ณ , ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ ๋‚˜๋ˆ„์–ด ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋…ธ๋“œ๊ฐ€ 2๊ฐœ์ธ ๊ฒฝ์šฐ, ์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ์— 0๋ถ€ํ„ฐ 8000๊นŒ์ง€์˜ Hash slot์ด ํ• ๋‹น๋˜๊ณ , ๋‘ ๋ฒˆ์งธ ๋…ธ๋“œ์— 8001๋ถ€ํ„ฐ 16384๊นŒ์ง€์˜ Hash slot์ด ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐฉ์‹์„ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ๋Š” ํด๋Ÿฌ์Šคํ„ฐ์— ๋…ธ๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•˜๊ณ  ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ Hash slot์ด ์ž๋™์œผ๋กœ ๋ถ„์‚ฐ๋˜๋ฏ€๋กœ, Hash slot์„ ํ•œ ๋…ธ๋“œ์—์„œ ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ ์ด๋™ํ•˜๋Š” ๋ฐ์— ์ž‘์—…์„ ์ค‘์ง€ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.


Master-Slave(Primary-Replica) ๊ตฌ์„ฑ

๋…ธ๋“œ์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ, ํ•ด๋‹น ๋…ธ๋“œ์˜ Hash slot์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ ์ž Redis Cluster๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ๋ชจ๋“  ๋…ธ๋“œ๋Š” ๋ณต์ œ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ธฐ๋ณธ ๋…ธ๋“œ ์ฆ‰, Master ๋…ธ๋“œ์— ์žฅ์• ๊ฐ€ ๊ฐ์ง€๋˜๋Š” ๊ฒฝ์šฐ, ๋ณต์ œ ๋…ธ๋“œ์ธ Slave ๋…ธ๋“œ๋ฅผ Master๋กœ ์Šน๊ฒฉํ•˜์—ฌ ๊ณ„์†ํ•ด์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด Redis Cluster๋Š” ์–ด๋–ป๊ฒŒ ๋…ธ๋“œ์˜ ์‹คํŒจ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  Slave ๋…ธ๋“œ๋ฅผ Master๋กœ ์Šน๊ฒฉ์‹œํ‚ฌ ์ˆ˜ ์žˆ์„๊นŒ์š”?

3๊ฐœ์˜ Master ๋…ธ๋“œ์™€ 3๊ฐœ์˜ Slave ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋œ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

6๊ฐœ์˜ ๋…ธ๋“œ๋Š” ๋ชจ๋‘ TCP ํ†ต์‹ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜๋ฉฐ, ์ง€์†์ ์œผ๋กœ ์„œ๋กœ ํ•‘์„ ๋ณด๋‚ด๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ๊ตํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ณผ์ •์—์„œ ํŠน์ • Master ๋…ธ๋“œ๊ฐ€ ๊ณผ๋ฐ˜์ˆ˜์˜ Master ๋…ธ๋“œ๋“ค๊ณผ ์ผ์ • ์‹œ๊ฐ„ ์ด์ƒ ํ†ต์‹ ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ, ์žฅ์•  ์กฐ์น˜๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋˜๊ณ  ํŠน์ • Master ๋…ธ๋“œ์˜ ๋ณต์ œ๋ณธ ์ฆ‰, Slave ๋…ธ๋“œ๊ฐ€ Master๋กœ ์Šน๊ฒฉ๋ฉ๋‹ˆ๋‹ค.


Redis Cluster ์‹ค์Šต(Mac ํ™˜๊ฒฝ)

Redis Cluster๋ฅผ Mac ํ™˜๊ฒฝ์—์„œ ์ง์ ‘ ๊ตฌ์„ฑํ•˜๋Š” ๊ณผ์ •์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋จผ์ € ํ„ฐ๋ฏธ๋„์„ ์—ด๊ณ  Redis๋ฅผ ์„ค์น˜ํ•ด์ค€ ๋’ค ๋‹ค์Œ๊ณผ ๊ฐ™์ด Redis ์„ค์ • ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

Redis ์„ค์น˜

brew install redis

redis.conf ์ƒ์„ฑ

vim redis.conf

port 7000 # ํฌํŠธ ๋ฒˆํ˜ธ
cluster-enabled yes # ํด๋Ÿฌ์Šคํ„ฐ ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •
cluster-config-file nodes.conf # ๋…ธ๋“œ์˜ ํด๋Ÿฌ์Šคํ„ฐ ์œ ์ง€๋ฅผ ์œ„ํ•œ ์„ค์ •์„ ์ €์žฅํ•˜๋Š” ํŒŒ์ผ. ์‚ฌ์šฉ์ž ์ˆ˜์ • X
cluster-node-timeout 5000 # ํŠน์ • ๋…ธ๋“œ๊ฐ€ ์ •์ƒ์ด ์•„๋‹Œ ๊ฒƒ์œผ๋กœ ํŒ๋‹จํ•˜๋Š” ๊ธฐ์ค€ ์‹œ๊ฐ„
appendonly yes # rdb์— ์ €์žฅ๋˜์ง€ ์•Š๊ณ  aof์— ์ €์žฅ๋จ(์„ ํƒ ์‚ฌํ•ญ)

๊ฐ ๋…ธ๋“œ(Redis ์ธ์Šคํ„ด์Šค)์— ํ•ด๋‹นํ•˜๋Š” ํด๋” ์ƒ์„ฑ
์ €๋Š” 8๊ฐœ์˜ ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋œ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ƒ์„ฑํ•  ์˜ˆ์ •์ด๋ฏ€๋กœ ๊ฐ ๋…ธ๋“œ์— ํ•ด๋‹นํ•˜๋Š” 8๊ฐœ์˜ ํด๋”๋ฅผ ์ƒ์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํด๋”์˜ ์ด๋ฆ„์€ ๊ฐ ๋…ธ๋“œ์˜ ํฌํŠธ ๋ฒˆํ˜ธ๋กœ ์„ค์ •ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

mkdir 7000 7001 7002 7003 7004 7005 7006 7007


์ƒ์„ฑํ•œ ๊ฐ ํด๋”์— redis.conf ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๊ณ  ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ ๋…ธ๋“œ์™€ ์ผ์น˜ํ•˜๋„๋ก ์ˆ˜์ •
๊ฐ ํด๋” ๋ณ„๋กœ ์•„๊นŒ ์ƒ์„ฑํ•œ Redis ์„ค์ • ํŒŒ์ผ์„ ๋ณต์‚ฌํ•ด์„œ ๋ถ™์—ฌ๋„ฃ๊ธฐํ•˜๊ณ , ๊ฐ ํŒŒ์ผ ๋ณ„๋กœ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ํด๋” ์ด๋ฆ„๊ณผ ์ผ์น˜ํ•˜๋„๋ก ์ˆ˜์ •ํ•ด ์ค๋‹ˆ๋‹ค.

cp redis.conf 7000/redis.conf

cp redis.conf 7001/redis.conf

cp redis.conf 7002/redis.conf

cp redis.conf 7003/redis.conf

cp redis.conf 7004/redis.conf

cp redis.conf 7005/redis.conf

cp redis.conf 7006/redis.conf

cp redis.conf 7007/redis.conf


Redis ์„œ๋ฒ„ ์‹คํ–‰

๊ฐ ํด๋” ๋ณ„๋กœ Redis ์ธ์Šคํ„ด์Šค ์„œ๋ฒ„๋ฅผ ์‹คํ–‰์‹œ์ผœ ์ฃผ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

cd 7000

redis-server ./redis.conf


Redis ์„ค์ • ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

ํ„ฐ๋ฏธ๋„์„ ์ƒˆ๋กœ ์—ด๊ณ (command + t) ๊ฐ ํด๋”๋กœ ์ด๋™ํ•ด์„œ ์„œ๋ฒ„ ์‹คํ–‰
๊ฐ ํด๋” ๋ณ„๋กœ ํ„ฐ๋ฏธ๋„์„ ์ƒˆ๋กœ ์—ด์–ด ์„œ๋ฒ„๋ฅผ ๋ชจ๋‘ ์‹คํ–‰ํ•ด ์ค๋‹ˆ๋‹ค.

cd 7001 โ€ฆ cd 7007

redis-server ./redis.conf

Cluster ์ƒ์„ฑ

์„œ๋ฒ„๋ฅผ ๋ชจ๋‘ ์‹คํ–‰ํ•˜๊ณ  ๋‚˜๋ฉด ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ƒ์„ฑํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ ๊ฐ๊ฐ์˜ Redis ์ธ์Šคํ„ด์Šค ์„œ๋ฒ„์˜ ๋ณต์ œ๋ณธ์„ ์ƒ์„ฑ

ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ create ๋ช…๋ น์–ด์™€ ๊ฐ ์„œ๋ฒ„๋ณ„ IP ์ฃผ์†Œ, ๊ทธ๋ฆฌ๊ณ  ๋งŒ๋“œ๋ ค๋Š” ๋ณต์ œ๋ณธ์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ค์ •ํ•ด ์ค๋‹ˆ๋‹ค.

redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 127.0.0.1:7007 --cluster-replicas 1


ํด๋Ÿฌ์Šคํ„ฐ ์ƒ์„ฑ์— ์„ฑ๊ณตํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ™”๋ฉด์ด ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์— ํ• ๋‹น๋œ Hash slot๊ณผ Master-Slave ๋…ธ๋“œ์˜ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4๊ฐœ์˜ ๋…ธ๋“œ ๊ฐ๊ฐ์— Hash slot์ด 4096๊ฐœ ์”ฉ ํ• ๋‹น
Master[0] -> Slots 0 - 4095
Master[1] -> Slots 4096 - 8191
Master[2] -> Slots 8192 - 12287
Master[3] -> Slots 12288 - 16383

Master ๋…ธ๋“œ ์ •๋ณด [๋…ธ๋“œ ์ •๋ณด, IP ์ฃผ์†Œ, ํ• ๋‹น๋œ Hash slot, ๋งˆ์Šคํ„ฐ]
M: cb6f66d97da3b69198911e7e23c5b8b32168edc4 127.0.0.1:7002
slots:[8192-12287] (4096 slots) master

Slave ๋…ธ๋“œ ์ •๋ณด [๋…ธ๋“œ ์ •๋ณด, IP ์ฃผ์†Œ, ๋ณต์ œํ•œ Master ๋…ธ๋“œ์˜ ๋…ธ๋“œ ์ •๋ณด]
S: d4547c5a1d90598e3ae611b0684e7b38829ca823 127.0.0.1:7004
replicates cb6f66d97da3b69198911e7e23c5b8b32168edc4


Cluster ์ •๋ณด ์กฐํšŒ

๋‹ค์Œ์€ ํ•‘ ๋ช…๋ น์–ด์™€ ํด๋Ÿฌ์Šคํ„ฐ ์Šฌ๋กฏ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์–ด๋–ค ํด๋Ÿฌ์Šคํ„ฐ ์Šฌ๋กฏ์ด ์–ด๋–ค Redis ์ธ์Šคํ„ด์Šค์— ๋งคํ•‘๋˜๋Š”์ง€์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

7000๋ฒˆ ํฌํŠธ๋กœ ์ ‘์†ํ•ด์„œ PING ๋ช…๋ น์–ด์™€ CLUSTER SLOTS ๋ช…๋ น์–ด ์‹คํ–‰

redis-cli -p 7000 -c

127.0.0.1:7000> PING

127.0.0.1:7000> CLUSTER SLOTS

์˜ˆ๋ฅผ ๋“ค์–ด, 1)์—์„œ 0์€ ์ด ์Šฌ๋กฏ์˜ ์‹œ์ž‘ ๋ฒ”์œ„๋ฅผ ์˜๋ฏธํ•˜๊ณ  4095๋Š” ์ข…๋ฃŒ ๋ฒ”์œ„๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด ํด๋Ÿฌ์Šคํ„ฐ ์Šฌ๋กฏ์˜ ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์˜ ํฌํŠธ ๋ฒˆํ˜ธ๋Š” 7000๋ฒˆ์ด๋ฉฐ ์Šฌ๋ ˆ์ด๋ธŒ ๋…ธ๋“œ์˜ ํฌํŠธ ๋ฒˆํ˜ธ๋Š” 7007๋ฒˆ ์ž„์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๋” ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ์œ„ํ•œ CLUSTER INFO ๋ช…๋ น์–ด ์‹คํ–‰
ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋” ์ž์„ธํ•œ ์ •๋ณด๋Š” CLUSTER INFO ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

127.0.0.1:7000> CLUSTER INFO


๐Ÿ’ก ์ฐธ๊ณ 

[Youtube] Clustering in Redis
[Youtube] How to Create a Cluster in Redis
[Tistory] Redis ํด๋Ÿฌ์Šคํ„ฐ
[Redis] Scale with Redis Cluster

profile
ูฉ(หŠแ—œห‹*)ูˆ

1๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2024๋…„ 5์›” 6์ผ

์ข‹์€ ๊ธ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค~

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ