Ubuntu Redis Sentinel設定 — Redisの高可用性・自動フェイルオーバー

データベース

Redisを本番環境で運用するとき、「Masterが落ちたら自動で切り替えてほしい」というニーズは誰でも持ちます。Redis Sentinelはその自動フェイルオーバーを担う仕組みで、Ubuntu 24.04 LTSなら標準パッケージとしてすぐに使えます。本記事では実際にDockerコンテナ(Ubuntu 24.04)でインストールから動作確認まで実行した結果を載せます。

この記事のポイント

  • apt install redis-server redis-sentinel 一発で Redis 7.0.15 + Sentinel が入る
  • Sentinel は sentinel monitor 行でMasterを登録するだけで監視を開始できる
  • quorum(仲裁数)と down-after-milliseconds(障害検知時間)が設定の核心
  • 本番では Sentinel を3台以上用意してquorum=2にするのが鉄則
  • Ubuntu 24.04 の Redis 7.x は 22.04 の 6.x より ACL・パフォーマンスが強化されている

Redis Sentinelとは

RedisはデフォルトではシングルMasterの構成です。Masterが落ちると、手動で再起動するか別のサーバーを昇格させる作業が必要になります。これが深夜に発生したら大変です。

Redis Sentinelはそれを自動化するコンポーネントです。Sentinelプロセスが常にMasterを監視し、「一定時間応答がない」と判断したとき、自動でReplicaをMasterに昇格させます。これを自動フェイルオーバーと呼びます。

SentinelはRedisのクラスター機能(Redis Cluster)とは別物です。クラスターがデータの水平分散を担うのに対し、SentinelはMaster1台の高可用性(HA)を担うという違いがあります。まずVPS1〜2台で運用している個人開発者には、クラスターより Sentinel のほうがシンプルで導入しやすいです。

機能 Redis Sentinel Redis Cluster
目的 Master の高可用性(HA) データの水平分散
自動フェイルオーバー あり あり
最小構成 Master + Replica + Sentinel×1 Master×3 + Replica×3(計6台)
向いている用途 VPS1〜3台の小規模本番 大規模・高スループット
複雑さ 低〜中

前提環境

  • OS:Ubuntu 24.04 LTS(Noble Numbat)— Docker公式イメージ ubuntu:24.04 で実行
  • Redis バージョン:7.0.15(apt からインストール)
  • 検証日:2026年6月14日

注意

本記事のコマンドは Ubuntu 24.04 LTS で検証しています。Ubuntu 22.04 では Redis 6.0.16 が入ります(後述のバージョン比較表を参照)。本番では長期サポートのある Ubuntu 24.04 LTS を推奨します。

インストール手順

手順1:パッケージを更新する




ubuntu@server: ~
$ sudo apt update
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Get:2 http://security.ubuntu.com/ubuntu noble-security InRelease [126 kB]
Reading package lists… Done

手順2:redis-server と redis-sentinel をインストールする

Redis Sentinel は redis-sentinel パッケージに含まれています。redis-server と同時にインストールするのが便利です。




ubuntu@server: ~
$ sudo apt install -y redis-server redis-sentinel
Get:5 … redis-tools amd64 5:7.0.15-1ubuntu0.24.04.4 [1166 kB]
Get:6 … redis-sentinel amd64 5:7.0.15-1ubuntu0.24.04.4 [12.2 kB]
Get:7 … redis-server amd64 5:7.0.15-1ubuntu0.24.04.4 [51.7 kB]
Setting up redis-server (5:7.0.15-1ubuntu0.24.04.4) …
Setting up redis-sentinel (5:7.0.15-1ubuntu0.24.04.4) …
redis-server / redis-sentinel インストールログ(Ubuntu 24.04 LTS 実測)
redis-server / redis-sentinel インストールログ(Ubuntu 24.04 LTS 実測)

インストール後に以下のファイルが自動生成されていることを確認します。




ubuntu@server: ~
$ ls -la /etc/redis/
-rw-r—– 1 redis redis 106604 Apr 12 redis.conf
-rw-r—– 1 redis redis 14052 Apr 12 sentinel.conf
$ redis-server –version
Redis server v=7.0.15 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64
$ redis-sentinel –version
Redis server v=7.0.15 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64

redis-sentinel は実体としては Redis と同じバイナリです。--sentinel フラグまたは設定ファイルで Sentinel モードで起動します。

Ubuntu 22.04 / 24.04 バージョン比較

バージョンを選ぶ前に、どちらのUbuntuを使うべきか確認しておきましょう。実際にDockerコンテナで apt-cache show を実行して確認しました。

Ubuntu 22.04 / 24.04 別 Redis バージョン比較(実測)
Ubuntu 22.04 / 24.04 別 Redis バージョン比較(実測)

Ubuntu 22.04 は Redis 6.0.16、Ubuntu 24.04 は Redis 7.0.15 が入ります。Redis 7.x は ACL(アクセスコントロールリスト)の強化、パフォーマンス改善、新しいコマンドが追加されており、新規で構築するなら Ubuntu 24.04 + Redis 7.x を選ぶのが正解です。

sentinel.conf の設定

インストール後に /etc/redis/sentinel.conf が生成されています。このファイルを編集して Sentinel を設定します。

デフォルト設定の確認

実際に Ubuntu 24.04 のコンテナで確認したデフォルト値(コメント行を除く)が以下です。

sentinel.conf の設定例(Ubuntu 24.04 実測)
sentinel.conf の設定例(Ubuntu 24.04 実測)



ubuntu@server: ~ — /etc/redis/sentinel.conf
protected-mode no
port 26379
daemonize yes
pidfile /run/sentinel/redis-sentinel.pid
logfile /var/log/redis/redis-sentinel.log
dir /var/lib/redis

# Master の監視設定
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes

重要な設定値を解説します。

設定キー デフォルト値 意味
port 26379 Sentinel が待ち受けるポート(デフォルト 26379)
sentinel monitor — (要設定) 名前 IPアドレス ポート quorum の形式で Master を登録する
quorum 2(デフォルト設定) フェイルオーバーを開始する判断に必要な Sentinel の合意数
down-after-milliseconds 30000(30秒) Master が応答しない時間がこの値を超えたら障害と判断
failover-timeout 180000(3分) フェイルオーバー完了のタイムアウト時間
parallel-syncs 1 フェイルオーバー後に新Masterと同期する Replica の並列数

quorum の考え方

quorum(クォーラム)はフェイルオーバーの「仲裁数」です。Sentinel が3台いて quorum=2 のとき、2台以上が「Masterは落ちた」と判断したときにフェイルオーバーを開始します。Sentinel が1台だと quorum=1 で動作しますが、本番ではネットワーク分断(スプリットブレイン)を防ぐために3台・quorum=2が推奨されます。

本番向け sentinel.conf の設定例

Masterサーバーのアドレスを実際のIPに変更し、down-after-milliseconds を短くすることで障害検知を速くできます。




ubuntu@sentinel-server: ~ — /etc/redis/sentinel.conf(本番設定例)
port 26379
daemonize yes
logfile /var/log/redis/redis-sentinel.log

# ← Master サーバーのIPに変更(192.168.1.10 は例)
sentinel monitor mymaster 192.168.1.10 6379 2

# 10秒応答なしで障害と判断(デフォルト 30秒 を短縮)
sentinel down-after-milliseconds mymaster 10000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 60000
sentinel deny-scripts-reconfig yes

Replica の設定(redis.conf)

Masterに対してデータを同期するReplicaの設定も確認しましょう。Replicaの /etc/redis/redis.conf に以下を追記します。




ubuntu@replica-server: ~ — /etc/redis/redis.conf(追記箇所)
# Replica の redis.conf に追記する(Master のIPとポートを指定)
replicaof 192.168.1.10 6379

# 任意:Replica を読み取り専用にする(デフォルトで yes)
replica-read-only yes

Sentinel + Replica の動作確認

Sentinel を起動する

設定ファイルを編集したら、systemctl で Sentinel を起動します。




ubuntu@sentinel-server: ~
$ sudo systemctl start redis-sentinel
$ sudo systemctl enable redis-sentinel
Created symlink /etc/systemd/system/redis.target.wants/redis-sentinel.service
$ sudo systemctl status redis-sentinel
● redis-sentinel.service – Advanced key-value store
Loaded: loaded (/lib/systemd/system/redis-sentinel.service; enabled)
Active: active (running) since …

Sentinel の監視状態を確認する

実際にUbuntu 24.04コンテナで「Master + Replica + Sentinel」構成を起動し、sentinel masters コマンドで確認した結果です。status=ok が表示されれば Sentinel が正常にMasterを監視中です。

Redis Sentinel 監視状態の確認(Ubuntu 24.04 LTS 実測)
Redis Sentinel 監視状態の確認(Ubuntu 24.04 LTS 実測)



ubuntu@sentinel-server: ~
$ redis-cli -p 26379 INFO sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
master0:name=mymaster,status=ok,address=127.0.0.1:6379,slaves=1,sentinels=1

$ redis-cli -p 26379 sentinel masters
name mymaster
ip 127.0.0.1
flags master
quorum 2
num-slaves 1

Master + Replica のレプリケーション確認

MasterとReplicaの接続状況も確認しましょう。実際にDockerコンテナ内でMaster(port 6379)とReplica(port 6380)を起動して確認しました。

Master + Replica 構成の確認(Ubuntu 24.04 LTS 実測)
Master + Replica 構成の確認(Ubuntu 24.04 LTS 実測)



ubuntu@master-server: ~
$ redis-cli -p 6379 INFO replication
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6380,state=online,offset=156,lag=0
master_failover_state:no-failover
repl_backlog_active:1

connected_slaves:1 が表示され、Replicaがオンラインであることが確認できました。

フェイルオーバーの仕組みと確認方法

Sentinelが実際にフェイルオーバーを行う流れは以下の通りです。

  1. SentinelがMasterへのPINGが down-after-milliseconds(デフォルト30秒)応答なしを検知する
  2. Sentinelが SDOWN(主観的ダウン)を宣言する
  3. quorum数(デフォルト2台)のSentinelが同意すると ODOWN(客観的ダウン)に移行する
  4. フェイルオーバーが開始し、ReplicaのいずれかがMasterに昇格する
  5. 他のReplicaは新しいMasterを指すように自動更新される
  6. クライアントは sentinel get-master-addr-by-name mymaster で新しいMasterのアドレスを取得できる

フェイルオーバーをテストするには、Masterプロセスを一時停止する方法が安全です。




ubuntu@master-server: ~ — フェイルオーバーテスト
# Sentinel にフェイルオーバーを手動で指示(テスト用)
$ redis-cli -p 26379 sentinel failover mymaster
OK

# フェイルオーバー後に新しい Master を確認
$ redis-cli -p 26379 sentinel get-master-addr-by-name mymaster
1) “192.168.1.11” ← 旧Replicaが新Masterに昇格
2) “6379”

注意

sentinel failover コマンドは本番環境では慎重に使用してください。テスト環境でフェイルオーバーが正常に機能することを確認してから、本番設定に適用することを推奨します。

サービスの自動起動設定(systemd)

本番環境では、Redis と Sentinel がサーバー再起動後に自動起動するよう設定します。




ubuntu@server: ~
# Redis サーバーの自動起動を有効化
$ sudo systemctl enable redis-server
Created symlink …/redis.target.wants/redis-server.service

# Sentinel の自動起動を有効化
$ sudo systemctl enable redis-sentinel
Created symlink …/redis.target.wants/redis-sentinel.service

# 起動状態を確認
$ sudo systemctl status redis-server redis-sentinel
● redis-server.service – Advanced key-value store
Active: active (running)
● redis-sentinel.service – Advanced key-value store
Active: active (running)

よくあるエラーと解決策

①エラー:Can't open the log file: Permission denied

Sentinelのログファイルへの書き込み権限がないときに発生します。




ubuntu@server: ~
$ sudo chown redis:redis /var/log/redis/
$ sudo chmod 750 /var/log/redis/
$ sudo systemctl restart redis-sentinel

②エラー:Sentinel が Master を認識しない

sentinel.confsentinel monitor 行のIPアドレスが間違っているか、ファイアウォールでポート6379が塞がれている場合です。




ubuntu@server: ~
# Master への接続確認
$ redis-cli -h 192.168.1.10 -p 6379 ping
PONG

# UFW でポートを開けていない場合
$ sudo ufw allow 6379/tcp
$ sudo ufw allow 26379/tcp

③エラー:NOAUTH Authentication required

Masterに認証パスワードが設定されているのにSentinelに設定されていない場合です。sentinel.conf に以下を追記します。




ubuntu@server: ~ — /etc/redis/sentinel.conf(認証設定)
# sentinel.conf に Master のパスワードを設定
sentinel auth-pass mymaster your_redis_password

④エラー:+sdown master mymaster がログに出続ける

SentinelがMasterをSDown(主観的ダウン)と判断している状態です。down-after-milliseconds の値が短すぎる、またはMasterへのネットワーク遅延が大きい場合です。




ubuntu@server: ~ — /var/log/redis/redis-sentinel.log
+sdown master mymaster 192.168.1.10 6379
+odown master mymaster 192.168.1.10 6379 #quorum 2/2
+failover-triggered master mymaster 192.168.1.10 6379
+promoted-slave slave 192.168.1.11:6379 192.168.1.11 6379 @ mymaster …
+failover-end master mymaster 192.168.1.10 6379

この場合は down-after-milliseconds を増やすか、ネットワークの遅延を改善します。

著者コメント

著者アイコン
著者アイコン

Redis Sentinel を初めて設定するとき、正直「設定項目が多くて何から始めればいいか分からない」と思いました。でも実際にやってみると、sentinel monitor の1行を書くだけで監視が始まるので、思ったよりシンプルです。VPS2台で Master + Sentinel の最小構成を試してみてから、本番の3台構成に移行するのが無難だと思います。

本番環境での推奨構成

個人VPSで Redis Sentinel を本番運用するなら、最低でも以下の構成を推奨します。

サーバー 役割 Redis ポート Sentinel ポート
server-1 Master + Sentinel-1 6379 26379
server-2 Replica + Sentinel-2 6379 26379
server-3 Replica + Sentinel-3(仲裁) 6379 26379

3台構成で quorum=2 にすると、1台が落ちてもフェイルオーバーが正常に判断できます。VPS費用を抑えたい場合は、Sentinel専用の軽量サーバー(1GBプラン)を使うのも有効です。

まとめ

Ubuntu 24.04 で Redis Sentinel を設定する手順をまとめます。

  • apt install redis-server redis-sentinel で Redis 7.0.15 + Sentinel が一括インストールできる(2026年6月現在)
  • Sentinel の設定は /etc/redis/sentinel.confsentinel monitor 行にMasterのIPとquorumを書くだけ
  • down-after-milliseconds(デフォルト30秒)と failover-timeout(デフォルト3分)を用途に応じて調整する
  • 本番では Sentinel を3台・quorum=2 にしてスプリットブレインを防ぐ
  • redis-cli -p 26379 INFO sentinelstatus=ok を確認すれば正常動作中
  • Ubuntu 24.04 の Redis 7.x は Ubuntu 22.04 の 6.x より ACL・パフォーマンスが向上しており、新規構築には 24.04 を推奨

Redis Sentinelを使えば、Masterが落ちても自動で切り替わる高可用性構成が自前VPSで実現できます。次のステップとして、VPS選びが気になる方は以下の比較記事も参考にしてください。

コメント

タイトルとURLをコピーしました