6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

redis-clusterのfailover挙動

Last updated at Posted at 2018-12-11

背景

  • redis clusterのfailoverには過半数のmasterの投票が必要らしい
  • 実際に確認してみた

初期状態

スクリーンショット 2018-12-12 2.08.53.png

  • 3 master, 3 slave
  • redis 4.0.9

slaveを1台破壊

こうすると

スクリーンショット 2018-12-12 2.09.02.png

こうなる

スクリーンショット 2018-12-12 2.09.11.png

slave1こわれるだけ。masterには影響なし

masterを1台破壊

こうすると

スクリーンショット 2018-12-12 2.09.20.png

こうなる

スクリーンショット 2018-12-12 2.09.34.png

replicationされてるslaveが昇格.1minくらいタイムラグあり

master2台を順次破壊する

こうすると

スクリーンショット 2018-12-12 2.14.31.png

こうなる

スクリーンショット 2018-12-12 2.14.43.png

replicationされてるslaveが昇格.1minくらいタイムラグあり

master2台を同時に破壊

こうすると

スクリーンショット 2018-12-12 2.15.54.png

こうなる

スクリーンショット 2018-12-12 2.16.07.png

failoverが発生しない理由

  • slaveの昇格ルール
    • 全masterの過半数の投票が必要
  • 1台ずつ壊れたとき
    • 1台目壊れたとき
      • 投票権を持っているmasterは2台。(master2, master3)
      • 全master3台中、過半数の投票によりfailoverが発生
    • 2台目も同様
  • 2台同時に壊れたとき
    • 投票権を持っているmasterは1台。(master3)
    • 投票数は過半数に達しないので、failover発生せず
  • 公式: https://redis.io/topics/cluster-spec#availability

同じ系統のmaster-slaveを破壊

こうすると

スクリーンショット 2018-12-12 2.18.44.png

こうなる

スクリーンショット 2018-12-12 2.18.56.png

結論

以下の場合にアプリに影響あり。

  • 同じ系統のmaster, slaveが死ぬ
  • masterが2台以下の状態で、masterが死ぬ
6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?