Redis之叢集環境部署
在進行redis叢集部署之前,兄弟們最好先在自己的虛擬機器上安裝好單機版的redis,安裝方法很簡單,兄弟們可自行用度娘度一下,這裡就不再贅述了,本人也是上班時間抽空偷偷寫的該博文,也得處處小心被捉了!
好了,閒話少說,進入正題哈!
第一步 搭建ruby環境
先來說說redis用啥來做叢集,我們知道hadoop可以用ambari-server來做叢集,那麼Redis呢?
redis是用一個叫redis-trib.rb的ruby指令碼。
redis-trib.rb是redis官方推出的管理redis叢集的工具,整合在redis的原始碼src目錄下(/opt/redis/src/)。是基於redis提供的叢集命令封裝成簡單、便捷、實用的操作工具。
redis-trib.rb是redis作者用ruby完成的。所以redis叢集需要先安裝ruby環境。
兄弟們,一起來看看redis-trib.rb指令碼在哪裡,如下圖
好了,瞭解了ruby指令碼,下面,一起來看看過程吧!
需要ruby指令碼,就的搭建ruby環境。
1 使用yum安裝ruby 錯誤過程重現:
本來想用yum install ruby 來安裝,結果
本人的機子上居然沒有ruby的yum源,怎奈,天無絕人之路,辦法有的是,去官網下載一下ruby的安裝包,老老實實的,用解壓方式安裝吧。
可是,又過了一會,貌似yum又可以用了,得嘞,yum又復活了,還是用yum安裝吧,
安靜的等他下載完吧,,執行上述命令,結束之後,用rpm -qa | grep ruby 檢視一下是否安裝成功,如果出來如下圖所示的資訊,則說明ruby安裝成功。
然後輸入命令,irb ,測試一下ruby是否可用,見如下圖
進入到redis 目錄,輸入命令 ll *.rb 檢視一下 ruby 指令碼,看看該指令碼長啥樣,
哦,原來是這樣,挺秀氣的。
再執行一下./redis-trib help 命令,看看該工具包提供了哪些命令和功能,但執行該命令的時候,發現瞭如下問題,說明沒有安裝redis與ruby的呼叫介面,之前只是安裝了ruby的包管理器
輸入命令 gem install redis 時候,又報出如下錯誤,查了資料發現是Centos預設支援ruby到2.0.0,可gem 安裝redis需要最低是2.2.2 。
我的解決方案是,只能重新安裝ruby了,再重新安裝之前,建議解除安裝掉原先通過yum 方式安裝的軟體包,解除安裝方式為 yum remove 軟體包名
執行 yum list installed | grep ruby 檢視一下,是否將yum源安裝的ruby全部刪除掉,包括ruby包管理器
2 線上方法安裝ruby
在上述步驟中,重現了使用yum 方法安裝ruby的全過程,當然,也不能百分之百保證能安裝正確,可能跟系統有關,不過最保險的安裝方法,我建議還是採用線上安裝
執行 : wgethttps://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.3.tar.gz 直接線上下載 ruby 安裝包
在指定目錄下 解壓ruby (/usr/ruby)
tar -xvfz ruby-2.4.3
然後 進入到 /usr/ruby/ 執行 ./configure --prefix =/usr/local/ruby (指定安裝路徑)
在 /usr/ruby 目錄下,直接編譯安裝,make && make install
安裝過程比較慢,慢慢等吧,,
安裝完畢之後,進入到 $HOME/.bash_profile配置一下ruby的全域性命令
然後安裝redis的gem包 :gem install redis-4.0.0.gem (redis-4.0.0.gem 可自行到網站下載
下載地址為: wget https://rubygems.global.ssl.fastly.net/gems/redis-4.0.0.gem)
至此,ruby環境搭建完畢
進入到redis的src目錄,用ll *.rb找到redis-trib.rb檔案,
執行命令./redis-trib help 可以檢視該工具包提供的命令和功能
第三步搭建redis叢集
這裡搭建的是假分散式叢集,也就是使用的6個redis例項來模擬,條件有限,沒法構造六臺虛擬機器,電腦吃不消哈。
其實道理是一樣的,,
1 建立 redis-cluster 目錄
在 /usr/local/ 目錄下,建立一個 redis-cluster 目錄,今後準備把所有的redis子節點都存放在此目錄中
2 修改配置
在該目錄下建立一個子目錄 mkdir redis8001 ,並將 redis-cli redis-server redis-conf 分別複製到該目錄下
修改 redis.conf 檔案,分別修改 port=8001 daemonize=yescluster-enabled yes appendable yes
修改完畢,怎麼樣,兄弟們,是不是很簡單?
3 複製目錄
接下來再建立五個類似的資料夾,redis8002 redis8003 redis8004 redis8005 redis8006 ,
然後把埠分別改成對應的值
4 複製ruby指令碼到redis-cluster目錄
把建立叢集的ruby指令碼複製到redis-cluster目錄下。
修改完畢,編寫啟動指令碼,除非你想一個一個啟動,否則,最後寫一個叢集啟動指令碼
5 建立叢集
進入到 redis-cluster 目錄,執行如下命令,建立叢集,
./redis-trib.rb create --replicas 1 127.0.0.1:8001 127.0.0.1:8002 127.0.0.1:8003 127.0.0.1:8004 127.0.0.1:8005 127.0.0.1:8006
如下圖所示,執行結果
6 測試叢集
當我連線某一個節點,比如8004進行測試的時候,發現報如下錯誤,6個節點居然沒有在同一個叢集中,
error) CLUSTERDOWN Hash slot not served(不提供叢集的雜湊槽)
有可能是我把所有的 127.0.0.1 替換成 192.168.1.101 導致的錯誤,
所以,趕緊把所有節點都加到同一個叢集中,,
重複操作步驟5
搞定,,哈哈!
測試一下,我連線的是8004節點,塞入一個值之後,redis通過雜湊槽演算法,將值放到了節點8002上,如圖所示
至此,叢集部署成功 !
經過坎坎坷坷,總算把叢集部署成功了,大家可以參考一下整個過程,歡迎各位兄弟,提出寶貴意見!
轉載於:https://my.oschina.net/yaukie/blog/1636035