Redis クラスター構築に関する初心者向けチュートリアル

王林
リリース: 2021-01-04 09:28:02
転載
2022 人が閲覧しました

Redis クラスター構築に関する初心者向けチュートリアル

redis クラスターの構築

(学習ビデオ共有: redis ビデオ チュートリアル)

正式な内容を紹介する前に, まずはスタンドアロン版のredisを構築する手順を紹介します。

  1. redis 圧縮パッケージをダウンロードし、圧縮ファイルを解凍します;
  2. 解凍された redis ファイル ディレクトリに入力し (この時点で Makefile ファイルが表示されます)、redis をコンパイルしますソース ファイル;
  3. コンパイルされた redis ソース ファイルを /usr/local/redis ディレクトリにインストールします。/local ディレクトリに redis ディレクトリがない場合は、新しい redis ディレクトリが自動的に作成されます。
  4. /usr/local/redis/bin ディレクトリに入り、./redis-server で redis を直接起動します (この時点では redis はフロントエンドで起動します);
  5. redis の起動モードをバックエンド起動に変更します。具体的な方法は、解凍した redis ファイルの下に redis を置き、.conf ファイルを /usr/local/redis/bin ディレクトリにコピーし、redis.conf ファイルを変更します -> daemonize: no to daemonize: yse;
  6. /bin ディレクトリに ./redis を渡す -server redis.conf で redis が開始されます (この時点ではバックグラウンドで起動します)。
    以上で、redis スタンドアロン版のインストールと起動が完了しました。
    画像付きの詳細な手順については、「-> redis の概要」を参照してください。
    冗長になっていることをお許しください。わかりました。redis クラスターの構築というトピックに戻りましょう。

1. Redis クラスターの概要

  • redis は、インターネットで愛用されているオープン ソースのキー値ストレージ システムです。会社の好意。 redis3.0 バージョンより前は、シングルトン モードのみがサポートされ、バージョン 3.0 以降ではクラスターのみがサポートされていました。ここでは redis3.0.0 バージョンを使用しています。
  • redis クラスターは P2P モードを採用しており、完全に分散化されており、セントラル ノードまたはエージェント ノードがあります。
  • Redis クラスターには統合された入り口がありません。クライアントがクラスターに接続するとき、クラスター内のどのノードにも接続できます。クラスター内のノードは、次のノードと通信します。 (PING-PONG メカニズム)、各ノードは Redis インスタンスです;
  • クラスターの高可用性を実現するため、つまりノードが健全かどうか (正常に使用できるかどうか) を判断します。 、redis-cluster にはこのような投票フォールト トレランス メカニズムがあります。クラスター内のノードの半分以上がノードがダウンしていると投票した場合、このノードは失敗します。これは、ノードがダウンしているかどうかを判断する方法です;
  • それでは、クラスタがダウンしているかどうかを判断するにはどうすればよいですか? -> クラスタ内のいずれかのノードがダウンしていて、そのノードにスレーブ ノード (バックアップ ノード) がない場合)、次にこれ クラスターがダウンしています。これは、クラスターがダウンしているかどうかを判断する方法です。
  • では、いずれかのノードがハングアップすると (スレーブ ノードがない場合)、クラスターがハングアップするのはなぜでしょうか? -> クラスターには 16384 個の組み込みスロット (ハッシュ スロット) があり、すべての物理ノードがこれらの 16384[0-16383] スロットにマッピングされているか、これらのスロットが各ノードに均等に分散されているためです。データの一部 (キーと値) を Redis クラスターに保存する必要がある場合、Redis はまずキーに対して crc16 アルゴリズムを実行し、次に結果を取得します。次に、この結果の余りを 16384 まで計算します。この余りはスロット [0 ~ 16383] の 1 つに対応し、キーと値がどのノードに格納されているかを決定します。したがって、ノードがハングアップすると、そのノードに対応するスロットが使用できなくなり、クラスターが正常に動作しなくなります。
  • 要約すると、各 Redis クラスターには理論的には最大 16,384 個のノードを含めることができます。

2. クラスター構築に必要な環境
2.1 投票フォールト トレランス メカニズムではノードの半分以上がそれを認識する必要があるため、Redis クラスターには少なくとも 3 つのノードが必要です。あるノードが故障しダウンしているため、2ノードでクラスタを構成できません。
2.2 クラスターの高可用性を確保するには、各ノードにスレーブ ノード、つまりバックアップ ノードが必要であるため、Redis クラスターには少なくとも 6 台のサーバーが必要です。それほど多くのサーバーがなく、それほど多くの仮想マシンを起動できないため、ここで構築するのは疑似分散クラスターです。つまり、1 つのサーバーで 6 つの Redis インスタンスを仮想的に実行し、ポート番号が変更されます。 (7001-7006) もちろん、実際の本番環境の Redis クラスターのセットアップはここと同じです。
2.3 Ruby のインストール
3. クラスターを構築するための具体的な手順は次のとおりです (ファイアウォールをオフにすることに注意してください)
3.1 usr/ に新しい redis-cluster ディレクトリを作成しますクラスターノードを保存するローカルディレクトリ
Redis クラスター構築に関する初心者向けチュートリアル
3.2 redis ディレクトリの下の bin ディレクトリにあるすべてのファイルを /usr/local/redis-cluster/redis01 ディレクトリにコピーします。ここにディレクトリがあれば、自動的に作成されます。操作コマンドは次のとおりです (現在のパスに注意してください):

cp -r redis/bin/ redis-cluster/redis01
ログイン後にコピー

Redis クラスター構築に関する初心者向けチュートリアル
3.3 redis01 ディレクトリ内のスナップショット ファイル dump.rdb を削除し、ディレクトリ内の redis.cnf ファイルを変更します 具体的には、ポート番号を 7001 に変更する、ともう 1 つは、クラスター作成モードでコメントを開くことです。以下の図に示すように:
dump.rdb ファイルを削除します。
Redis クラスター構築に関する初心者向けチュートリアル
ポート番号を 7001 に変更します。デフォルトは 6379
Redis クラスター構築に関する初心者向けチュートリアル
のコメントをオンにします。クラスターが有効なはい
Redis クラスター構築に関する初心者向けチュートリアル
3.4 redis-cluster/redis01 ファイルの 5 つのコピーを redis-cluster ディレクトリ (redis02-redis06) にコピーし、6 つの Redis インスタンスを作成し、Redis クラスターの 6 つのノードをシミュレートします。 。次に、残りの 5 つのファイルの下にある redis.conf のポート番号をそれぞれ 7002 ~ 7006 に変更します。以下の図に示すように:
redis02-06 ディレクトリを作成します
Redis クラスター構築に関する初心者向けチュートリアル

redis.conf ファイルのポート番号を 7002-7006
Redis クラスター構築に関する初心者向けチュートリアル# に変更します# 3.5 それでは起動 すべてのredisノードを一つずつ起動するのは面倒なので、redisノードを一括起動するためのスクリプトファイルを用意します コマンドはstart-all.sh ファイルの内容は以下の通りです:

cd redis01
./redis-server redis.conf
cd ..
cd redis02
./redis-server redis.conf
cd ..
cd redis03
./redis-server redis.conf
cd ..
cd redis04
./redis-server redis.conf
cd ..
cd redis05
./redis-server redis.conf
cd ..
cd redis06
./redis-server redis.conf
cd ..
ログイン後にコピー
3.6 起動スクリプト ファイルの作成 その後、スクリプトを実行できるように権限を変更する必要があります。手順は次のとおりです。

##3.7 start-all.sh スクリプトを実行して 6 つの Redis ノードを起動します

Redis クラスター構築に関する初心者向けチュートリアル
3.8 ok. これまでのところ、6 つの Redis ノードは正常に起動しています。 , クラスターが正式に開始されます。上記はすべて準備条件です。長く見えるので面倒だと思わないでください。実際、上記の手順は 6 つの Redis インスタンス (6 ノード) を作成して起動するという一文だけです。


クラスターを構築するには、redis 解凍ファイルのソース コードに含まれるツール (スクリプト ファイル) を使用する必要があります。このツールは Ruby スクリプト ファイルであるため、このツールの実行には、JVM 上で Java 言語を実行するのと同等の Ruby 実行環境が必要です。したがって、ruby をインストールする必要があります。手順は次のとおりです: Redis クラスター構築に関する初心者向けチュートリアル

chmod +x start-all.sh
ログイン後にコピー

次に、ruby 関連のパッケージをサーバーにインストールする必要があります。ここでは redis-3.0.0.gem を使用しています。注意してください: redis と Ruby のバージョン パッケージのバージョンを一貫した状態に保つことが最善です。 Ruby パッケージをサーバーにインストールします。図に示すように、ダウンロードしてインストールする必要があります。
インストール コマンドは次のとおりです。

yum install ruby
ログイン後にコピー


3.9 前のステップで、ruby ツールに必要な実行環境と Ruby パッケージがインストールされました。次に、ruby スクリプト ツールをコピーする必要がありますusr/local/redis-cluster ディレクトリにコピーします。では、この Ruby スクリプト ツールはどこにあるのでしょうか?前述したように、redis 解凍ファイル、つまり redis/src ディレクトリ内の redis-trib.rb ファイルのソース コード内にあります。 Redis クラスター構築に関する初心者向けチュートリアル

Redis クラスター構築に関する初心者向けチュートリアル 3.10 Ruby ツール (redis-trib.rb) を redis-cluster ディレクトリにコピーします。手順は次のとおりです。スクリプト ファイルを使用する クラスターを構築する手順は次のとおりです。

gem install redis-3.0.0.gem
ログイン後にコピー

注: ここでは、独自のサーバー IP に基づいて、対応する IP アドレスを入力する必要があります。 Redis クラスター構築に関する初心者向けチュートリアル
Redis クラスター構築に関する初心者向けチュートリアル

yes を手動で入力する必要がある場所があります。

この時点で、Redi クラスターは正常に確立されています。テキストの最後の段落に注目してください。各ノードに割り当てられたスロット (ハッシュ スロット) が示されています。ここには合計 6 つのノードがあり、そのうち 3 つはスレーブ ノードであるため、3 つのマスター ノードは 0 ~ 5460、5461 にマップされます。 -10922、10933-16383ソルト。

3.11 最後にクラスター ノードに接続します。任意のノードに接続するだけです:

redis01/redis-cli -p 7001 -c
ログイン後にコピー

注意:一定要加上-c,不然节点之间是无法自动跳转的!如下图可以看到,存储的数据(key-value)是均匀分配到不同的节点的:

Redis クラスター構築に関する初心者向けチュートリアル

四、结语
呼~~~长舒一口气…终于搭建好了Redis集群。
整个过程其实挺简单,本篇主要正对入门级别的小伙伴,插入了很多图片,所以显得冗长,希望大家多多理解,如果不当之处,还望及时指正~

最后,加上两条redis集群基本命令:
1.查看当前集群信息

cluster info
ログイン後にコピー

2.查看集群里有多少个节点

cluster nodes
ログイン後にコピー

相关推荐:redis数据库教程

以上がRedis クラスター構築に関する初心者向けチュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!