CentOS 7
Sponsored Link

Redis : レプリケーションの設定
2016/07/21
 
Redis レプリケーションの設定です。マスタースレーブ型の冗長構成になります。
[1] マスター側で設定を変更します。
[root@dlp ~]#
vi /etc/redis.conf
# 64行目:自身の IP または 0.0.0.0 に変更

bind
0.0.0.0
# 377行目:必要に応じて追記

# min-slaves-to-write : 設定値の数以上のスレーブが存在する場合に限り書き込みを受け付ける

# min-slaves-max-lag : 設定値の時間(秒)内で上記設定値の数のスレーブが確認できた場合 OK とする

min-slaves-to-write 2
min-slaves-max-lag 10
[root@dlp ~]#
systemctl restart redis
[2] スレーブ側で設定を変更します。
[root@node01 ~]#
vi /etc/redis.conf
# 64行目:自身の IP または 0.0.0.0 に変更

bind
0.0.0.0
# 206行目:マスターサーバーの IP と ポートを追記

slaveof 10.0.0.30 6379
# 213行目:マスターサーバーに設定した認証パスワードを追記

masterauth password
# 241行目:設定確認 (スレーブサーバーはリードオンリー)

slave-read-only yes
[root@node01 ~]#
systemctl restart redis
[3] マスター/スレーブ両ホストで Firewalld を有効にしている場合は Redis 設定ポートの許可が必要です。
[root@dlp ~]#
firewall-cmd --add-port=6379/tcp --permanent

success
[root@dlp ~]#
firewall-cmd --reload

success
[4] スレーブホスト側で SELinux を有効にしている場合は、許可ルールの追加が必要です。
[root@node01 ~]#
vi redis_repl.te
# 以下の内容で新規作成

module redis_repl 1.0;

require {
        type redis_port_t;
        type redis_t;
        class tcp_socket name_connect;
}

#============= redis_t ==============
allow redis_t redis_port_t:tcp_socket name_connect;

# 中間ファイル生成

[root@node01 ~]#
checkmodule -m -M -o redis_repl.mod redis_repl.te

checkmodule: loading policy configuration from redis_repl.te
checkmodule: policy configuration loaded
checkmodule: writing binary representation (version 17) to redis_repl.mod
# 中間ファイルからモジュール生成

[root@node01 ~]#
semodule_package --outfile redis_repl.pp --module redis_repl.mod

# モジュールインストール

[root@node01 ~]#
semodule -i redis_repl.pp

[5] スレーブホスト側で統計情報を確認します。「master_link_status:up」となっていれば OK です。
# 統計情報確認

[root@node01 ~]#
redis-cli info Replication

# Replication
role:slave
master_host:10.0.0.30
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:384
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

# 任意のキーが取得できるか確認

[root@node01 ~]#
redis-cli get key_on_master

"value_on_master"
 
Tweet