LoginSignup
3
1

More than 3 years have passed since last update.

RedisのReplicationをEC2で構築する

Last updated at Posted at 2020-04-20

■概要

AWS使えるけどElastiCache使えない残念なお仕事です。ならばEC2に自力でRedisを構築するしかないわけですが、Replicationを構築する際にちょっとハマったので手順を残しておきます。

■構築

1. EC2インスタンス起動

今回はAmazon Linux 2のAMIを利用します。
インスタンスタイプはt3.smallを2台、セキュリティグループはtcp/6379を開けます。

2. Redisインストール

master/slave両方
sudo amazon-linux-extras install redis4.0

下記の記事を参考にしました。
AWS EC2にredisをインストールする
https://qiita.com/stoshiya/items/b8c1d2eb41770f92ffcf

3. redis.conf修正

master/slave両方
sudo vi /etc/redis.conf

3.1. bindの設定

(修正前)
bind 127.0.0.1
(修正後)
#bind 127.0.0.1
コメントアウトする

3.2. protected-modeの設定

(修正前)
protected-mode yes
(修正後)
protected-mode no

3.3. slaveの設定 ※slaveのみ※

(修正前)
# slaveof
(修正後)
# slaveof
slaveof aa.bb.cc.dd 6379
※aa.bb.cc.ddにはmasterのプライベートIPを指定する

4. Redis起動

master/slave両方
sudo redis-server /etc/redis.conf &

■動作確認

5. Replicationが設定されていることを確認

5.1. それぞれのサーバでredis-cli起動

master/slave両方
redis-cli

5.2. それぞれのサーバでinfo表示

master/slave両方
127.0.0.1:6379> info
(master側)
# Replication
role:master
(slave側)
# Replication
role:slave
※slave側でrole:masterと表示される場合は、正しくReplication設定できていないので、構築手順を見直す。

6. masterを更新してslaveに反映されることを確認

6.1. masterで値セット

master側
127.0.0.1:6379> set key1 value1
=> OK

6.2. slaveで値を確認

slave側
127.0.0.1:6379> get key1
=> "value1"
ちゃんとmaster=>slave間でレプリケーションされていることが確認できましたね。

7. slaveは更新できないことを確認

slave側
127.0.0.1:6379> set key2 value2
=> (error) READONLY You can't write against a read only slave.

8. slaveがmasterに昇格できることを確認

8.1. slaveをmasterに昇格

slave側
127.0.0.1:6379> SLAVEOF NO ONE
=> OK

8.2. 確認

slave側
127.0.0.1:6379> info
# Replication
role:master

8.3. 値が設定できる

slave側
127.0.0.1:6379> set key2 value2
=> OK

8.4. master側で値を設定してもslaveに反映しない

master側
127.0.0.1:6379> set key2 value3
=> OK
slave側
127.0.0.1:6379> get key2
=> "value2"

9. slaveに復帰

9.1. slaveホストをmasterのslaveノードとして復帰

slave側
127.0.0.1:6379> slaveof 172.30.1.71 6379
=> OK

9.2. key2を取ってみる

127.0.0.1:6379> get key2
=> "value3"
※masterが持っていた値に上書きされた

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1