redis clusterクラスタ拡張
8206 ワード
redis clusterクラスタ拡張
準備作業
例:ノードを2つ追加(1プライマリ7006ノード、1セカンダリ7007ノード)
/home/redis-clusterでconfとdataターゲットを生成し、構成情報を生成
合計2つのフォルダが生成され、7006から7007まで、各フォルダの下にdataとconfフォルダが含まれ、confにはredisがある.confプロファイル
redisコンテナの作成
新たに2つのredisコンテナを生成
ノードの追加
rubyコンテナの起動
容器に入る
コマンドの実行
クラスタへのノードの追加
プライマリノードの追加
スレーブノードの追加
7006ノードのidを表示
現在追加されているプライマリノードにはslotsがありません.slotsを割り当てる必要があります.
割り当てslots
注意:プライマリノードslotsがない場合、アクセスデータは選択されません.
クラスタの状況を確認します
これで、新しく追加した2つのノードはクラスタ内で正常に使用できます.
ノードの削除
(この操作は上から起動したruby容器内で行います)
1、ノードから削除
2、マスターノードの削除
プライマリノードにスレーブノードがある場合は、ノードから他のプライマリノードに移行します.
プライマリノードにslotがある場合は、割り当てられたslotを削除し、プライマリノードを削除します.
マスターノードを追加すると、この操作も行われ、当時は割り当てられていたが、現在は削除されている.逆です.
新しいマスターノードが削除されました
転載先:https://www.cnblogs.com/fqxy/p/9148990.html
準備作業
例:ノードを2つ追加(1プライマリ7006ノード、1セカンダリ7007ノード)
/home/redis-clusterでconfとdataターゲットを生成し、構成情報を生成
for port in `seq 7006 7007`; do \
mkdir -p ./${port}/conf \
&& PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
&& mkdir -p ./${port}/data; \
done
合計2つのフォルダが生成され、7006から7007まで、各フォルダの下にdataとconfフォルダが含まれ、confにはredisがある.confプロファイル
redisコンテナの作成
for port in `seq 7006 7007`; do \
docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} \
-v /home/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /home/redis-cluster/${port}/data:/data \
--restart always --name redis-${port} --net redis-net \
--sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf; \
done
新たに2つのredisコンテナを生成
ノードの追加
rubyコンテナの起動
docker run -tdi --rm --net redis-net ruby
容器に入る
docker exec -it a3e0f3502f78( ID) /bin/bash
コマンドの実行
gem install redis
wget http://download.redis.io/redis-stable/src/redis-trib.rb
クラスタへのノードの追加
プライマリノードの追加
ruby redis-trib.rb add-node 192.168.1.199:7006 192.168.1.199:7005
:192.168.1.199:7006
192.168.1.199:7005
スレーブノードの追加
ruby redis-trib.rb add-node --slave --master-id ad07845aed1ef6d983846909ada8b42282e3748c 192.168.1.199:7007 192.168.1.199:7005
:- -slave
- -master-id ad07845aed1ef6d983846909ada8b42282e3748c node id 7006 node id
192.168.1.199:7007
192.168.1.199:7005
7006ノードのidを表示
ruby redis-trib.rb check 192.168.1.199:7005
現在追加されているプライマリノードにはslotsがありません.slotsを割り当てる必要があります.
割り当てslots
ruby redis-trib.rb reshard 192.168.1.199:7006
How many slots do you want to move (from 1 to 16384)? 2000 // slot 2000
What is the receiving node ID? ad07845aed1ef6d983846909ada8b42282e3748c // node id
Please enter all the source node IDs.
Type 'all' to use all the nodes as source nodes for the hash slots.
Type 'done' once you entered all the source nodes IDs.
Source node #1:all //
Do you want to proceed with the proposed reshard plan (yes/no)? yes //
注意:プライマリノードslotsがない場合、アクセスデータは選択されません.
クラスタの状況を確認します
ruby redis-trib.rb check 192.168.1.199:7005
これで、新しく追加した2つのノードはクラスタ内で正常に使用できます.
ノードの削除
(この操作は上から起動したruby容器内で行います)
1、ノードから削除
redis-trib.rb del-node 192.168.11.199:7007 '9c240333476469e8e2c8e80b089c48f389827265'
2、マスターノードの削除
プライマリノードにスレーブノードがある場合は、ノードから他のプライマリノードに移行します.
プライマリノードにslotがある場合は、割り当てられたslotを削除し、プライマリノードを削除します.
ruby redis-trib.rb reshard 192.168.11.199:7006 // slot,
How many slots do you want to move (from 1 to 16384)? 2000 // master slot
What is the receiving node ID? 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052 // 7006 slot master
Please enter all the source node IDs.
Type 'all' to use all the nodes as source nodes for the hash slots.
Type 'done' once you entered all the source nodes IDs.
Source node #1:ad07845aed1ef6d983846909ada8b42282e3748c // master node-id
Source node #2:done
Do you want to proceed with the proposed reshard plan (yes/no)? yes // slot ,reshard
マスターノードを追加すると、この操作も行われ、当時は割り当てられていたが、現在は削除されている.逆です.
redis-trib.rb del-node 192.168.1.199:6378 'ad07845aed1ef6d983846909ada8b42282e3748c'
新しいマスターノードが削除されました
転載先:https://www.cnblogs.com/fqxy/p/9148990.html