redis clusterクラスタ拡張

8206 ワード

redis clusterクラスタ拡張
準備作業
 
例:ノードを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