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
参考