Redisクラスターアーキテクチャは5.03に基づいています

歩哨アーキテクチャのいくつかの欠陥:

1.瞬時の中断の問題センチネルアーキテクチャでは、マスターノードがハングアップしたときに、マスターノードを選択してから切り替える必要があります。途中で数秒から数十秒のサービス停止時間があります。

2.同時実行制限が高いという問題は、センチネルが1つのノードにのみ書き込みサービスを提供し、1つのQPSがわずか数wであるという問題です。

3.単一ノードのメモリを大きく設定することはできません(約10G)。そうしないと、永続ファイルが大きくなりすぎて、データ回復とマスタースレーブ同期の効率に影響します。

Redisクラスターアーキテクチャは、上記の問題を解決できます。

redisクラスターは、マスターノードとスレーブノードの複数の小さなグループで構成される分散サーバークラスターです。

機能:レプリケーション、高可用性、シャーディング特性、中央ノードなし、水平拡張。公式ウェブサイトでは、数万のノード(1000以下を推奨)をサポートでき、構成は簡単であると述べています。

瞬間的な中断の問題はまだ完全には解決されていません。たまたまアクセスされたキーがある小さなクラスターがハングアップした場合、その小さなクラスターが選択されるのを待って再起動します。ただし、他のクラスターの主要なサービスは正常に処理できます。

簡単にするために、構造は、上記の1つのマスターと2つのスレーブ構造ではなく、1つのマスターと1つのフォロワーに基づいています。

Reidsの高可用性クラスター構築:

1. redisがインストールされているマシンに応じて、仮想マシンを介して3台のマシンのクローンを作成します

2. 3台のマシンのIPアドレスをそれぞれ192.168.0.101、192.168.0.102、192.168.0.103に設定します

    ネットワークを構成するためのチュートリアル:https//blog.csdn.net/pengweismile/article/details/112910138 

3.3台のマシンでそれぞれ次の構成を行います。

     3.1新しいディレクトリを作成し、構成ファイルを変更します

cd /home/allen/packages/redis-5.0.3/
mkdir redis-cluster
cd redis-cluster
mkdir 8001  8004
cp /home/allen/packages/redis-5.0.3/conf/redis.config 8001
cp /home/allen/packages/redis-5.0.3/conf/redis.config 8004
vi 8001/redis.config

    3.2 redis.configファイルで次の情報を構成します。その中で最も重要なのは、次の太字のフィールドです。

port 8001
protected-mode no
daemonize yes
pidfile "/var/run/redis_8001.pid"
logfile "8001.log"
dir "/home/allen/packages/redis-5.0.3/8001"
masterauth allen
replica-read-only yes
requirepass allen
appendonly yes
appendfilename "appendonly.aof"
cluster-enabled yes
cluster-config-file nodes-8001.conf
cluster-node-timeout 10000

4.各マシンのredis-5.0.3項目にポート番号に対応するディレクトリを作成し、ログデータなどを保存します。

cd /home/allen/packages/redis-5.0.3
mkdir 8001 8004

4.1。、/home/allen/packages/redis-5.0.3/redis-clusterに192.168.0.102の下のディレクトリ8002、8005を作成し192.168.0.102に8003、8006を作成し、コンフィギュレーション・ファイルredis.configによって、それらをコピーします

cd /home/allen/packages/redis-5.0.3/redis-cluster
mkdir 8001 8004

5.各構成ファイルを変更する目的を達成するために、対応するディレクトリ内のすべてのredis.configファイルを置き換えます

:%s / 8001/8004 / g

6.各マシンで個別にredisサーバーを起動します

[allen@localhost redis-5.0.3]$ src/redis-server redis-cluster/8001/redis.conf 
[allen@localhost redis-5.0.3]$ src/redis-server redis-cluster/8004/redis.conf

[allen@localhost redis-5.0.3]$ src/redis-server redis-cluster/8002/redis.conf 
[allen@localhost redis-5.0.3]$ src/redis-server redis-cluster/8005/redis.conf

[allen@localhost redis-5.0.3]$ src/redis-server redis-cluster/8003/redis.conf 
[allen@localhost redis-5.0.3]$ src/redis-server redis-cluster/8006/redis.conf 

7.クラスターを作成し、正常な起動のログを投稿します

src / redis-cli -a allen --cluster create 192.168.0.101:8001 192.168.0.101:8004 192.168.0.102:8002 192.168.0.102:8005 192.168.0.103:8003 192.168.0.103:8006 --cluster-replicas 1

[allen@localhost redis-5.0.3]$ src/redis-cli -a allen --cluster create 192.168.0.101:8001 192.168.0.101:8004 192.168.0.102:8002 192.168.0.102:8005 192.168.0.103:8003 192.168.0.103:8006 --cluster-replicas 1
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.0.102:8005 to 192.168.0.101:8001
Adding replica 192.168.0.101:8004 to 192.168.0.102:8002
Adding replica 192.168.0.103:8006 to 192.168.0.103:8003
>>> Trying to optimize slaves allocation for anti-affinity
[OK] Perfect anti-affinity obtained!
M: 7e6aa35995b79bef083cbfe60855d6d4ec3ba999 192.168.0.101:8001
   slots:[0-5460] (5461 slots) master
S: 499787d7590f9df6d102339c1341c00a1585726f 192.168.0.101:8004
   replicates 0f1f5538d02a78e9e5266afc285a4a524e3daa51
M: 383e0df8c3e16aacf86a17cbb7b2819426f9e454 192.168.0.102:8002
   slots:[5461-10922] (5462 slots) master
S: 3689c09d371ea3b0b11b4cc3827412220a8b6a11 192.168.0.102:8005
   replicates 7e6aa35995b79bef083cbfe60855d6d4ec3ba999
