Redis で Replication を 構築する 方法

0 件のコメント

今回は 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構築

マスターサーバーを設定、起動します。 基本的には単独サーバーの設定と同じです。

  1. マスターサーバー用設定ファイルを作成

    /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
    
  2. マスターサーバー起動

    # redis-server /data/redis/server01/redis.conf
    

スレーブサーバーを設定、起動します。

  1. スレーブ用設定ファイルを作成

    単一サーバーで実行しているので port 、 フォルダ を変更します。 スレーブとしての設定は requirepass の修正、replicaofmasterauth の追加です。

    /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 指定がある場合)、マスターのパスワードを指定します。
  2. スレーブサーバー起動

    # redis-server /data/redis/server02/redis.conf
    

動作確認

  1. マスター接続

    # redis-cli -p 6379
    127.0.0.1:6379> auth master-password
    OK
    
  2. マスターにデータ書き込み/確認

    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"
    
  3. スレーブ接続

    # redis-cli -p 6380
    127.0.0.1:6380> auth slave-password
    OK
    
  4. スレーブのデータ確認

    127.0.0.1:6380> get key1
    "Hello"
    127.0.0.1:6380> keys *
    1) "key1"
    

  1. マスターシャットダウン

    # redis-cli -p 6379 -a master-password shutdown
    
  2. スレーブ接続

    # redis-cli -p 6380 -a slave-password
    
  3. スレーブのデータ確認

    127.0.0.1:6380> get key1
    "Hello"
    127.0.0.1:6380> keys *
    1) "key1"
    
  4. スレーブへ書き込み

    127.0.0.1:6380> set key2 "World"
    (error) READONLY You can't write against a read only replica.
    

  1. マスターを起動

    # redis-server /data/redis/server01/redis.conf
    
  2. マスターに接続

    # redis-client -p 6379 -a master-password
    
  3. マスターに書き込み/確認

    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"
    
  4. スレーブに接続

    # redis-client -p 6380 -a slave-password
    
  5. スレーブのデータを確認

    127.0.0.1:6380> get key2
    "World"
    127.0.0.1:6380> keys *
    1) "key2"
    2) "key1"
    

参考記事

今回は「Redisでマスター/スレーブ構成を構築する方法とその動作確認」についてまとめました。 参考になったでしょうか? 本記事がお役に立っていると嬉しいです!!

最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!