Pivotal Knowledge Base

フォローする

Redis マスターとスレーブのレプリケーション設定方法

環境

製品 バージョン
Redis

全てのバージョン

目的

スレーブ Redis サーバーがマスターサーバーデータベースの完全なバックアップコピーを保持するように、マスター・スレーブ Redis レプリケーションを設定することは非常に単純である。Redis レプリケーションに関する詳細情報は、http://redis.io/topics/replication を参照されたい。

本記事の実例では、同一 Ubuntu 14.0.4 ホスト上に 2 つの Redis インスタンスが動作しており、そのうち、redis_6379 サーバーをマスターとして、redis_6380 サーバーをスレーブとして設定する。まだ、Redis サーバーをインストールしていない場合は、ナレッジベース記事 "Linux ホスト上で複数の Redis サーバーインスタンスを設定し稼働する方法" を参照されたい。

1)  Redis サーバー 1(マスター): ポート番号 6379 にて以下の設定で稼働

  • /etc/redis/redis_6379.conf 設定ファイル
  • /etc/init.d/redis_6379 サービススクリプト

2)  Redis サーバー 2(スレーブ): ポート番号 6380 にて以下の設定で稼働

  • /etc/redis/redis_6380.conf 設定ファイル
  • /etc/init.d/redis_6380 サービススクリプト

設定手順

1)  /etc/redis/redis_6380.conf に以下の行を追加し、この Redis サーバーはマスターサーバーの完全なコピーであることを明示
# slaveof <マスターの IP> <マスターのポート番号>
slaveof localhost 6379
# マスターへの認証を行うためのスレーブ設定
masterauth mypass

2) /etc/redis/redis/redis_6379.conf にマスターサーバーにログインするためパスワードが必要であることの設定
requirepass mypass

3) インスタンスを再起動
/etc/init.d/redis_6379 stop/start
/etc/init.d/redis_6380 stop/start

あるいは、以下のように redis-cli の各種コマンド(config set masterauth/requirepass、SLAVEOF)を使用して、再起動することなくスレーブの設定が可能である。

  • マスターへログインするために必要なパスワードを設定

redis-cli -p 6379 config set requirepass mypass

  • スレーブからマスターへログインするためのパスワードを設定

redis-cli -p 6380 config set masterauth mypass

  • redis_6379 マスターサーバーのスレーブであることを明示

redis-cli -p 6380 SLAVEOF localhost 6379

  • マスターとスレーブのレプリケーション関連情報を取得

redis-cli -p 6379 -a mypass info replication
# Replication
role:master
connected_slaves:1
slave0:ip=::1,port=6380,state=online,offset=29,lag=0
master_repl_offset:29
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:28

redis-cli -p 6380 info replication
# Replication
role:slave
master_host:localhost
master_port:6379
master_link_status:up
master_last_io_seconds_ago:7
master_sync_in_progress:0
slave_repl_offset:113
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

  • レプリケーションを停止し、スレーブをマスターに変更する

redis-cli -p 6380 slaveof no one
OK

redis-cli -p 6380 info replication
# Replication
role:master
connected_slaves:0
master_repl_offset:211
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

追加情報

ナレッジベース記事: Redis マスターとスレーブサーバー間の自動フェールオーバーを行うための HAProxy と Redis Sentinel の設定方法

 

コメント

Powered by Zendesk