Redis Cluster の構築 (マスター 3 台 + レプリカ 3 台)
Redisレベル: 中級所要時間: 45–60 分Redis Cluster をゼロから構築します (Redis 7.2 / 8.2 または Valkey)。16384 のハッシュスロットを 3 台 (またはそれ以上) のマスターに分配し、各マスターは別のサーバー上にレプリカを持ちます。サーバーごとに 1 インスタンス (6 サーバー) または 2 インスタンス (3 サーバー) の配置、インスタンスごとの systemd サービス、パスワード、クラスタの作成、確認、フェイルオーバーテストを順に実施します。最終的に、データをマスターに分散し、サーバーを 1 台失っても自動でフェイルオーバーし、ノードを追加して拡張できるクラスタが得られます。データが 1 台のサーバーに収まり、アプリケーションが複数キーのコマンド、Lua、SELECT を使用する場合は Sentinel 構成のほうがシンプルです。ノードの追加、リシャード、故障ノードの交換は Redis 運用ガイドに、バックアップとハードニングは別のガイドにあります。
構成: 6 インスタンス: 6 サーバー × 1 または 3 サーバー × 2
開始前の確認
- すべてのサーバーが同じ OS バージョンで最新の状態である。時刻が NTP (chrony) で同期されている。
- RAM がフォームの値と一致している。swap は小さいが定義されている (fork 時の OOM 対策)。ディスクに RAM の 2 倍以上の空き容量がある (RDB/AOF の書き換え用)。
- サーバー同士が IP で到達できる (Redis の構成では IP を使用します)。
- サーバー間で …、……、…、…… のポートが開放されており、これらのポートは他のサービスで使用されていない。
- ……サーバーが OS の AppStream リポジトリ (または EPEL) に…サーバーが rpms.remirepo.net と EPEL (dl.fedoraproject.org) のリポジトリに………サーバーが Ubuntu の universe リポジトリに…サーバーが packages.redis.io リポジトリに……アクセスできる、または社内ミラーが設定されている。
- サーバーに他の Redis/Valkey がインストールされていない (バージョンの競合)。
- root または sudo 権限でログインしている。メンテナンスウィンドウが承認されている。
ガイドのフェーズ
- OS の準備 (すべてのサーバー) — ホスト名: … · ホスト名: … · システムの更新とツール · カーネルパラメータ (sysctl) · sysctl の設定を反映する
- インストール (すべてのサーバー) — Remi と EPEL のリポジトリを追加する · packages.redis.io リポジトリを追加する · … をインストールする · ディストリビューションのデフォルトサービスを無効にする · SELinux のポート定義
- インスタンスの構成 — systemd サービステンプレート (…@.service) · cluster-….conf: … · cluster-….conf: … · cluster-….conf: … · データディレクトリとパスワード · インスタンスを起動する …
- クラスタを作成する — すべてのインスタンスへの接続を確認する · クラスタを作成する (--cluster create) · クラスタを確認する (--cluster check) · レプリカの配置を検証する
- 検証とフェイルオーバーテスト — 書き込み/読み取りテスト · 計画的なフェイルオーバー (CLUSTER FAILOVER) · アプリケーションの接続
- 構築後 — スケーリング: ノードの追加とリシャード (参考) · バックアップ · 監視