Help us understand the problem. What is going on with this article?

Redis Replication検証

More than 1 year has passed since last update.

はじめに

他のRedis構築に関するページは以下をご参考ください。
Redis構築のまとめ

参考)http://memocra.blogspot.jp/2013/01/redis.html

レプリケーションとは、マスタに書き込んだデータをスレーブにコピーすることで、
書き込みはマスタ、読み取りはスレーブと担当を分けることで負荷を分散させる。
読み取りにはマスタも参加することもある。

環境

CentOS 6.8
Redis 3.2.5(当時の安定バージョン)

検証方法

クラスタ構成では各サーバの設定が必要なので、2台のマスター/スレーブ構成で検証する

構成

IPアドレス 役割 ポート番号
192.168.56.111 master 6379
192.168.56.112 slave 6379

検証結果

・マスターが落ちると機能しなくなる
・スレーブはマスターに昇格しない
・マスターは書き込み専用・スレーブは読み込み専用で使用する

クラスタ構成と比べて

・クラスタはマスターが1台落ちるとそこでsetした値はgetできなくなる
→Redisからのデータ参照時に不整合が起きる可能性がある
・レプリケーションの場合はマスターが落ちたとしても、マスターでsetした値はスレーブから参照することができる
・データ不整合を考慮しなければクラスタ構成の方が負荷分散・可用性が高い

検証内容詳細

Redisの設定ファイルを修正する

設定するのはslave側の「192.168.56.112」

$ vim /etc/redis/6379.conf
slaveof 192.168.56.111 6379

※この時、cluster-enableはnoにしておくこと

マスターで値をsetする

マスター/スレーブを起動してマスターで値をsetする

$ service redis start

$ redis-cli -h 192.168.56.111
192.168.56.111:6379>set num1 1
OK

その後スレーブで値をgetしてみる

$ redis-cli -h 192.168.56.112
192.168.56.112:6379>get num1
"1"

マスターでsetした値がスレーブにも反映されている

マスターを落とす

マスターを落としてみる。
落とす方法はserviceコマンドでredisを停止したり、サーバ毎落としても可

192.168.56.112:6379> get num2
"2"
192.168.56.112:6379> set num3
(error) ERR wrong number of arguments for 'set' command

マスターが落ちてもスレーブでgetはできる。ただしsetは読み取り専用のためできない
→クラスタのようにマスターに昇格はされない
マスターが復活すると問題なくマスター/スレーブの関係に戻る

スレーブを落とす

スレーブを落としてからマスターでsetを行う

192.168.56.111:6379> set num3 3
OK

その後スレーブを復活させてgetする

192.168.56.112:6379> get num3
"3"

問題なくgetすることができた。

※なお、スレーブが落ちる→マスターでnum5をset→マスターが落ちる→スレーブ復活→スレーブでnum5をgetしてもマスターでsetした値は取り出せない(マスターが復活すればnum5をgetできるようになる)

ono-soic
PHP生まれPHP育ち。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした