Redis (リモート辞書サーバー )は、非常に人気があり、広く使用されているオープンソースで、高速で分散型の効率的なメモリ内Key-Valueデータベース/データ構造サーバーです。
データベース、キャッシングレイヤー、メッセージブローカー、キューなど、さまざまなユースケースで効果を発揮する豊富な機能セットを提供します。 Webアプリケーション、チャットおよびメッセージングアプリケーション、ゲーム、リアルタイムデータ分析などに適用できます。
柔軟なデータ構造、読み取りパフォーマンスをスケーリングしてデータ損失を防ぐマスタースレーブ非同期レプリケーション、書き込みパフォーマンスをスケーリングするクライアント側シャーディング、メモリ内データをコンパクトな形式でディスクに書き込むための2つの形式の永続性、クラスタリング、およびパーティショニング。また、 Redis Sentinelを介した高可用性展開のための自動フェイルオーバーも備えています 、Luaスクリプト 、トランザクション 、その他多数。
SQLなしであること または非リレーショナルデータベース、 Redis 従来のデータベースシステム( MySQL / MariaDB など)に比べてパフォーマンス上の利点がいくつかあります。 、 PostgreSQL 、など)。従来のデータベースではすべてのデータをディスクまたは外部ソースに書き込んだり、ディスクまたは外部ソースから読み取ったりする必要があるのに対し、そのすべてのデータはメモリに常駐または格納されているため、アプリケーションに簡単にアクセスできます。
Redis は、頻繁に使用されるデータを常にデータベースに照会するのではなく、キャッシュされたデータ(アプリケーションのメインメモリスペース内に格納されている)の再利用を可能にするキャッシュの選択肢としてますます普及しています。つまり、 RDMSの素晴らしい仲間です。 (リレーショナルデータベース管理システム )最終的にアプリケーションのパフォーマンスを向上させるため。
この3部構成のRedis チュートリアルシリーズでは、 Redis Sentinel を使用したレプリケーション、高可用性など、Redisの主要な機能のいくつかを設定して使用する方法について説明します。 およびRedisクラスター 、記事は次のとおりです:
パート1 : CentOS 8でRedisレプリケーションをセットアップする方法(クラスターモードを無効にした場合) パート2 :CentOS8でSentinelを使用してRedisを高可用性に設定する方法 パート3 : CentOS 8で(クラスターモードが有効になっている)Redisクラスターをセットアップする方法このガイドでは、Redisレプリケーションを設定する方法を説明します (クラスターモードを無効にする ) CentOS 8 Linux。Redisのインストール、マスターとレプリカの構成、レプリケーションのテスト方法を含みます。
<強い色:赤;">重要 :Redisクラスター (つまり、レプリケーションクラスター )クラスタモードが無効になっている場合、単一のノードグループ(例:マスター)があります および1つまたは2つのレプリカ)クラスターモードが有効になっているRedisクラスターは、2つ以上のノードグループで構成されている場合があります(たとえば、3つのマスターがそれぞれ1つまたは2つのスレーブを持っています)。
前提条件:
- CentOS8がインストールされているサーバー
テスト環境のセットアップ
Redis Master Server: 10.42.0.247 Redis Replica1/Slave1: 10.42.0.21 Redis Replica2/Slave2: 10.42.0.34
Redisレプリケーション図の論理表現
上記のセットアップ(単一の読み取り/書き込みプライマリ/マスターノードと2つの読み取り専用レプリカノードがある)では、各ノードのクラスターのすべてのデータを含む単一のノードグループがあります。スレーブがマスターに接続すると、データベース全体の初期コピーを受け取り、以前にスレーブに存在していたデータはすべて破棄されます。
さらに、クライアントはマスターにのみ書き込むことができますが、クラスター内の任意のノードから読み取ることができます。また、書き込みがマスターで実行されると、接続されているすべてのスレーブに伝播され、スレーブデータセットがリアルタイムで更新されます。
ステップ1:CentOS8にRedisをインストールする
1。 まず、すべての CentOS 8にログインします SSH経由でノードを作成し、 Redisをインストールします 図のように、DNFパッケージマネージャーを使用して、すべてのノード(マスターとレプリカ)でパッケージ化します。
# dnf install @redis
2。 Redisの完了時 パッケージのインストール、 Redisを開始します サービスの場合は、システムが起動するたびに自動的に起動するようにし、次のように稼働しているかどうかを確認します。
# systemctl start redis # systemctl enable redis # systemctl status redis
3。 Redisであることも確認できます 次のように、ssコマンドを使用してリスニングポートを確認することにより、サーバーが稼働しています。
# ss -ltpn | grep redis-server
Redisサーバーポートの確認
ステップ2:Redisマスターサーバーの設定
4。 Redisは、 /etc/redis.confを使用して構成されます 構成ファイル、自己文書化されたサンプル構成ファイル。まず、元のファイルのバックアップを作成し、それを開いて、選択したコマンドラインエディタを使用して編集します。
# cp /etc/redis.conf /etc/redis.conf.org # vi /etc/redis.conf
5。 デフォルトでは、 Redis インスタンスは、ループバックで接続をリッスンして受け入れるように構成されています インターフェース、bindディレクティブを使用します。レプリカと通信するには、マスターが IPv4でリッスンするように構成する必要があります ループバックアドレスとそのLANIPアドレス、つまり 10.42.0.247 。
bind 127.0.0.1 10.42.0.247
6。 次に、プロテクトモードパラメータをno
に設定します 図のようにレプリカとの通信を可能にします。
protected-mode no
また、Redisはポート 6379でリッスンします これはport
を使用して設定されます 指令。これは、アプリケーションAPIまたはCLIクライアントと通信するためのデータポートです。
port 6379
Redisマスターサーバーの構成
7。 オプションでマスターレプリカを保護するには 通信では、 requirepassを使用してマスターを保護できます これにより、クライアント/レプリカは、コマンドを実行したり、レプリケーション同期プロセスを開始したりする前に認証パスワードを発行する必要があります。そうしないと、マスターはクライアント/レプリカ要求を拒否します(安全なパスワードを設定することを忘れないでください)。
次のオプションをデモンストレーションの目的で使用して、どのように機能するかを示します。
requirepass [email protected]
認証パスワードの設定
8。 また、Redisログは/var/log/redis/redis.logに保存されます ファイル、これはログファイルを使用して設定されます ディレクティブおよびデフォルトのサーバー冗長レベルは通知です 、ログレベルを使用して定義 パラメータ。
loglevel notice logfile /var/log/redis/redis.log
Redisログファイルとログレベルを設定する
9。 systemd以降 CentOS 8のデフォルトのシステムおよびサービスマネージャーです 、Redisを設定できます systemdとやり取りする 監視対象を設定することによる監視ツリー systemdへのパラメータ 。
supervised systemd
RedisスーパーバイザーをSystemdに設定
10。 必要な設定をすべて行ったら、ファイルを保存して閉じます。次に、 Redisを再起動します 新しい変更を適用するサービス。
# systemctl daemon-reload # systemctl restart redis
11。 Redisにアクセスするには サーバーの場合、 redis-cliを使用する必要があります (redis-serverへのコマンドラインインターフェイス)。デフォルトでは、 localhost上のサーバーに接続します ( 127.0.0.1 ポート6379 )。サーバーはパスワードを使用してクライアントから保護されているため、認証前にコマンドを実行すると失敗することに注意してください。
認証を使用する 次のスクリーンショットに示すように、認証パスワードを指定するコマンド。
# redis-cli 127.0.0.1:6379> client list 127.0.0.1:6379> AUTH [email protected] 127.0.0.1:6379> client list
RedisCLIを介してRedisサーバーにアクセスする
12。 レプリカに接続するには (次のセクションで説明するように構成した後)、-h
を使用します および-p
レプリカIPアドレス/ホスト名とポートをそれぞれ指定するオプション(そのポート 6379 ではありません) レプリカのファイアウォールで開いている必要があります。
# redis-cli -h 10.42.0.21 -p 6379
13。 次に、 Redisを開きます マスターへのインバウンド接続を許可するファイアウォールのサーバーデータポート。その後、図のようにfirewall-cmdコマンドを使用してファイアウォールルールを再読み込みします。
# firewall-cmd --zone=public --permanent --add-port=6379/tcp # firewall-cmd --reload
ステップ3:Redisレプリカ/スレーブサーバーの構成
14。 Redisをすばやく設定するには その場でレプリカとしてインスタンスを作成するには、 redis-cliを使用します ユーティリティを使用して、 REPLICAOFを呼び出します 示されているコマンド。
# redis-cli replicaof 10.42.0.247 6379 OR # redis-cli 127.0.0.1:6379> REPLICAOF 10.42.0.247 6379
マスターRedisインスタンスに接続する
15。 レプリケーション接続を永続的にするには、構成ファイルに次の変更を加える必要があります。元のファイルをバックアップすることから始めて、編集のために開きます。
# cp /etc/redis.conf /etc/redis.conf.org # vi /etc/redis.conf
16。 クライアントがレプリカに接続してデータを読み取れるようにするには、レプリカIPアドレスをbindディレクティブに追加します。
# replica1 bind 127.0.0.1 10.42.0.21 # replica2 bind 127.0.0.1 10.42.0.34
Redisインスタンスをレプリカとして設定する
17。 Redisインスタンスをレプリカとして設定するには 、レプリカのを使用します パラメータを設定し、マスターノードのIPアドレス(またはホスト名)とポートを値として設定します。
replicaof 10.42.0.247 6379
マスターに対して認証するためのレプリカの設定
18。 次に、マスターインスタンスはパスワードを使用して保護されているため、レプリカ構成でパスワードを設定して、 masterauthを使用してマスターに対して認証できるようにする必要があります。 パラメータ。
masterauth [email protected]
19。 さらに、レプリカがマスターとの接続を失った場合、またはレプリケーションが進行中の場合、レプリカは、場合によっては「期限切れ」でクライアントの要求に応答するように構成されます。 " データ。ただし、それが最初の同期の場合、データセットは空である可能性があります。この動作は、 reply-serve-stale-dataによって制御されます。 パラメータ。
そして、 Redis 2.6以降 デフォルトでは、レプリカは読み取り専用です。これは、レプリカ読み取り専用によって制御されます。 パラメータ。アプリケーションのニーズに合わせて、他のレプリカ構成を調整できます。
20。 必要な変更をすべて行ったら、すべてのレプリカでRedisサービスを再起動します。
# systemctl restart redis
21。 また、ポート 6379を開きます ファイアウォールでマスターとクライアントからレプリカへの接続を許可し、ファイアウォールルールを再ロードします。
# firewall-cmd --zone=public --permanenent --add-port=6379/tcp # firewall-cmd --reload
ステップ4:マスターレプリケーションのレプリケーションステータスを確認する
22。 かつてはマスターレプリカ レプリケーションの構成が完了したら、次のようにセットアップが正常に機能しているかどうかを確認できます。
マスターで、次のコマンドを実行します。
# redis-cli 127.0.0.1:6379> AUTH [email protected] 127.0.0.1:6379> info replication
マスターのRedis再配置情報を確認する
23。 また、次のようにレプリカ/スレーブのレプリケーションステータスを確認してください。
# redis-cli 127.0.0.1:6379> info replication
Redisレプリカ1のRedisレプリケーション情報を確認する
Redisレプリカ2のRedisレプリケーション情報を確認する
23。 次に、キー値を設定してレプリケーションをテストしましょう。 マスターインスタンスで、データがレプリカに同期されているかどうかを確認します。
マスターで、これを行います:
# redis-cli 127.0.0.1:6379> AUTH [email protected] 127.0.0.1:6379> set domain 'www.tecmint.com'
マスターインスタンスでキー値を設定する
24。 次に、図のようにデータがレプリカに同期されているかどうかを確認します。
# redis-cli 127.0.0.1:6379> get domain
レプリカのデータ同期ステータスを確認する
一部の書き込みを失うリスクからマスターインスタンスを保護する
25。 Redisには、マスターインスタンスが、十分なレプリカが利用できない場合に一部の書き込みが失われるリスクを指定された秒数に制限できるようにする機能があります。
これは、 N 未満の場合、マスターが書き込みの受け入れを停止できることを意味します。 接続されたレプリカ、 M以下のラグ min-replicas-to-writeによって制御される秒数 およびmin-replicas-max-lag それぞれオプション。
それらを設定するには、コメントを外し、/etc/redis.confのセットアップ要件に従って値を設定します 、次のスクリーンショットに示すように。この構成は、最後のpingからレプリカまでの10秒後に、オンラインのレプリカが2つ未満の場合、マスターは書き込みの受け入れを停止することを意味します。
min-replicas-to-write 2 min-replicas-max-lag 10
書き込みの損失からRedisマスターを保護する
/etc/redis.confの残りの部分でより多くのオプションを見つけることができます 構成ファイルおよびレプリケーションの詳細については、Redisのドキュメントを参照してください。
次の記事では、 CentOS 8でSentinelを使用して高可用性を実現するためにRedisを設定する方法について説明します。 。それまでは、ロックされたままで、下のコメントフォームを使用して考えや質問を共有することを忘れないでください。
共有は思いやりがあります…Facebookで共有するTwitterで共有するLinkedinで共有するRedditで共有する