5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Redis 5でのCluster構築

Last updated at Posted at 2019-01-21

Redis 5でのCluster構築

ElastiCacheなんて便利なものがあるんですが、ローカルでフェイルオーバーなどの検証を行おうとしたところ、
構築構築のまとまった情報が少なかったため備忘録を残します。

環境

OS: CentOS 7
Master Node: 3個
Slave Node: 3個

1OS上にMaster1個、Slave1個という形で構築します。

あとMaster2個で作ろうとしたら怒られたので3個にしてます。
ElastiCacheだと2シャードいけるのに。

前提条件

  • firewalldが止まってるか、6379、6380、16379、16380が解放されいる
  • selinuxが無効になっている

インストール

デフォルトのyumリポジトリにはRedis 5はないため、epelとremiのリポジトリを追加します。

yum -y install epel-release
yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

redisパッケージのバージョンを確認します。
Versionが5以上になっていれば大丈夫です。

yum info redis --enablerepo=remi

そしてインストール。

yum -y install redis --enablerepo=remi

設定

1サーバー上に2つのredisを立ち上げるため、設定ファイルを2つ用意します。

mkdir -p /opt/redis/6379 /opt/redis/6380

cp -p /etc/redis.conf /opt/redis/6379/
cp -p /etc/redis.conf /opt/redis/6380/

6380ポートで実行できるように設定を上書きします。

sed -i 's/6379/6380/g' /opt/redis/6380/redis.conf

cluster modeをon、listenするネットワークポートの変更を行います。

sed -i 's/# cluster-enabled yes/cluster-enabled yes/g' /opt/redis/6379/redis.conf
sed -i 's/# cluster-enabled yes/cluster-enabled yes/g' /opt/redis/6380/redis.conf
sed -i 's/# cluster-config-file/cluster-config-file/g' /opt/redis/6379/redis.conf
sed -i 's/# cluster-config-file/cluster-config-file/g' /opt/redis/6380/redis.conf

sed -i 's/bind 127.0.0.1/bind {{ listenするIPアドレス }} 127.0.0.1/g' /opt/redis/6379/redis.conf
sed -i 's/bind 127.0.0.1/bind {{ listenするIPアドレス }} 127.0.0.1/g' /opt/redis/6380/redis.conf

必要であればmaxmemoryも設定してください。

起動

特筆することはありません。
systemdで起動のコントロールをしたい人は別の記事を見てください。

redis-server /opt/redis/6379/redis.conf &
redis-server /opt/redis/6380/redis.conf &

クラスターの構築

Masterの構築

まずはMaster Nodeを構築します。
4まではredis-trib.rbを使って構築していたようですが、5からはredis-cliでやります。

redis-cli --cluster create 192.168.10.1:6379 192.168.10.2:6379 192.168.10.3:6379

Can I set the above configuration? (type 'yes' to accept):

とでたらyesと入力します。

状態の確認

現在の状況を確認します。cluster nodesコマンドで3行返却されれば大丈夫です。

redis-cli cluster nodes
b4134b8ae3d45099b89e80f723ffbd6f92802e9d 192.168.10.3:6379@16379 master - 0 1548208242137 3 connected 10923-16383
6db9b1aac4d272849300bb48d63ecd95c4c1ec94 192.168.10.2:6379@16379 master - 0 1548208241129 2 connected 5461-10922
237bbdb084091869e837a3ddf90e10f59f31ee64 192.168.10.1:6379@16379 myself,master - 0 1548208240000 1 connected 0-5460

Slaveの登録

続いてSlaveを登録します。
今回は下記のようにせってします。

192.168.10.1:6379 → 192.168.10.2:6380
192.168.10.2:6379 → 192.168.10.3:6380
192.168.10.3:6379 → 192.168.10.1:6380

redis-cli --cluster add-node 192.168.10.2:6380 192.168.10.1:6379 --cluster-slave
redis-cli --cluster add-node 192.168.10.3:6380 192.168.10.2:6379 --cluster-slave
redis-cli --cluster add-node 192.168.10.1:6380 192.168.10.3:6379 --cluster-slave

状態の確認

もう一度、クラスターの状態を確認します。

redis-cli cluster nodes
237bbdb084091869e837a3ddf90e10f59f31ee64 192.168.10.1:6379@16379 master - 0 1548208917915 1 connected 0-5460
f0255000fa18959cb273e1a1555eb84884e261e9 192.168.10.3:6380@16380 slave 6db9b1aac4d272849300bb48d63ecd95c4c1ec94 0 1548208918921 2 connected
b4134b8ae3d45099b89e80f723ffbd6f92802e9d 192.168.10.3:6379@16379 master - 0 1548208916000 3 connected 10923-16383
6ff367f62dc46a07a8030c2985e1fbcb9f899c68 192.168.10.2:6380@16380 slave 237bbdb084091869e837a3ddf90e10f59f31ee64 0 1548208918000 1 connected
763bff12eea4ca5c821a6a5b9eeafdf8f44bf5b0 192.168.10.1:6380@16380 slave b4134b8ae3d45099b89e80f723ffbd6f92802e9d 0 1548208917000 3 connected
6db9b1aac4d272849300bb48d63ecd95c4c1ec94 192.168.10.2:6379@16379 myself,master - 0 1548208918000 2 connected 5461-10922

参考

5
4
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
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?