Hatena::Grouptech

id:rx7(@namikawa)の技術メモ このページをアンテナに追加 RSSフィード

過去記事一覧 | Main Blog (元RX-7乗りの適当な日々) | SBM (id:rx7のBookmark)

2014/03/09

Redis Sentinelの挙動

| Redis Sentinelの挙動 - id:rx7(@namikawa)の技術メモ を含むブックマーク はてなブックマーク - Redis Sentinelの挙動 - id:rx7(@namikawa)の技術メモ Redis Sentinelの挙動 - id:rx7(@namikawa)の技術メモ のブックマークコメント

メモメモ。

via. 日々の覚書: redis sentinelの動きを軽く追ってみる

redis-2.6.7のソースから。

redis.c: serverCronから100ミリ秒ごとにsentinel.c: sentinelTimerが呼ばれる。
まずはマスターから。
 ⇒マスターが終わったら、マスターからスレーブの情報を引っ張ってきてそいつらをチェック。
 ⇒次にマスターからsentinelの情報を引っ張ってきて、そいつらを。
  ⇒マスター、自分に接続してるsentinelの情報なんて持ってるんだね。

sentinel.c: sentinelHandleRedisInstanceの中で
 1) コネクションが切れてたら再接続(sentinel.c: sentinelReconnectInstance)
 2) INFOやPINGの打ち込み(sentinel.c: sentinelPingInstance)
 3) PINGの戻りがPONG, LOADING, MASTERDOWNだったらlast_avail_timeを更新。
 4) チェックしているマスターのステータスがSDOWN, FAILOVER_IN_PROGRESSだったら、他のsentinelにis-master-down-by-addrを投げて問い合わせる。これ、「このsentinelは自分のマスターがダウンしていると認識しているかどうか(=MASTERDOWN)」を判定して格納してるように見える(sentinel.c: sentinelAskMasterStateToOtherSentinels)
 5) ここでSDOWNしているかどうかの判定関数を呼ぶ(sentinel.c: sentinelCheckSubjectivelyDown)
 6) last_avail_timeと現在時刻の差がdown_after_millisecondsを超えていたらSDOWN判定。
 7) 自分がSDOWNとしている場合、他のsentinelがSDOWNと判定しているかどうか問い合わせる。quorumの値を超えたらODOWNのステータスをつける(sentinel.c: sentinelCheckObjectivelyDown)
トラックバック - http://tech.g.hatena.ne.jp/rx7/20140309

2014/02/26

Redisでlastsave(最終スナップショット取得時刻)のUNIXTIMEを人間が読める時間に

| Redisでlastsave(最終スナップショット取得時刻)のUNIXTIMEを人間が読める時間に - id:rx7(@namikawa)の技術メモ を含むブックマーク はてなブックマーク - Redisでlastsave(最終スナップショット取得時刻)のUNIXTIMEを人間が読める時間に - id:rx7(@namikawa)の技術メモ Redisでlastsave(最終スナップショット取得時刻)のUNIXTIMEを人間が読める時間に - id:rx7(@namikawa)の技術メモ のブックマークコメント


普通のやり方ではあるけど。


# redis-cli lastsave
(integer) 1393366757

RedisのlastsaveはUNIXTIMEで返してくれるので、よくわからない・・・。


# date --date "@`redis-cli lastsave`" +"%Y/%m/%d %H:%M:%S"
2014/02/26 07:19:17

こんな感じでdateコマンドをかませて使っている。

トラックバック - http://tech.g.hatena.ne.jp/rx7/20140226