この記事では、Redis に関する関連知識を提供します。主に、Redis インスタンスの追加、マスター ノードとしての 8007 の構成、8007 としての 8008 の構成など、クラスター操作に関連する問題が整理されています。ノードなどについて説明しますので、皆様のお役に立てれば幸いです。
推奨される学習: Redis ビデオ チュートリアル
既存の基盤に基づいて、ここでは 3 つの主要な機能の基本バージョンを示します。 3 つ目から、アーキテクチャは次のとおりです
/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 つのスレーブ ノード、
を保存します。 3 つのマスター ノードには、すべてのハッシュ スロットが格納されます。 Redis クラスターを構成するストレージ スロット。スレーブ ポイントは、各マスター ノードのバックアップ スレーブ ノードです。ストレージ スロットは表示されません。
元のクラスターをベースに、マスター (8007) とスレーブ (8008) を 1 つずつ追加します。ノード クラスターについては次の図を参照してください。新しいノードは点線のボックスで表されます
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
/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 にハッシュ スロットを割り当てます。クラスター内のマスター ノードを見つけて再シャードします
#2.3. 8008 を 8007/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster reshard 192.168.0.61:8001ログイン後にコピー
のスレーブ ノードとして構成します#スレーブ ノード 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 サイトの他の関連記事を参照してください。