摘要:任何一條主從線下的服務全部故障,則導致集群不可用。沒有分配哈希槽的話表示就沒有存儲數(shù)據(jù)的能力。錯誤幫助如果過程中出現(xiàn)槽錯誤分別登錄和執(zhí)行為添加從節(jié)點部署進入目錄執(zhí)行八移除集群節(jié)點刪除從節(jié)點,因為沒有分配哈希槽,所以直接刪除。
【背景】
2年前在本地電腦上搭建過redis集群。但苦于創(chuàng)業(yè)公司服務器資源有限(窮),并沒有應用到生產環(huán)境。近期換了個工作環(huán)境,有資源條件了準備開始搭建使用。雖然搭建過一次,但在搭建的過程當中,還是遇到一些問題,所以打算整理一份詳細的搭建記錄,也能給大家多一份參考選擇。
【環(huán)境以及資源】服務器:windows server 2008 r2 (因為現(xiàn)有服務器是windows,那我們就在windows上搭建)
下載地址:
Redis:https://github.com/MSOpenTech...(Redis-x64-3.2.100.zip)【Redis服務】
Ruby:http://dl.bintray.com/oneclic...(rubyinstaller-2.3.3-x64.exe)【Ruby環(huán)境安裝】
rubygems: https://rubygems.org/pages/do...【用于安裝ruby的redis依賴】
redis-trib.rb:https://raw.githubusercontent...【創(chuàng)建集群的ruby腳本】
1、下載redis服務綠色包 https://github.com/MSOpenTech...(Redis-x64-3.2.100.zip)。我們約定7000、7001、7002 3個端口為主節(jié)點,6000、6001、6002 3個端口為從節(jié)點,便于區(qū)分。那先來搭建第一redis服務,然后如法炮制復制另外5個即可。
2、下載完成解壓,修改文件夾名稱為Redis-6000,修改redis.windows.conf文件里的信息如下:
port 6000 #端口#
cluster-enabled yes #是否開啟集群#
cluster-config-file nodes.conf #集群節(jié)點文件,會根據(jù)配置的名字生成在目錄下#
cluster-node-timeout 15000 #超時時間#
appendonly yes
注意:如果你是復制啟動過的redis服務,記得檢查目錄下是否有appendonly.aof,nodes.conf和.rdb文件(持久化存儲數(shù)據(jù)),刪除他們,否則在創(chuàng)建集群的時候會失敗。
3、啟動redis服務
方法一:打開cmd,進入redis-6000目錄下執(zhí)行命令:redis-server.exe redis.windows.conf。
方法二【推薦】:部署redis到windows服務里,便于日后使用。cmd進入redis-6000目錄,執(zhí)行命令redis-server --service-install redis.windows.conf --service-name Redis6000 --loglevel verbose
打開服務找到redis6000,右擊啟動。
啟動后查看目錄下會多出2個文件
4、這樣我們第一個redis服務安裝成功,這時候這個redis服務還不能set數(shù)據(jù),要配置完集群才可。那接著依照同樣的步驟搭建另外5個redis服務。
redis-trib.rb是ruby腳本編寫的,可方便的搭建集群,所以我們需要安裝Ruby環(huán)境來執(zhí)行腳本。
1、打開下載地址 http://dl.bintray.com/oneclic... 選擇 rubyinstaller-2.3.3-x64.exe 進行下載。
2、運行安裝(全部勾選)
3、安裝完畢,測試是否安裝成功。
打開cmd,輸入命令 ruby -v 。顯示版本代表環(huán)境安裝成功。
使用rubygems是為了安裝ruby的redis依賴。
1、打開下載地址 https://rubygems.org/pages/do..., 下載rubygems-update-3.0.2.gem,放到ruby目錄。
2、運行命令gem install --local D:Ruby23-x64rubygems-update-3.0.2.gem
3、安裝完成gem后,安裝 Redis依賴,在cmd里繼續(xù)執(zhí)行 gem install redis
1、打開下載地址 https://raw.githubusercontent... (指向最新版本),本文使用地址建議https://raw.githubusercontent...,另存為到本地 (一個文本類文件)。
2、打開cmd,進入redis-trib.rb文件所在目錄,執(zhí)行創(chuàng)建集群命令
redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:6000 127.0.0.1:6001 127.0.0.1:6002
3、提示后輸入yes
如圖能看到3主3從的配置信息
rediscluster采用了哈希分區(qū)的“虛擬槽分區(qū)”方式,所有的鍵根據(jù)哈希函數(shù)(CRC16[key]&16383)映射到0-16383槽內,共16384個槽位。
主節(jié)點7000端口分槽是0-5460,對應從庫是6001
主節(jié)點7001端口分槽是5461-10922,對應從庫是6002
主節(jié)點7002端口分槽是10923-16383,對應從庫是6000
情況1、redis-trib.rb腳本版本與ruby的redis依賴版本不一致
說明redis-trib.rb的代碼版本與當前ruby安裝的redis依賴版本不匹配。
查看版本方法:打開ruby的gems安裝目錄,搜索redis。
https://raw.githubusercontent... (更改鏈接/redis/版本號/)
下載對應版本的腳本。
情況2:無法連接其他節(jié)點
確保端口打開,各臺機子上能互相通信
1、打開cmd,進入redis6000端口的目錄,輸入redis-cli -h 127.0.0.1 -p 6000 -c(集群連接多個-c)。隨便連接哪一個節(jié)點都可以,只要這個節(jié)點運行正常,集群會自動根據(jù)key來進入對應槽點的節(jié)點。
2、我們存入2組key:value進行測試,key:vvv1和age:28,如圖所示age被存入7000,key被存入7002。那對應的從庫節(jié)點應該是6001和6000,我們可以利用工具查看。
首先模擬主節(jié)點7000掛掉,按照預期從節(jié)點6001選為主節(jié)點。
1、進入服務里停止redis7000
2、查看集群信息,cmd進入redis-trib.rb文件目錄,執(zhí)行redis-trib.rb check 127.0.0.1:6001
可以看到從節(jié)點6001(S)已經變?yōu)橹鞴?jié)點(M)
3、取值測試 get age,原來是從7000節(jié)點里取到的,現(xiàn)在任然取的到,只是是從6001里取到
4、重新啟動redis7000,重新查看集群信息
7000變?yōu)閺墓?jié)點。
集群在運行了一段時間之后,由于需求的變動,我們會增加或者刪減集群節(jié)點。
主從節(jié)點增加選擇思路:(1)緩存服務存儲壓力大,增加主節(jié)點,橫向擴展 (2)保證redis集群高可用,多增加從節(jié)點。任何一條主從線下的redis服務全部故障,則導致集群不可用。
1、新部署一個redis服務端口7003
2、把7003加入集群,cmd進入redis-trib.rb文件目錄,執(zhí)行redis-trib.rb add-node 127.0.0.1:7003 127.0.0.1:7000
3、查看集群信息redis-trib.rb check 127.0.0.1:6001
能看到7003已經被加入集群,作為主節(jié)點(M),但是這時候7003并沒有分槽。沒有分配哈希槽的話表示就沒有存儲數(shù)據(jù)的能力。
4、分配槽點
隨便進入一個客戶端,redis-trib.rb reshard 127.0.0.1:7001
(1)問我們要移動多少個槽點,我們按1W6的槽給4個主節(jié)點來均攤,大概是4000個節(jié)點。
(2)輸入4000,要我們輸入接受節(jié)點的ID,就是7003的ID:28d7e06a951e82d8eca485fe465947100d78090a
(3)接著輸入all回車后提示輸入yes,就會從當前的其他主節(jié)點里抽取4000個槽過來。
如果過程中出現(xiàn)槽錯誤
分別登錄7002和7003redis執(zhí)行cluster setslot 11237 stable
5、為7003添加從節(jié)點6003
(1)、部署redis6003
(2)、進入redis-trib.rb目錄執(zhí)行redis-trib.rb add-node --slave 127.0.0.1:6003 127.0.0.1:7003
1、刪除從節(jié)點,因為沒有分配哈希槽,所以直接刪除。IP:端口 ID
redis-trib.rb del-node 127.0.0.1:6003 241c77920bde9952fbf3cb38f7b3085c946b0324
2、刪除主節(jié)點,因為主節(jié)點有分槽,先把槽移動至其他主節(jié)點,再刪除
1、搭建完一個redis節(jié)點后復制另外5個。6個redis節(jié)點是集群的最低配置。3對1主1從。
2、安裝ruby環(huán)境來執(zhí)行redis-trib.rb創(chuàng)建集群。還有手動創(chuàng)建集群的方式,不需要ruby,但是麻煩一點。
3、在搭建好的集群額外再添加刪除節(jié)點。加主節(jié)點還是從節(jié)點思路:緩存服務存儲壓力大,增加主節(jié)點,橫向擴展。保證redis集群高可用,多增加從節(jié)點,因為任何一條主從線下的redis節(jié)點全部故障,則導致集群不可用。
【如果文章對你有所幫助,請在評論區(qū)留言點贊,以資鼓勵?!?/strong>
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://www.ezyhdfw.cn/yun/62081.html
摘要:環(huán)境配置機器下載獨立文件位置安裝關鍵點工具實現(xiàn)集群復制到目錄下。創(chuàng)建集群命令發(fā)現(xiàn)環(huán)境需要下安裝方案下安裝方案如果不好用,可以切換到淘寶源然后再次執(zhí)行即可。說明集群正常工作?;ヂ?lián)網時代,時刻要保持學習,攜手千鋒。 1 環(huán)境配置: ubuntu16.04 redis3.0.62 機器: 192.168.50.156 192.168.50.154 192.168.50.1553 下載red...
摘要:集群搭建以及監(jiān)測環(huán)境實現(xiàn)主從的集群虛擬機單機集群基本搭建簡單下載通過解壓縮指定安裝路徑,切換用戶執(zhí)行,可能出現(xiàn)權限不夠的問題,同樣會報錯,直接使用進行操作。分為兩部分,其中一部分為監(jiān)控腳本,另一部分為服務,所以需要分別啟動。 redis 集群搭建以及監(jiān)測環(huán)境 實現(xiàn)3主3從的集群 虛擬機單機ip:192.168.40.128 集群基本搭建 簡單下載 通過 wget http://dow...
閱讀 3092·2021-11-24 09:39
閱讀 2351·2021-10-08 10:05
閱讀 2884·2021-09-24 13:52
閱讀 1666·2021-09-22 15:07
閱讀 653·2019-08-30 15:55
閱讀 1864·2019-08-30 15:53
閱讀 745·2019-08-30 15:44
閱讀 3183·2019-08-30 11:20