RedisのReplicationをEC2で構築する
■概要
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が持っていた値に上書きされた
Author And Source
この問題について(RedisのReplicationをEC2で構築する), 我々は、より多くの情報をここで見つけました https://qiita.com/taka_22/items/a99796fc61dca55b1e11著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .