1. はじめに
Redis の高可用性には、Sentinel モード
と クラスターの 2 つのモードがあります。モード
、この記事では、1 つのマスター、2 つのスレーブ、3 つのセンチネル
センチネル モードに基づいた Redis 高可用性サービスを構築します。
1. 目標と利点
1 つのマスター、2 つのスレーブ、および 3 つのセンチネル
Redis サービスは、基本的に中小規模のプロジェクトの高可用性要件を満たすことができます。 Redis インスタンスを監視および管理します。この記事を通じて、次の目標が達成されます。
Sentinel モード サービスバージョン サービスは単一マシンと比較され、信頼性が高く、読み取りと書き込みが分離され、データ量が大きくなく、信頼性と安定性が必要なシナリオに適しています。
Spring フレームワークを介してセンチネル モードに接続し、運用を完了します。環境共通の操作。
2. ポート計画
ポート計画は、このソリューションを完成させるための最初のステップです。
2. 単一マシン シミュレーション
単一マシン シミュレーションとは、物理マシンまたは仮想マシン上で動作をシミュレーションし、元の中間プロセスを復元することです。通常、学習または開発段階で使用されます。
操作を簡素化するために、Redis サービスは次の規則を設けています: データはディスクに永続化されません。サービス インスタンスはフォアグラウンド プロセスとして実行されます。ノード構成ファイルはデフォルトの構成ファイルをテンプレートとして使用します。パスワードの確認。
(1) サービス計画
1. Redis インスタンス
サービスを初めて開始するとき、どのノードがマスター ノードであるかが明確にわかります。が長時間実行されており、マスター/スレーブの切り替えが発生した場合、どのノードがマスター ノードであるかを表示することはできないため、コマンド ラインを介して間接的にクエリする必要があります。
#ノード | ホスト | ポート | ロール | 追加の構成 |
node01 | 127.0.0.1 | 6380 | 初回起動時のマスター サービスとして | |
node02 | 127.0.0.1 | 6381 | 初回起動時のスレーブ サービスとして | 127.0 のレプリカ。 0.1 6380 |
node03 | 127.0.0.1 | 6382 | 初回起動時のスレーブ サービスとして | replicaof 127.0. 0.1 6380 |
追加構成とは、Redis サービス インスタンスが初めて起動されるときのノード構成ファイル内の新しい構成を指します。
2. Sentinel サービス
Sentinel サービス ノード間にマスターとスレーブの区別はなく、すべてのノードは平等な立場にあります。メイン サービスで例外が発生すると、センチネル サービスは投票戦略をトリガーし、Redis インスタンスのスレーブ ノードから候補を新しいメイン サービスとして選択します。
#ノード
ホスト |
ポート |
追加構成 |
|
node01
127.0.0.1 |
26380 |
センチネル モニター mymaster 127.0.0.1 6380 2 |
|
node02
127.0.0.1 |
26381 |
センチネル モニター mymaster 127.0.0.1 6380 2 |
|
node03
127.0.0.1 |
26382 |
センチネル モニター mymaster 127.0.0.1 6380 2 |
|
(2) サービス設定
1. Redis インスタンス
ノードの初期設定ファイルは、デフォルトの設定ファイルをテンプレートとして使用します。
node01 と node02 が設定ファイルを初期化すると、ノード間のマスター/スレーブ関係が表示され、次の設定が追加されます:
replicaof 127.0.0.1 6380
ログイン後にコピー
2. Sentinel サービス
初期設定ノードの設定ファイルは次のとおりです。 デフォルトの設定ファイルはテンプレートです。
node01、node02、node03 が設定ファイルを初期化した後、次の設定を追加します。
sentinel monitor mymaster 127.0.0.1 6381 2
ログイン後にコピー
(3) サービス管理
テストまたは学習する場合は、次の設定を追加することをお勧めします。フォアグラウンド プロセスを使用してサービスを管理すると、単一障害点をシミュレートしたり、ログを表示したり、マスター/スレーブの切り替えを観察したりするのに便利です。
本番環境では、スーパーバイザーを使用してサービスを管理することをお勧めします。これは、管理が簡単なだけでなく、異常終了後にサービスを自動的に再起動できます。高可用性シナリオでは 3 台の物理マシンが使用されます。
1. Redis インスタンス
/usr/local/redis/bin/redis-server /usr/local/redis/conf/ms/redis80.conf --port 6380 --save '' --daemonize no
/usr/local/redis/bin/redis-server /usr/local/redis/conf/ms/redis81.conf --port 6381 --save '' --daemonize no
/usr/local/redis/bin/redis-server /usr/local/redis/conf/ms/redis82.conf --port 6382 --save '' --daemonize no
ログイン後にコピー
2. Sentinel サービス
/usr/local/redis/bin/redis-sentinel /usr/local/redis/conf/ms/sentinel280.conf --port 26380 --daemonize no
/usr/local/redis/bin/redis-sentinel /usr/local/redis/conf/ms/sentinel281.conf --port 26381 --daemonize no
/usr/local/redis/bin/redis-sentinel /usr/local/redis/conf/ms/sentinel282.conf --port 26382 --daemonize no
ログイン後にコピー
3. クライアント統合
クライアント実装とは、SpringBoot に基づく統合を指します。実装ステップ: まず、基礎としての統合を完了し、次に、運用ニーズに基づいて新しい機能を追加します。
(1) 基本統合
基本統合の内容は、Java クライアントを使用して高可用性センチネル モード Redis サービスに接続し、単一ノード障害の通常動作の要件を達成することです。サービス。
1. グローバル設定ファイル
グローバル設定ファイルに追加される設定情報は次のとおりです: master
パラメータはセンチネル サービス名で、これがデフォルト値です。nodes
パラメータはセンチネル サービス リスト (Redis インスタンス サービス リストではありません); database
パラメータはデータベースです。
spring:
redis:
database: 0
sentinel:
nodes: 192.168.181.171:26380,192.168.181.171:26381,192.168.181.171:26382
master: mymaster
ログイン後にコピー
2. 統合構成
は SpringBoot システムに統合されています。中心となるのは、LettuceConnectionFactory
接続ファクトリを作成することです。Redis 接続ファクトリを通じて、スムーズに接続ファクトリを作成できます。スプリング システムの他の部分に継承されます。
@Configuration
public class RedisSentinelConfig {
@Autowired
private RedisProperties redisProperties;
@Bean
public RedisConnectionFactory lettuceConnectionFactory() {
RedisProperties.Sentinel sentinel = redisProperties.getSentinel();
HashSet<String> nodes = new HashSet<>(sentinel.getNodes());
String master = sentinel.getMaster();
RedisSentinelConfiguration config = new RedisSentinelConfiguration(master, nodes);
config.setDatabase(redisProperties.getDatabase());
return new LettuceConnectionFactory(config);
}
}
ログイン後にコピー
(2) 読み取りと書き込みの分離
基本的な統合は、高可用性 Redis サービスのプロセスのみを実装します。運用環境では、他の構成を追加する必要があります: カスタム接続の変更データベースのシリアル番号、接続の承認、接続プールの構成、読み取りと書き込みの分離。
高可用性を前提として、メインライブラリが書き込みリクエストを完了し、スレーブライブラリが読み出しリクエストを完了する(スレーブライブラリは書き込みを許可しない)という、読み出しと書き込みの分離という特徴が生まれます。
rree
以上がRedis セントリー モードでの高可用性の分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。