Redis HA
- ๋ชจ๋ ์ ์ฅ์๊ฐ ๊ทธ๋ ๋ฏ Redis์์๋ High Availability๋ฅผ ์ง์ํ๋ค.
- Replication Node์์ Master ์ ๋ณด์ ๋ํด ์ถ๊ฐํ๋ฉด ๋๋ค.
> replicaof 127.0.0.1 6001 # master ip / port
์ด๋ป๊ฒ Replication์ด ๋์ํ๋๊ฐ?
replicaof ๋ช ๋ น์ด
๋ฅผ ๋ฐ์ master ๋ ธ๋ A๋ ์์ ํ๋ก์ธ์ค๋ฅผ ๋ง๋ค์ด ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ๋คํํ์ผ์ ๋ง๋ ๋ค.- ๋คํ ํ์ผ์ ๋คํธ์ํฌ๋ฅผ ํตํด Replica ๋ ธ๋์ธ B์ ๋ณด๋ธ๋ค.
- ๋คํ ํ์ผ์ ๋ฐ์ ๋ ธ๋ B๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ก๋ํ๋ค.
๋ฌธ์ ๋ ์์๊น?
- in-memory ์ ์ฅ์๋ผ์ Redis ํ๋ก์ธ์ค๊ฐ ๋ค์ด๋๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋ด์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ๋ ์ ์ค๋๋ค.
- Replica ๋
ธ๋๋ฅผ master๋ก ์น๊ฒฉํด์ ์ฌ์ฉํด์ผ ํ๋๋ฐ ์ด ๊ณผ์ ์ ์๋์ ๊ฐ๋ค.
- Replica ๋
ธ๋์์
replicaof NO ONE
์ปค๋งจ๋๋ฅผ ํตํด master ์ฐ๊ฒฐ ํด์ - ์ดํ์ผ์ด์ ์ฝ๋์์ ๋ ๋์ค ์ฐ๊ฒฐ ์ค์ ์ ๋ณ๊ฒฝ (master โ replica)
- ๋ฐฐํฌ
- Replica ๋
ธ๋์์
- ์ด๋ฅผ ๊ฐ๋จํ๊ณ ๋น ๋ฅด๊ฒ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ ๊ธฐ์ ์ด sentinel์ด๋ค.
Sentinel
- master, replica ๋ ธ๋๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ ๊ฒฝ์ฐ ์๋ fail-over๋ฅผ ์งํํ๋ค.
- notification ์ค์ ํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.
- ์ต์ ์ธ ๊ฐ์ Sentinel ์ธ์คํด์ค๊ฐ ํ์ํ๋ค.
- master๋ฅผ ์ ์ ํ๋ ๊ณผ์ ์์ ํฌํํ๋ ๊ณผ์ ์ ๊ฑฐ์น๊ธฐ ๋๋ฌธ
- ์ดํ๋ฆฌ์ผ์ด์
์ master - replica์ ์ฐ๊ฒฐ๋๋ ๊ฒ์ด ์๋๋ผ
sentinel
์ ์ฐ๊ฒฐํ๋ค. - ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
redis-sentinel /path/to/sentinel.conf
redis-server /path/to/sentinel.conf --sentinel
์๋์ ๊ตฌ์กฐ๋ก Sentinel์ ๊ตฌ์ฑํ๋ฉด ์ด๋จ๊น?
- master์ 2๊ฐ์ replica
- ๊ฐ๊ฐ ์๋ฒ์ sentinel์ ํฌํจํ๋ค.
- ๋คํธ์ํฌ๊ฐ ์ด์์ด ์์๋๋ ๋ฌธ์ ๊ฐ ์๋ค.
+----+
| M1 |
| S1 |
+----+
|
+----+ | +----+
| R2 |----+----| R3 |
| S2 | | S3 |
+----+ +----+
Configuration: quorum = 2
- ๋คํธ์ํฌ๊ฐ ๋์ด์ง๋ ๊ฒฝ์ฐ ๊ณผ๋ฐ์๋ก ๊ฒฐ์ ํ ์ ์๋ ์ํฉ์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์ถ์ฒํ์ง ์๋๋ค๊ณ ํ๋ค.
+----+
| M1 |
| S1 | <- C1 (writes will be lost)
+----+
|
/
/
+------+ | +----+
| [M2] |----+----| R3 |
| S2 | | S3 |
+------+ +----+
Sentinel, Master, Replica ๋ชจ๋ ๋ถ๋ฆฌํ๋ ์ํฉ
+----+ +----+
| M1 |----+----| R1 |
| | | | |
+----+ | +----+
|
+------------+------------+
| | |
| | |
+----+ +----+ +----+
| C1 | | C2 | | C3 |
| S1 | | S2 | | S3 |
+----+ +----+ +----+
Configuration: quorum = 2
Redis Cluster
- ๋ง์ ๋ฐ์ดํฐ์ ๋์ TPS๋ฅผ ํ์ํ๋ค๋ฉด Cluster๋ฅผ ๊ณ ๋ คํด๋ณผ๋ง ํ๋ค.
- ์ต์ 3 ๊ฐ์ Master ๋ ธ๋๊ฐ ํ์ํ๋ค.
- ์ค๋ฉ์ผ๋ก ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ ธ๋์ ๋ง๊ฒ ๋ถ๋ฐฐํ์ฌ ์ ์ฅํ๋ค.
- ๊ฐ ๋ ธ๋๋ 16384๊ฐ์ ์ฌ๋กฏ์ ๊ฐ์ง๊ณ ์๋ค.
- Sentinel ํ๋ก์ธ์ค ๋์ ๋ ๋์ค Node ๋ผ๋ฆฌ ๋ชจ๋ํฐ๋งํ๋ค.
- ์ค๋ฉํค๋ฅผ ์ก๊ธฐ ์ํด์๋ Consistent Hashing์ ์ฌ์ฉํ๋ค.
์ฌ์ฉ์๋ ์ด๋ ๋ ธ๋์ ๋ฐ์ดํฐ๊ฐ ์๋์ง ์๋์ง ์ ์ ์์๊น?
-
Redis ํน์ ๋ ธ๋์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์์ ๋ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ
- Client์๊ฒ Redirect ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค.
- Client๋ Redirect๋ Node๋ก ๋ค์ ๊ฒฐ๊ณผ๋ฅผ ์์ฒญํ๋ค.
- Client์์ Redirect ์ฒ๋ฆฌ๊ฐ ์๋์ด์๋ค๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์ ์๋ค.
- Client์ ์์กด์ ์ด๋ค.
-
Couchbase
์์๋?- Client์ชฝ์์ Shard Info ์ ๋ณด๋ฅผ ๋ค๊ณ ์์ด ์ค์ ๋ก ๋ฐ๋ก ๋ฐ์ดํฐ๊ฐ ๋ด๊ธด Node๋ก ์์ฒญํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
- ์๋ง๋ Redis Client์ชฝ์์ Cache๋ฅผ ๋ค๊ณ ์์ง ์์๊น?
Failover
- Coordinator ๊ธฐ๋ฐ Failover
- Zookeeper, consul๋ฑ์ Coordinator
- ๊ฐ๋ฐ์ด ํ์ํ์ง๋ง ๊ด๋ฆฌ ๋น์ฉ์ ๋ฎ์ ์ฅ์ ์ด ์๋ค.
- VIP / DNS ๊ธฐ๋ฐ Failover
- ๊ฐ Layer DNS ์บ์๋ฅผ ์ฃผ์ํ๋ฉฐ ์ฌ์ฉํ์.
- Redis Cluster ์ฌ์ฉ