本篇內容介紹了“redis集群操作的方法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
為忠縣等地區用戶提供了全套網頁設計制作服務,及忠縣網站建設行業解決方案。主營業務為成都網站制作、網站建設、外貿網站建設、忠縣網站設計,以傳統方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業、用心的態度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
基于已有一定基礎,這里搭建一個基礎版本三主三從,架構如下
/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
查看集群狀態:cluster nodes
從上圖可以看出,整個集群運行正常,三個master節點和三個slave節點,
8001端口的實例節點存儲0-5460這些hash槽,
8002端口的實例節點存儲5461-10922這些hash槽,
8003端口的實例節點存儲10923-16383這些hash槽,
這三個master節點存儲的所有hash槽組成 redis集群的存儲槽位,slave點是每個主節點的備份從節點,不顯示存儲槽位。
我們在原始集群基礎上再增加一主(8007)一從(8008),增加節點后的集群參見下圖,新增節點用虛線框表示
在/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
用add-node命令新增一個主節點8007(master),前面的ip:port為新增節點,后面的ip:port為已知存在節點,看到日志最后有"[OK] New node added correctly"提示代表新節點加入成功
/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
如下所示:
注意:當添加節點成功以后,新增的節點不會有任何數據,因為它還沒有分配任何的slot(hash槽),我們需要為新節點手工分配hash槽
使用redis-cli命令為8007分配hash槽,找到集群中的任意一個主節點,對其進行重新分片工作
/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
如下:
如圖所示,還是一個master節點,沒有被分配任何的hash槽。
原因:我們需要執行replicate命令來指定當前節點(從節點)的主節點id為哪個,首先需要連接新加的8008節點的客戶端,然后使用集群命令進行操作,把當前的8008(slave)節點指定到一個主節點下(這里使用之前創建的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節點的從節點
用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服務也已被停止
因為主節點的里面是有分配了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集群操作的方法
分享鏈接:http://m.newbst.com/article38/jheopp.html
成都網站建設公司_創新互聯,為您提供網站改版、商城網站、網站收錄、做網站、軟件開發、微信公眾號
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