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 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 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" |
Sponsored Link |