DBAtlas · データベース運用アトラス

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) · アプリケーションの接続
  • 構築後 — スケーリング: ノードの追加とリシャード (参考) · バックアップ · 監視
環境に合わせた手順プランを開く →