新節點:css
新增兩個節點800六、8007:node
#redis基本配置 port 8006 daemonize yes pidfile /var/run/redis-8006.pid dir /opt/module/redis-4.0.11/data logfile "8006.log" dbfilename "dump-8006.rdb" #集羣開關,默認是不開啓集羣模式。 cluster-enabled yes #集羣配置文件的名稱,每一個節點都有一個集羣相關的配置文件,持久化保存集羣的信息。 #這個文件並不須要手動配置,這個配置文件有Redis生成並更新,每一個Redis集羣節點須要一個單獨的配置文件, #請確保與實例運行的系統中配置文件名稱不衝突 cluster-config-file nodes-8006.conf #默認狀況下,集羣所有的slot有節點負責,集羣狀態才爲ok,才能提供服務。設置爲no,能夠在slot沒有所有分配的時候提供服務。 #不建議打開該配置,這樣會形成分區的時候,小分區的master一直在接受寫請求,而形成很長時間數據不一致。 #就是有一個節點掛了這個集羣還能使用 cluster-require-full-coverage no
8007節點一致。redis
add-node命令能夠將新節點加入集羣,節點能夠爲master,也能夠爲某個master節點的slave:ruby
add-node new_host:new_port existing_host:existing_port --slave --master-id <arg>
new_host:new_port 新增節點的IP及端口 existing_host:existing_port 已知節點的IP及端口 目的是爲了新節點和舊結點間進行meet操做,讓整個集羣知道新節點進來了
add-node有兩個可選參數:ide
--slave:設置該參數,則新節點以slave的角色加入集羣 --master-id:這個參數須要設置了--slave才能生效,--master-id用來指定新節點的master節點。若是不設置該參數,則會隨機爲節點選擇master節點。
add-node流程以下:ui
先啓動800六、8007兩個節點:spa
redis-server redis-8006.conf redis-server redis-8007.conf
先添加一個主節點8006:3d
./redis-trib.rb add-node 127.0.0.1:8006 127.0.0.1:8000
結果:code
f8b5360af3341fc0f87b9492b4a3d69689ef1072 127.0.0.1:8006@18006 myself,master - 0 1535032508000 0 connected
爲8006主節點添加一個從節點8007:server
./redis-trib.rb add-node --slave --master-id f8b5360af3341fc0f87b9492b4a3d69689ef1072 127.0.0.1:8007 127.0.0.1:8000
結果:
[root@redis src]# redis-cli -p 8006 cluster nodes 7979884fe3020a77decb542b5f841dce99fa555e 127.0.0.1:8007@18007 slave f8b5360af3341fc0f87b9492b4a3d69689ef1072 0 1535032756000 0 connected f8b5360af3341fc0f87b9492b4a3d69689ef1072 127.0.0.1:8006@18006 myself,master - 0 1535032753000 0 connected
reshard命令能夠在線把集羣的一些slot從集羣原來slot負責節點遷移到新的節點,利用reshard能夠完成集羣的在線橫向擴容和縮容。
reshard host:port --slots <arg> --to <arg> --from <arg> --yes --pipeline <arg> --timeout <arg>
參數解釋:
host:port:這個是必傳參數,用來從一個節點獲取整個集羣信息,至關於獲取集羣信息的入口。 --from <arg>:須要從哪些源節點上遷移slot,可從多個源節點完成遷移,以逗號隔開,傳遞的是節點的node id, 還能夠直接傳遞--from all,這樣源節點就是集羣的全部節點,不傳遞該參數的話,則會在遷移過程當中提示用戶輸入。 --to <arg>:slot須要遷移的目的節點的node id,目的節點只能填寫一個,不傳遞該參數的話,則會在遷移過程當中提示用戶輸入。 --slots <arg>:遷移到目標節點的slot總數量,不傳遞該參數的話,則會在遷移過程當中提示用戶輸入。 --yes:設置該參數,能夠在打印執行reshard計劃的時候,提示用戶輸入yes確認後再執行reshard。 --timeout <arg>:設置migrate命令的超時時間。 --pipeline <arg>:定義cluster getkeysinslot命令一次取出的key數量,不傳的話使用默認值爲10。
遷移前:
7979884fe3020a77decb542b5f841dce99fa555e 127.0.0.1:8007@18007 slave f8b5360af3341fc0f87b9492b4a3d69689ef1072 0 1535032756000 0 connected f8b5360af3341fc0f87b9492b4a3d69689ef1072 127.0.0.1:8006@18006 myself,master - 0 1535032753000 0 connected a2d034b74c9cec4cd8398e8b23ae2d2ab124d49d 127.0.0.1:8000@18000 slave 9d1cb9fea95f1b205fc7a5ecb20125259765d6ca 0 1535032755246 7 connected fd17cbac4a5ca1942490d3734a73387341e80fb7 127.0.0.1:8005@18005 slave f5960002d40cf3711eca7146719c4f568115f76c 0 1535032756000 3 connected 1f0d813205ea17d9b254488215bd48612c0ff2b5 127.0.0.1:8001@18001 master - 0 1535032755000 2 connected 5461-10922 9d1cb9fea95f1b205fc7a5ecb20125259765d6ca 127.0.0.1:8003@18003 master - 0 1535032757258 7 connected 0-5460 f5960002d40cf3711eca7146719c4f568115f76c 127.0.0.1:8002@18002 master - 0 1535032756252 3 connected 10923-16383 93ae6d9a42bf485a955d2387b0a0d659e2c12902 127.0.0.1:8004@18004 slave 1f0d813205ea17d9b254488215bd48612c0ff2b5 0 1535032758265 2 connected
全部節點向8006節點遷移1364個slot:
./redis-trib.rb reshard --slots 4096 --to f8b5360af3341fc0f87b9492b4a3d69689ef1072 --from all --yes 127.0.0.1:8000
槽點遷移後:
7979884fe3020a77decb542b5f841dce99fa555e 127.0.0.1:8007@18007 slave f8b5360af3341fc0f87b9492b4a3d69689ef1072 0 1535035117200 9 connected f8b5360af3341fc0f87b9492b4a3d69689ef1072 127.0.0.1:8006@18006 myself,master - 0 1535035113000 9 connected 0-1363 5461-6826 10923-12286 a2d034b74c9cec4cd8398e8b23ae2d2ab124d49d 127.0.0.1:8000@18000 slave 9d1cb9fea95f1b205fc7a5ecb20125259765d6ca 0 1535035116193 7 connected fd17cbac4a5ca1942490d3734a73387341e80fb7 127.0.0.1:8005@18005 slave f5960002d40cf3711eca7146719c4f568115f76c 0 1535035114000 3 connected 1f0d813205ea17d9b254488215bd48612c0ff2b5 127.0.0.1:8001@18001 master - 0 1535035114000 2 connected 6827-10922 9d1cb9fea95f1b205fc7a5ecb20125259765d6ca 127.0.0.1:8003@18003 master - 0 1535035114000 7 connected 1364-5460 f5960002d40cf3711eca7146719c4f568115f76c 127.0.0.1:8002@18002 master - 0 1535035115000 3 connected 12287-16383 93ae6d9a42bf485a955d2387b0a0d659e2c12902 127.0.0.1:8004@18004 slave 1f0d813205ea17d9b254488215bd48612c0ff2b5 0 1535035115189 2 connected