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 プロトタイプのデータ共有とメソッド共有の実装を調べる

推薦する

FileZilla 425 FTP に接続できない (Alibaba クラウド サーバー) の解決策

Alibaba Cloud ServerがFTPに接続できないFileZilla 425 データ接続...

Vue3 を使用して虫眼鏡効果を実現する方法の例

目次序文1. カプセル化の重要性2. どのようにカプセル化しますか? 1. 準備2. 梱包を開始する...

プロセスごとにネットワーク帯域幅を監視する Linux ツール Nethogs のインストールと展開

概要Linux 用のオープン ソース ネットワーク監視ツールは数多くあります。たとえば、帯域幅の使用...

VUE と Canvas を使用して Thunder Fighter タイピング ゲームを実装する方法

今日は、サンダーファイタータイピングゲームを実装します。ゲームプレイは非常に簡単です。それぞれの「敵...

Flex プログラム Firefox で中国語を入力すると文字化けするバグ

Firefox の下位バージョンでは中国語の文字を入力できず、上位バージョンでは文字化けした文字が表...

MySQL ピボットテーブルについての簡単な説明

次のような製品部品表があります。一部 部品ID 部品タイプ 製品ID ---------------...

js が CSS 属性 (値) のサポートを決定して通知する状況の分析

新しい CSS 機能を使用する場合、その互換性は常に考慮されます。おそらく、その互換性、どのブラウザ...

MySQL SQL文の特殊処理文のまとめ(必読)

1.テーブル全体を更新します。データ行の列の値が空の場合は、別の列フィールドの値と同じにします。 ...

JavaScript Canvas で三目並べゲームを実装

この記事では、JavaScript Canvasで三目並べゲームを実装するための具体的なコードを参考...

CSS3に基づいてiPhoneを描く

結果:実装コードhtml <div class='iphone'> &l...

行間隔が広い場合の解決策(IE では 5 ピクセル多い)

コードをコピーコードは次のとおりです。 li {幅:300px; 高さ:23px; 行の高さ:24p...

Vueはスライダードラッグ検証機能の全プロセスを実現します

レンダリング 骨組みを定義し、HTMLとCSSを記述するHTML部分 <テンプレート> ...

モバイル Web WAP には Bootstrap と jQuery Mobile のどちらを使用すべきか

問題を解決するBootstrap は、次の問題を解決する CSS フレームワークです。デバイス間での...

MySQL8 ベースの docker-compose デプロイメント プロジェクトの実装

1. まず、次のパスに従って対応するフォルダを作成します。 ローカルのdockerでmysqlを実行...

mysql5.6 マスタースレーブ設定と非同期の問題の詳細な説明

目次1. MySQL マスタースレーブレプリケーションの原理2. MySQLのコンパイルとインストー...