LoginSignup
0
0

More than 5 years have passed since last update.

redis-sentinelで、ssh portforwarding越しにredisのレプリケーションを行う場合の注意点

Posted at

自分用のメモ代わりに。

事象

テスト環境で下記のように、

  • srv1
    • redis master (port 6400)
    • redis sentinel
  • srv2
    • redis slave (from srv1 master) (port 6400)

という構成を作った。

srv1 と srv2は別のNWにあり、レプリケーションのために

ssh portforwardingを行った。

+---------------+     +-------------+  ssh port forwarding   +------------+
| srv1:sentinel | --> | srv1:master | ---------------------> | srv2:slave |
+---------------+     +-------------+                        +------------+

この場合に、srv2:slaveをsrv1:masterに繋ぐまでは、想定通りsrv1:masterのredisは

masterのママとなる。

が、srv2:redisを

slaveof localhost [forwarding port]

と、srv2 -> srv1のsshトンネルを経由して接続させると、srv1:masterのredisが

sentinelよりslaveに降格させられる事象が発生した。

原因

srv1:sentinelが、srv1:masterに接続してきたsrv2:slaveのredisを、
srv1のローカルIPアドレス+srv2:slaveのlisten portとして認識した為。

つまり、sentinelはsrv1:masterに接続したsrv2:slaveをslave化しようとして、

srv1:masterのredisに対して slaveof していた。

対策

srv2:redisのportを変更した。

このときにsrv1:sentinelは

  • srv1 IPアドレス + srv2:slave port

として認識することには変わらないので、srv1に

srv2:slaveのredisと同じポートで動いているredisが無いように気をつけること。

0
0
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
0
0