ホームページ  >  記事  >  データベース  >  Redisクラスタの運用例を詳しく解説

Redisクラスタの運用例を詳しく解説

WBOY
WBOY転載
2022-06-23 12:24:122254ブラウズ

この記事では、Redis に関する関連知識を提供します。主に、Redis インスタンスの追加、マスター ノードとしての 8007 の構成、8007 としての 8008 の構成など、クラスター操作に関連する問題が整理されています。ノードなどについて説明しますので、皆様のお役に立てれば幸いです。

Redisクラスタの運用例を詳しく解説

推奨される学習: Redis ビデオ チュートリアル

既存の基盤に基づいて、ここでは 3 つの主要な機能の基本バージョンを示します。 3 つ目から、アーキテクチャは次のとおりです

1. クラスターを開始します ##
/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8001/redis.conf 
/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8002/redis.conf 
/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8003/redis.conf 
/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8004/redis.conf 
/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8005/redis.conf 
/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8006/redis.conf

クラスター ステータスの表示: クラスター ノード

上の図からわかるように、クラスター全体は 3 つのマスター ノードで正常に実行されています。および 3 つのスレーブ ノード、

  • ポート 8001 のインスタンス ノードには、ハッシュ スロット 0 ~ 5460 が格納されます。
  • ポートのインスタンス ノード8002 はハッシュ スロット 5461 ~ 10922、
  • ポート 8003 のインスタンス ノードにこれらのハッシュ スロット 10923 ~ 16383、

を保存します。 3 つのマスター ノードには、すべてのハッシュ スロットが格納されます。 Redis クラスターを構成するストレージ スロット。スレーブ ポイントは、各マスター ノードのバックアップ スレーブ ノードです。ストレージ スロットは表示されません。

2. クラスターの操作

元のクラスターをベースに、マスター (8007) とスレーブ (8008) を 1 つずつ追加します。ノード クラスターについては次の図を参照してください。新しいノードは点線のボックスで表されます

2.1. redis インスタンス

## /usr/local/redis-cluster の下に 8007 および 8008 フォルダーを作成し、8001 フォルダーの下にある redis.conf ファイルを 8007 および 8008 フォルダーにコピーします次へ

mkdir 8007 8008 
cd 8001
cp redis.conf /usr/local/redis‐cluster/8007/ 
cp redis.conf /usr/local/redis‐cluster/8008/
 
# 修改8007文件夹下的redis.conf配置文件
vim /usr/local/redis‐cluster/8007/redis.conf 
# 修改如下内容:
port:8007 
dir /usr/local/redis‐cluster/8007/
cluster‐config‐file nodes‐8007.conf 

# 修改8008文件夹下的redis.conf配置文件
vim /usr/local/redis‐cluster/8008/redis.conf
# 修改内容如下:
port:8008
dir /usr/local/redis‐cluster/8008/
cluster‐config‐file nodes‐8008.conf

# 启动8007和8008俩个服务并查看服务状态
/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8007/redis.conf
/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8008/redis.conf

ps ‐el | grep redis

2.2. 8007 をマスター ノードとして設定#add-node コマンドを使用して新しいマスター ノードを追加します8007 (マスター)、前の ip:port は新しいノードであり、後の ip:port は既知の既存のノードです。ログの最後に「[OK] 新しいノードが正しく追加されました」というプロンプトが表示される場合は、それを意味します。新しいノードが正常に追加されたことを確認します

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster add‐node 192.168.0.61:8007 192.168.0.61:8001
#クラスターのステータスを表示します##
/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐c ‐h 192.168.0.61 ‐p 8001

192.168.0.61:8001> cluster nodes
# は次のとおりです:

#注: ノードが正常に追加されると、新しく追加されたノードには何も割り当てられていないため、データがありません。スロット (ハッシュ スロット)。新しいノードに手動でハッシュを割り当てる必要があります。スロット

redis-cli コマンドを使用して、8007 にハッシュ スロットを割り当てます。クラスター内のマスター ノードを見つけて再シャードします

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster reshard 192.168.0.61:8001

#2.3. 8008 を 8007

のスレーブ ノードとして構成します#スレーブ ノード 8008 をクラスターに追加し、クラスターのステータスを確認します

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster add‐node 192.168.0.61:8008 192.168.0.61:8001
は次のとおりです:

#図に示すように、まだマスター ノードであり、ハッシュ スロットは割り当てられていません。

理由: 現在のノード (スレーブ ノード) のマスター ノード ID を指定するには、replicate コマンドを実行する必要があります。まず、新しいノードのクライアントに接続する必要があります。 8008 ノードを追加し、クラスター コマンドを使用して現在の 8008 (スレーブ) ノードを操作し、マスター ノードに割り当てます (ここでは前に作成した 8007 マスター ノードを使用します)

コマンドを実行します

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐c ‐h 192.168.0.61 ‐p 8008 

192.168.0.61:8008> cluster replicate 2728a594a0498e98e4b83a537e19f9a0a3790f38 #后面这串id为8007的节点id

クラスターのステータスを確認します。ノード 8008 はノード 8007 のスレーブ ノードとして正常に追加されました。

 2.4、删除8080从节点[不删除四主四从]

用del-node删除从节点8008,指定删除节点ip和端口,以及节点id(红色为8008节点id)

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster del‐node 192.168.0.61:8008 a1cfe35722d151cf70585cee212755653 93c0956

再次查看集群状态,如下图所示,8008这个slave节点已经移除,并且该节点的redis服务也已被停止

 2.5、删除8007主节点[不删除四主四从]

因为主节点的里面是有分配了hash槽的,所以我们这里必须先把8007里的hash槽放入到其他的可用主节点中去,然后再进行移除节点操作,不然会出现数据丢失问题(目前只能把master的数据迁移到一个节点上,暂时做不了平均分配功能),执行命令如下:

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster reshard 192.168.0.61:8007

迁移验证:会发现8007下面已经没有任何hash槽了,证明迁移成功!

 用del-node命令删除8007主节点即可

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster del‐node 192.168.0.61:8007 2728a594a0498e98e4b83a537e19f9a0a 3790f38

查看最终集群状态,发现一切恢复如初,至此水平扩展结束

推荐学习:Redis视频教程

以上がRedisクラスタの運用例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。