M: 0f1f5538d02a78e9e5266afc285a4a524e3daa51 192.168.0.103:8003
   slots:[10923-16383] (5461 slots) master
S: 9a5e3238d9648eba8084c6f5ad62814c61fb73b3 192.168.0.103:8006
   replicates 383e0df8c3e16aacf86a17cbb7b2819426f9e454
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
.....
>>> Performing Cluster Check (using node 192.168.0.101:8001)
M: 7e6aa35995b79bef083cbfe60855d6d4ec3ba999 192.168.0.101:8001
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: 3689c09d371ea3b0b11b4cc3827412220a8b6a11 192.168.0.102:8005
   slots: (0 slots) slave
   replicates 7e6aa35995b79bef083cbfe60855d6d4ec3ba999
M: 383e0df8c3e16aacf86a17cbb7b2819426f9e454 192.168.0.102:8002
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 9a5e3238d9648eba8084c6f5ad62814c61fb73b3 192.168.0.103:8006
   slots: (0 slots) slave
   replicates 383e0df8c3e16aacf86a17cbb7b2819426f9e454
M: 0f1f5538d02a78e9e5266afc285a4a524e3daa51 192.168.0.103:8003
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 499787d7590f9df6d102339c1341c00a1585726f 192.168.0.101:8004
   slots: (0 slots) slave
   replicates 0f1f5538d02a78e9e5266afc285a4a524e3daa51
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[allen@localhost redis-5.0.3]$ 

8.クラスターの形式でクライアントにログインし、クラスター情報を確認すると、cluster_know_nodes:6は6台のマシンであることがわかります。

[allen@localhost redis-5.0.3]$ src/redis-cli -a allen -c -h 192.168.0.101 -p 8004
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.101:8004> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:5
cluster_stats_messages_ping_sent:104
cluster_stats_messages_pong_sent:113
cluster_stats_messages_meet_sent:4
cluster_stats_messages_sent:221
cluster_stats_messages_ping_received:112
cluster_stats_messages_pong_received:108
cluster_stats_messages_meet_received:1
cluster_stats_messages_received:221

9.クラスターノードをチェックして、各マシンのマスタースレーブ構造を確認します。ここでは、主な重みが異なるマシンにあることがわかります。つまり、同じIPの2つのインスタンスは、マスタースレーブ構造にはなりません。

192.168.0.101、8001 8004

192.168.0.102、8002 8005

192.168.0.103、8003 8006

8002(マスター)-8006(スレーブ)

8001(マスター)-8005(スレーブ)

8003(マスター)-8004(スレーブ)

192.168.0.101:8004> cluster nodes
9a5e3238d9648eba8084c6f5ad62814c61fb73b3 192.168.0.103:8006@18006 slave 383e0df8c3e16aacf86a17cbb7b2819426f9e454 0 1611145153000 6 connected
3689c09d371ea3b0b11b4cc3827412220a8b6a11 192.168.0.102:8005@18005 slave 7e6aa35995b79bef083cbfe60855d6d4ec3ba999 0 1611145154081 4 connected
0f1f5538d02a78e9e5266afc285a4a524e3daa51 192.168.0.103:8003@18003 master - 0 1611145152121 5 connected 10923-16383
383e0df8c3e16aacf86a17cbb7b2819426f9e454 192.168.0.102:8002@18002 master - 0 1611145153172 3 connected 5461-10922
7e6aa35995b79bef083cbfe60855d6d4ec3ba999 192.168.0.101:8001@18001 master - 0 1611145154181 1 connected 0-5460
499787d7590f9df6d102339c1341c00a1585726f 192.168.0.101:8004@18004 myself,slave 0f1f5538d02a78e9e5266afc285a4a524e3daa51 0 1611145151000 2 connected
192.168.0.101:8004> 

10.ご覧のとおり、上記の情報は次のように毎日マシンのファイルに記録されるため、期間中に再起動すると、クラスターを作成する必要がなくなります。各クラスターのredisサービスが稼働している限り、クラスターは自動的に起動します。以下の情報によると。

[allen@localhost redis-5.0.3]$ pwd
/home/allen/packages/redis-5.0.3
[allen@localhost redis-5.0.3]$ cd 8001
[allen@localhost 8001]$ ls
8001.log  appendonly.aof  nodes-8001.conf
[allen@localhost 8001]$ less nodes-8001.conf 
[allen@localhost 8001]$ cat nodes-8001.conf 
3689c09d371ea3b0b11b4cc3827412220a8b6a11 192.168.0.102:8005@18005 slave 7e6aa35995b79bef083cbfe60855d6d4ec3ba999 0 1611145053207 4 connected
383e0df8c3e16aacf86a17cbb7b2819426f9e454 192.168.0.102:8002@18002 master - 0 1611145050117 3 connected 5461-10922
9a5e3238d9648eba8084c6f5ad62814c61fb73b3 192.168.0.103:8006@18006 slave 383e0df8c3e16aacf86a17cbb7b2819426f9e454 0 1611145052000 6 connected
0f1f5538d02a78e9e5266afc285a4a524e3daa51 192.168.0.103:8003@18003 master - 0 1611145052000 5 connected 10923-16383
7e6aa35995b79bef083cbfe60855d6d4ec3ba999 192.168.0.101:8001@18001 myself,master - 0 1611145050000 1 connected 0-5460
499787d7590f9df6d102339c1341c00a1585726f 192.168.0.101:8004@18004 slave 0f1f5538d02a78e9e5266afc285a4a524e3daa51 0 1611145052187 5 connected
vars currentEpoch 6 lastVoteEpoch 0
[allen@localhost 8001]$ 

 

おすすめ

転載: blog.csdn.net/pengweismile/article/details/112728366