【Redis】Redis7でレプリケーションを設定する

こんにちは

前回はAlmaLinux9にRedis7をインストールしたので、今回はVM1とVM2にそれぞれRedisをインストールし、そこでレプリケーションを設定してみたのでここにまとめます

 

■環境

OS:AlmaLinux9

 

VM1

IP:192.168.33.93    (プライマリ)

ポート:6379

 

VM2

IP:192.168.33.94 (セカンダリ)

ポート:6379

 

■手順

1. セカンダリからの接続を受け付けるように設定  (プライマリとセカンダリの両方)

vi /etc/redis/redis.conf
bind 127.0.0.1 -::1

bind 0.0.0.0

 

2. Redis の再起動 (プライマリとセカンダリの両方)

systemctl restart redis

 

3. レプリケーション情報の設定(セカンダリ)

vi /etc/redis/redis.conf

→下記を追記する

replicaof 192.168.33.93 6379

 

4. Redis の再起動 (セカンダリ)

systemctl restart redis

 

5. レプリケーションの状況確認(プライマリとセカンダリの両方)

・プライマリ

redis-cli info replication

→下記のように表示されればOk

# Replication
role:master
connected_slaves:1
slave0:ip=192.168.33.94,port=6379,state=online,offset=28,lag=1
master_failover_state:no-failover
master_replid:6b880fb41de44651c7ad393f12edbc46a4344477
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:28
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:28

 

・セカンダリ

redis-cli info replication

→下記のように表示されればOK

# Replication
role:slave
master_host:192.168.33.93
master_port:6379
master_link_status:down
master_last_io_seconds_ago:-1
master_sync_in_progress:0
slave_read_repl_offset:1
slave_repl_offset:1
master_link_down_since_seconds:-1
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:29b6e3eb9e2a017f2856041b0e860ba27e30a832
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

 

6. 動作確認

・プライマリ側でkeyをセット

localhost:6379> set key7 value2
OK

 

・セカンダリ側で確認

keys *

→下記のように出力されればOK

1) "key2"
2) "key6"
3) "key5"
4) "key7"
5) "key1"
6) "key4"
7) "key3"

 

★おまけ

・プライマリ側でレプリケーションが認識されない

[root@redis01 redis]# redis-cli info replication
# Replication
role:master
connected_slaves:0 ★0になっておりプライマリを認識していない
master_failover_state:no-failover
master_replid:67762e13e1253b45db381f094c5edf1f66da773b
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0

→/var/log/redis/redis.logに下記が出力されており、プライマリ側がprotected-modeで稼働していることが原因

17922:S 08 Nov 2025 09:44:56.178 * Connecting to MASTER 192.168.33.93:6379
17922:S 08 Nov 2025 09:44:56.178 * MASTER <-> REPLICA sync started
17922:S 08 Nov 2025 09:44:56.184 * Non blocking connect for SYNC fired the event.
17922:S 08 Nov 2025 09:44:56.196 # Error reply to PING from master: '-DENIED Redis is running in protected mode because protected mode is enabled and no password is set for the default user. In this mode connections are only accepted from the loopback interface. If you want to connect from external computers to Redis you m'

 

プライマリ側で設定変更

vi /etc/redis/redis.conf
protected-mode yes

protected-mode no

 

再起動

systemctl restart redis

 

レプリケーションが実行されていることを確認

redis-cli info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.33.94,port=6379,state=online,offset=28,lag=1
master_failover_state:no-failover
master_replid:6b880fb41de44651c7ad393f12edbc46a4344477
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:28
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:28

 

■まとめ

どうでしたでしょうか

初めてレプリケーションを組んでみましたが結構簡単に設定できました

Redisはすでに開発現場では必須くらいのサービスかなと思うので、それのレプリケーションを組めるのは結構重要なスキルになるかなと思いました

また今度はSentinelを試してみようかなと思います!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA