Cluster๋ ํด๋ผ์ด์ธํธ์๊ฒ ๊ณ ๊ฐ์ฉ์ฑ(HA)๋ฅผ ์ ๊ณตํด ์ค๋ค.
Redis cluster๋ HA๋ฟ๋ง ์๋๋ผ Sharding(์ฌ๋ฌ ์๋ฒ์ ๋ฐ์ดํฐ๊ฐ ๋ถ์ฐ์ ์ฅ)์ ๋์ ์ ๊ณตํ๋ค.
๋
ธ๋๋ Master์ Slave๋ก ๊ตฌ์ฑ๋์ด์๋ค.
Slave๋
ธ๋๋ Master๋
ธ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํ์ฌ ์ ์ฅํ๊ณ ์๋ ์ญํ ์ ํ๋ค.
Master๋
ธ๋์์ ์ฅ์ ๋ฐ์ ์ Slave๋
ธ๋๊ฐ Master๋ก ์น๊ฒฉ๋๋ฉฐ ๋ฌด์ค๋จ์๋น์ค๊ฐ ๊ฐ๋ฅํ๋ค.
๋ชจ๋ Redis cluster node๋ ๋ ๊ฐ์ TCP ํฌํธ๊ฐ ์ด๋ ค ์์ด์ผ ํ๋ค.
1. Client port
Redis cluster์๋ 16384๊ฐ์ Hash slot์ด ์์ผ๋ฉฐ Redis cluster์ ๋ชจ๋ ๋
ธ๋๋ ์ด๋ฅผ ๋๋์ด ๊ฐ๋๋ค.
๋ฐ๋ผ์ ๋
ธ๋๋ฅผ ์ถ๊ฐ ๋ฐ ์ ๊ฑฐํ ๋ Hash slot์ด ์ฌ ๊ตฌ์ฑ๋๋ค.
๋
ธ๋์์ ๋ค๋ฅธ ๋
ธ๋๋ก Hash slot์ ์ด๋ํ ๋ ์์
์ ์ค์ง ํ ํ์๊ฐ ์๋ค.
๋๋ฌธ์ ๋
ธ๋ ์ถ๊ฐ ๋ฐ ์ ๊ฑฐ๋ก ๋
ธ๋๊ฐ ๋ณด์ ํ๋ Hash slot์ ๋น์จ์ ๋ณ๊ฒฝํ๋ ๋ฐ ๋ค์ด ํ์์ด ํ์ํ์ง ์๋ค.
Redis cluster๋ sharding์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐ ์ ์ฅํ๋ค.
๋๋ฌธ์ cluster ์ค ํ๋์์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด ํด๋น cluster์ hashslot์ ์ฌ์ฉํ์ง ๋ชปํ๋ค.
์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด master node๋ ์์ ์ ๋ณต์ ํ slave๋ฅผ ์ถ๊ฐํ๋ค.
Master ๋
ธ๋์์ ์ฅ์ ๋ฐ์ ์ slave๋
ธ๋๋ master๋ก ์น๊ฒฉํ๋ค.
Master์ slave ๋
ธ๋๊ฐ ๊ฐ์ ์๋ฒ์ ์กด์ฌํ๊ณ , ํด๋น ์๋ฒ์ ์ฅ์ ๊ฐ ๋ฐ์ํ์ฌ ๋์ ์คํจํ๋ฉด redis cluster๋ ์๋ํ์ง ์๋๋ค.
Redis cluster๋ ๋น๋๊ธฐ ๋ณต์ ๋ฅผ ์ฌ์ฉํ๋ค.
1. Client๊ฐ Master B์๊ฒ write.
2. Master B๊ฐ Client์๊ฒ OK ์ก์ .
3. Master B๋ write set์ Slave(B1, B2, B3)๋ค์๊ฒ ์ ํ.
Client์๊ฒ 3๋ฒ์ ๊ณผ์ ์ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ ์์ฒญ๋ ์ง์ฐ ํจ๋ํฐ์ด๋ค.
๋ฐ๋ผ์ redis cluster๋ ๋น๋๊ธฐ ๋ณต์ ๋ฅผ ์ฌ์ฉํ๋ค.
ํ์ง๋ง 3์ ๊ณผ์ ์์ ๋ค์๊ณผ ๊ฐ์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ค๋ฉด??
1. B1, B2๋ Master B๋ก ๋ถํฐ write set์ ์ ๋ฌ๋ฐ์๋ค.
2. B3์ ์ ๋ฌ๋ฐ์ง ๋ชปํ ์ฑ๋ก ๋คํธ์ํฌ์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ค.
3. B3์ด Master๋ก ์น๊ฒฉํ๋ค.
๋ค์๊ณผ ๊ฐ์ ์ฅ์ ์๋๋ฆฌ์ค๋ก write์ ์์ค์ด ๋ฐ์ํ๋ค.
์์ ๊ฐ์ ์ฅ์ ์๋๋ฆฌ์ค์ ๋ํ ์๋ฃจ์
์ผ๋ก Redis๋ WAIT์ ์ฌ์ฉํ๋ค.
async ๋ณต์ ๋ฅผ ์ฌ์ฉํ๋ ๋์ ๋ฐ๋ผ์ sync write๋ฅผ ์ง์ํ๋ ๊ฒ์ด๋ค.
ํ์ง๋ง, ์ด๋ ์๋ฒฝํ ์ผ๊ด์ฑ์ ๋ณด์ฅํ์ง ์๋๋ค.
๋ค์ ์ฅ์ ์๋๋ฆฌ์ค๋ฅผ ๋ณด์.
์ด๋ฅผ ์ํด redis cluster๋ Node time out์๊ฐ์ด ์ง๋๋ฉด write๋ฅผ ๋ถํํ๋ค...
cluster-enabled<yes/no>
no
cluster-config-file<filename>
cluster-node-timeout<milliseconds>
cluster-slave-validity-factor<factor>
cluster-migration-barrier<count>
1
cluster-require-full-coverage<yes/no>
yes
: slave๊ฐ ์๋ master๊ฐ ๋ค์ด๋๋ฉด cluster ์ ์ฒด ์ค์งno
: slave์๋ master๊ฐ ๋ค์ด๋์ด๋ cluster ์ ์ง. ๋จ, ํด๋น master slot์์ error ๋ฐ์yes
์ ํcluster-allow-reads-when-down<yes/no>
no
: ์คํจ ์ํ ์ ๋ชจ๋ ํธ๋ํฝ ์ค์ง.yes
: ์คํจ ์ํ ๋์์๋ ๋
ธ๋์์ read ๊ฐ๋ฅ.