お金をかけずにサーバーの勉強をしよう

Redisクラスタ 1

2024年1月25日

メニューへ戻る

Ubuntu Serverに Redisのクラスタ環境を作ってみます。

Redisインストール」は、最低限のお試し環境ですので、ここでは冗長化してクラスタ環境を作ってみます。

Redisのクラスタ環境のマニュアルはこちら。
Scale with Redis Cluster

一所懸命に英語ドキュメントを読んでいたんですが、誰がやってくれたのか以下に日本語訳がありました。
Redis クラスタのチュートリアル

※日本語訳では Slaveという言葉が使われていた頃のバージョンの翻訳のようです。
英語版は Replicaになっています。
IT界では Masterに対して Slaveを使うのを止めるムーヴが始まっていますね。

前提としていくつかの観念を理解していないと進めないので、まずそれを。


1.シャーディング(sharding)

データベースの負荷分散(高速化)技術で、日本語では「水平分割」って言います。

ひとまとまりのデータを複数のデータベース分割して配置します。
検索・更新処理において複数のコンピューターを使用することで、処理の負荷が分散されます。
シャーディング

そして Redisではここに「ハッシュスロット(Hash Slot)」というのが出てきます。
データを入れる枠と言えば良いでしょうか。

Redisが作るクラスタ環境では 16,384個のハッシュスロットができまして、ハッシュスロットを分散させることでシャーディングをしています。
ハッシュスロット


2.レプリケーション(Replication)

データをコピーすることで DBが壊れてもコピーの DBが機能を代替することで、耐障害性を高めます。

このコピーのことを Redisでは「レプリカ」って呼んで、Redisではこの形態を「マスターレプリカモデル」と呼んでいます。

こんな感じ。
レプリケーション

マスターに障害が起きると、レプリカがマスターに昇格します。
レプリカの昇格


==========
とりあえずこの 2つは覚えておき、環境構築に進もうと思います。

Redisのクラスターの最小構成は マスターノードが 3台、マスターノードそれぞれのレプリカノードが 1台ずつという、上の図の形です。

ですのでこの形で作っていこうと思います。

マニュアルでは、計 6つのノードを 1つのサーバーに作る例となっていますが、ちゃんとサーバーを 6つ用意して作ってみるつもりです。

特に難しい所はないようなんで環境構築自体はすぐにできそうなものの、「スプリットブレイン」などこういう構成特有の問題につき、考察できれば良いなぁと思っています。

私にとっても実験なので、後で戻ってきてこのページの内容を書き換えることがあるかも知れません。


Redisクラスタ 2」に続きます。