Linux (Centos7) での redis5 クラスターの構築と使用方法の詳細な説明

Linux (Centos7) での redis5 クラスターの構築と使用方法の詳細な説明

1. 簡単な説明

2018年10月、Redisは安定版5.0をリリースし、さまざまな新機能を導入しました。その1つは、Rubyクラスタリング方式を廃止し、C言語で記述されたredis-cli方式に切り替えたことで、これによりクラスタ構築の複雑さが大幅に軽減されました。クラスターの更新については、Redis5 のバージョン ノートで次のように確認できます。

クラスター マネージャーは Ruby (redis-trib.rb) から redis-cli 内の C コードに移植されました。詳細については、`redis-cli --cluster help` を参照してください。

クラスターの構築方法については、Redisの公式サイトをご覧ください。接続は次のようになります。

https://redis.io/topics/cluster-tutorial

クラスターには少なくとも 3 つのノードがあり、それぞれにバックアップ ノードが必要です。 6 台のサーバーが必要です。

条件が限られていれば、擬似分散システムを構築できます。以下の手順は、Linux サーバー上に 6 ノードの Redis クラスターを構築する方法です。

2. クラスターを作成する手順

2.1. ディレクトリを作成する

新しいディレクトリを作成します: mkdir /usr/local/redis-cluster

2.2. ソースコードをダウンロードし、解凍してコンパイルする

​wget http://download.redis.io/releases/redis-5.0.0.tar.gz
tar xzf redis-5.0.0.tar.gz
redis-5.0.0 をインストールします
作る
インストール PREFIX=/usr/local/redis

3. 6つのRedis設定ファイルを作成する

6 つの設定ファイルを同じディレクトリに置くことはできません。ここでは次のように定義します。

クラスタのconf/7001/redis.conf
クラスタのconf/7002/redis.conf
クラスタのconf/7003/redis.conf
クラスタのconf/7004/redis.conf
クラスタのconf/7005/redis.conf
クラスタのconf/7006/redis.conf

一部の操作コマンドは参考用です:

redis.conf を /usr/local/redis/bin にコピーします。
/usr/local/redis/ に移動します
cp -r bin ../redis-cluster/redis01
/usr/local/redis-cluster/redis01 をコピーします。
rm dump.rdb #スナップショットを削除 vim redis.conf

設定ファイルの内容は次のとおりです。

ポート 7001 #ポート cluster-enabled yes #クラスターモードを有効にする cluster-config-file nodes.conf
cluster-node-timeout 5000 #タイムアウト appendonly yes
デーモン化 yes #バックグラウンド実行 protected-mode no #非保護モード pidfile /var/run/redis_7001.pid
bind 172.20.10.7 #127.0.0.1 をローカル IP アドレスに変更します。ifconfig を使用して IP アドレスを表示できます。

ポートと pidfile は、さまざまなフォルダーに応じて調整する必要があります。

残りの 5 つのインスタンスを作成します。

[root@master redis-cluster]# cp -r redis01/ redis02
[root@master redis-cluster]# cp -r redis01/ redis03
[root@master redis-cluster]# cp -r redis01/ redis04
[ルート@マスターredis-cluster]# cp -r redis01/ redis05
[ルート@マスター redis-cluster]# cp -r redis01/ redis06

redis02~redis06のredis.confのポートとpidfileをそれぞれ変更します。

4. ノードを起動する

それぞれ redis01、redis02、...redis06 ディレクトリに入り、次を実行します: ./redis-server ./redis.conf

6 つの Redis を同時に起動するバッチ ファイルを作成する

vim startall.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 ..

次にchmod u+x start-all.shを実行してstart-all.sh実行可能ファイルに変換します。

現在のディレクトリで開始します: ./startall.sh

表示: ps aux|grep redis

5. クラスターを起動する

使用するクラスターは Redis バージョン 5.0.0 で構築されているため、コンパイルされた redis ディレクトリ内の redis-cli ファイルを redis-cluster ディレクトリにコピーするだけで済みます。 (Redis バージョン 5.0 以降は C 言語を使用して直接起動します)

/usr/local/redis-cluster/redis-cli --cluster を作成します 172.20.10.7:7001 172.20.10.7:7002 172.20.10.7:7003 172.20.10.7:7004 172.20.10.7:7005 172.20.10.7:7006 --cluster-replicas 1

起動後、次のような成功メッセージが表示されます。

>>> 6 つのノードでハッシュ スロットの割り当てを実行しています...
マスター[0] -> スロット0 - 5460
マスター[1] -> スロット5461 - 10922
マスター[2] -> スロット 10923 - 16383
レプリカ 172.20.10.7:7004 を 172.20.10.7:7001 に追加
レプリカ 172.20.10.7:7005 を 172.20.10.7:7002 に追加
レプリカ 172.20.10.7:7006 を 172.20.10.7:7003 に追加
>>> 反アフィニティのスレーブ割り当てを最適化しようとしています
[警告] 一部のスレーブはマスターと同じホストにあります
172.20.10.7:7001 ...
 スロット:[0-5460] (5461スロット) マスター
メートル: d6fed6f21269b8469a3076ac5fb168bd20f70c26 172.20.10.7:7002
 スロット:[5461-10922] (5462スロット) マスター
51a0f62dacead745ce5351cdbe0bdbae553ce413 172.20.10.7:7003
 スロット:[10923-16383] (5461 スロット) マスター
45cc35740ac67f7988bb75325871ba12d08a76e4 172.20.10.7:7004
 a4128b5e581c3722acd9b093c5f29f5056f680b0 を複製する
668054fe16cdf8741152cae863f5c636ed18b803 172.20.10.7:7005
 複製 d6fed6f21269b8469a3076ac5fb168bd20f70c26
s: ae39b7db285703f8c08412d6b04998c60a634295 172.20.10.7:7006
 51a0f62dacead745ce5351cdbe0bdbae553ce413 を複製します
上記の設定を行えますか? (同意する場合は「はい」と入力してください): はい

はいと入力してEnterキーを押します

>>> ノード構成が更新されました
>>> 各ノードに異なる構成エポックを割り当てる
>>> クラスターに参加するためにCLUSTER MEETメッセージを送信する
クラスターの参加を待機中
......
>>> クラスター チェックを実行しています (ノード 172.20.10.7:7001 を使用)
172.20.10.7:7001 ...
 スロット:[0-5460] (5461スロット) マスター
 追加のレプリカ 1 個
メートル: d6fed6f21269b8469a3076ac5fb168bd20f70c26 172.20.10.7:7002
 スロット:[5461-10922] (5462スロット) マスター
 追加のレプリカ 1 個
45cc35740ac67f7988bb75325871ba12d08a76e4 172.20.10.7:7004
 スロット: (0 スロット) スレーブ
 a4128b5e581c3722acd9b093c5f29f5056f680b0 を複製する
51a0f62dacead745ce5351cdbe0bdbae553ce413 172.20.10.7:7003
 スロット:[10923-16383] (5461 スロット) マスター
 追加のレプリカ 1 個
668054fe16cdf8741152cae863f5c636ed18b803 172.20.10.7:7005
 スロット: (0 スロット) スレーブ
 複製 d6fed6f21269b8469a3076ac5fb168bd20f70c26
s: ae39b7db285703f8c08412d6b04998c60a634295 172.20.10.7:7006
 スロット: (0 スロット) スレーブ
 51a0f62dacead745ce5351cdbe0bdbae553ce413 を複製します
[OK] すべてのノードがスロット構成に同意します。
>>> 空きスロットがあるか確認します...
>>> スロットのカバレッジを確認してください...
[OK] 16384 スロットすべてがカバーされました。

この時点で、Reids5 クラスターが構築されます。

6. クラスター操作

6.1. クラスターをシャットダウンする

方法1:

Redis5 はクラスターをシャットダウンするためのツールを提供しており、次のディレクトリにあります。

/root/redis-5.0.0/utils/create-cluster

このファイルを開き、次に示すようにポートを独自のものに変更します。

ポート PROT は 7000 に設定され、NODES は 6 に設定され、ツールは自動的に 1 を追加して、操作用に 6 つのノード 7001 ~ 7006 を生成します。

下を見てパスを変更し、IPアドレスを追加します。追加しない場合は、デフォルトのローカル127.0.0.1

変更後、次のコマンドを実行してクラスターをシャットダウンします。

/root/redis-5.0.0/utils/create-cluster/create-cluster stop

方法2:

create-clusterディレクトリにスクリプトファイルを作成します: vim shut down.sh
内容は以下のとおりです。

/usr/local/redis-cluster/redis-cli -c -h 172.20.10.7 -p 7001 シャットダウン
/usr/local/redis-cluster/redis-cli -c -h 172.20.10.7 -p 7002 シャットダウン
/usr/local/redis-cluster/redis-cli -c -h 172.20.10.7 -p 7003 シャットダウン
/usr/local/redis-cluster/redis-cli -c -h 172.20.10.7 -p 7004 シャットダウン
/usr/local/redis-cluster/redis-cli -c -h 172.20.10.7 -p 7005 シャットダウン
/usr/local/redis-cluster/redis-cli -c -h 172.20.10.7 -p 7006 シャットダウン

次にchmod u+x shutdown.shを実行してshutdown.shを実行可能ファイルに変換します。

現在のディレクトリから開始: ./shutdown.sh

表示: ps aux|grep redis

公式: /usr/local/redis-cluster/redis-cli -a xxx -c -h 192.168.5.100 -p 8001

ヒント: -a はサーバのパスワードにアクセスし、-c はクラスタ モードを示し、-h は IP アドレスを指定し、-p はポート番号を指定します。

6.2. クラスターを再起動する

/root/redis-5.0.0/utils/create-cluster/create-cluster start

6.3. スクリプトファイルを使用してクラスターを起動する

vim startall.sh に次の内容を追加します: (自分の IP アドレスを変更することを忘れないでください)

/usr/local/redis-cluster/redis-cli --cluster を作成します 172.20.10.7:7001 172.20.10.7:7002 172.20.10.7:7003 172.20.10.7:7004 172.20.10.7:7005 172.20.10.7:7006 --cluster-replicas

開始: ./startall.sh

7. テストクラスター

redis-clusterディレクトリで実行する

redis01/redis-cli -h 192.168.25.153 -p 7002 -c

-cはクラスタモードでRedisに接続することを意味しており、-hはIPアドレスを指定し、-pはポート番号を指定します。

クラスターノード クラスターノード情報を照会する

クラスター情報クエリクラスターステータス情報

要約する

以上が、編集者が紹介した Linux (Centos7) での redis5 クラスターの構築と使用の詳細な説明です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • Redis クラスターを構築する 3 つの方法の詳細な説明
  • Docker ベースの Redis クラスターの構築方法
  • Docker を使用して Redis マスター スレーブ レプリケーション クラスターを構築する
  • Redis の自動インストールとクラスタ実装プロセス
  • docker ベースの redis-sentinel クラスターの構築例
  • Redis クラスターの構築プロセス (非常に詳細、初心者向け)

<<:  phpstudy から Linux への MySQL の移行に関するチュートリアル

>>:  JavaScript プロトタイプのデータ共有とメソッド共有の実装を調べる

推薦する

Tomcat のインストール後に起こりうる問題の紹介

1. Tomcatサービスが開いていませんブラウザのアドレスバーにlocalhost:8080と入力...

Vue の get リクエストと post リクエストの違いのまとめ

このチュートリアルの動作環境: Windows 7 システム、vue 2.9.6 バージョン、DEL...

MySQL 5.7 のパフォーマンスと sys スキーマの監視パラメータの説明 (推奨)

1. パフォーマンス スキーマ: はじめにMySQL 5.7 では、多数の新しい監視項目の導入、ス...

mysql5.7.19 winx64 インストールおよび構成方法のグラフィック チュートリアル (win10)

mysql 5.7.19 winx64のインストールチュートリアルは以下のように記録され、みんなと...

MySQL の最初のインストールが成功した後にパスワードを初期化する手順

ファイルをディレクトリに解凍しますこれは解凍後のディレクトリですmy.iniファイルを入力しますダブ...

MySQL データベース クエリ パフォーマンス最適化戦略

クエリを最適化するExplain ステートメントを使用してクエリ ステートメントを分析するExpla...

2つのウェブサイトページ翻訳プラグインの共有

TranslateThis URL: http://translateth.is Google 翻訳...

Dockerの高可用性構成の詳細な説明

Docker の作成Docker Compose は、管理対象コンテナをプロジェクト、サービス、コン...

MySQL のデバッグと最適化に関する 101 のヒントを共有する

MySQL は強力なオープンソース データベースです。データベース駆動型アプリケーションの数が増える...

mysql 5.6.21 のインストールと設定の詳細な手順

1. 概要MySQL バージョン: 5.6.21ダウンロードアドレス: https://dev.my...

Mysqlは日付範囲の抽出方法を指定します

データベースを操作する過程では、いくつかの指標を日付別にまとめたり、一定期間内の合計金額をカウントし...

MySQL sql99構文の内部結合と非等価結合の詳細な説明

#事例: 従業員の給与水準を照会する 選択 給与、等級 から 従業員 参加する ジョブグレード g ...

MySQL の接続数が多すぎるエラーの原因と解決策

目次概要本日正午、開発およびテスト環境の MySQL サービスで接続数が多すぎるというエラーが報告さ...

CSS でよく使用されるフォントサイズ、フォント単位、行の高さの詳細な説明

px(ピクセル)ピクセルという言葉は皆さんもよくご存知だと思います。次に、この単位に関するちょっとし...

超シンプルな QPS 統計手法 (推奨)

過去 N 秒間の QPS 値の統計 (1 秒あたりの選択、挿入などを含む) mysql> se...