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)
    • ๋ฐฐํฌ
  • ์ด๋ฅผ ๊ฐ„๋‹จํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ธฐ์ˆ ์ด 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 ์‚ฌ์šฉ

Reference