今回は Redis の冗長構成3種類(Replication、Sentinel、Cluster)のうち Replication(マスター/スレーブ)構成 について その構築方法と動作確認についてまとめます。
概要
今回は単一サーバー上に Redis サーバー をポート違いで2台立ち上げて 「マスター/スレーブ 構成」を作ってみます。 利用している環境は以下の通りです。
[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@localhost ~]# redis-server --version Redis server v=5.0.5 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=76ba031b1adc8963
Replication構築
マスター
マスターサーバーを設定、起動します。 基本的には単独サーバーの設定と同じです。
-
マスターサーバー用設定ファイルを作成
/data/redis/server01/redis.conf
########### NETWORK ########## bind 0.0.0.0 port 6379 ########### GENERAL ########## daemonize no logfile /data/redis/server01/redis.log ######## SNAPSHOTTING ######## save 900 1 save 300 10 save 60 10000 dir /data/redis/server01/ dbfilename dump.rdb ########## SECURITY ########## requirepass master-password ##### MEMORY MANAGEMENT ###### maxmemory 100mb maxmemory-policy allkeys-lru
-
マスターサーバー起動
# redis-server /data/redis/server01/redis.conf
スレーブ
スレーブサーバーを設定、起動します。
-
スレーブ用設定ファイルを作成
単一サーバーで実行しているので
port
、 フォルダ を変更します。 スレーブとしての設定はrequirepass
の修正、replicaof
とmasterauth
の追加です。/data/redis/server02/redis.conf
########### NETWORK ########## bind 0.0.0.0 port 6380 ########### GENERAL ########## daemonize no logfile /data/redis/server02/redis.log ######## SNAPSHOTTING ######## save 900 1 save 300 10 save 60 10000 dir /data/redis/server02/ dbfilename dump.rdb ######### REPLICATION ######## replicaof 192.168.1.1 6379 masterauth master-password ########## SECURITY ########## requirepass slave-password ##### MEMORY MANAGEMENT ###### maxmemory 100mb maxmemory-policy allkeys-lru
replicaof <MASTER_IP> <MASTER_PORT>
- マスターサーバーのIPアドレス、ポート番号を指定します。
masterauth <MASTER_PASSWORD>
- マスターが認証を有効にしている場合(
requirepass
指定がある場合)、マスターのパスワードを指定します。
-
スレーブサーバー起動
# redis-server /data/redis/server02/redis.conf
動作確認
マスター→スレーブへのデータ転送
-
マスター接続
# redis-cli -p 6379 127.0.0.1:6379> auth master-password OK
-
マスターにデータ書き込み/確認
127.0.0.1:6379> set key1 "Hello" OK 127.0.0.1:6379> get key1 "Hello" 127.0.0.1:6379> keys * 1) "key1"
-
スレーブ接続
# redis-cli -p 6380 127.0.0.1:6380> auth slave-password OK
-
スレーブのデータ確認
127.0.0.1:6380> get key1 "Hello" 127.0.0.1:6380> keys * 1) "key1"
マスター障害時にスレーブが昇格しない
-
マスターシャットダウン
# redis-cli -p 6379 -a master-password shutdown
-
スレーブ接続
# redis-cli -p 6380 -a slave-password
-
スレーブのデータ確認
127.0.0.1:6380> get key1 "Hello" 127.0.0.1:6380> keys * 1) "key1"
-
スレーブへ書き込み
127.0.0.1:6380> set key2 "World" (error) READONLY You can't write against a read only replica.
マスター復活時に再接続する
-
マスターを起動
# redis-server /data/redis/server01/redis.conf
-
マスターに接続
# redis-client -p 6379 -a master-password
-
マスターに書き込み/確認
127.0.0.1:6379> get key2 "World" OK 127.0.0.1:6379> get key2 "World" 127.0.0.1:6379> keys * 1) "key2" 2) "key1"
-
スレーブに接続
# redis-client -p 6380 -a slave-password
-
スレーブのデータを確認
127.0.0.1:6380> get key2 "World" 127.0.0.1:6380> keys * 1) "key2" 2) "key1"
参考記事
今回は「Redisでマスター/スレーブ構成を構築する方法とその動作確認」についてまとめました。 参考になったでしょうか? 本記事がお役に立っていると嬉しいです!!
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!