Redis應用--Redis-cluster集群部署
一、簡述
Redis經過快速的更新迭代已經到了6.0版本,在redis3.0的時代,加入了cluster集群的原生功能。本文不去介紹和對比主從、哨兵、cluster這三種之間的差異和為什么要選擇cluster,只是簡述下我在部署redis-cluster集群的時候一些步驟和碰到的一些問題。
Redis-cluster在經歷了3.0/4.0/5.0的更迭之后,已經不需要使用redis-trib.rb命令去創建集群了,改用redis-cli創建,并且修復了一些bug吧,比如redis-4.0.x.gem新增節點之后,不能把已經存儲數據的master節點的slot分配給新節點。
Redis 5.0使用redis-cli作為創建集群的命令,使用c語言實現,不再使用ruby語言,所以可以不用像3.0和4.0時候,為了使用redis-trib.rb命令而安裝ruby。不過這篇文章主要以4.0為主,5.0操作和4.0一樣,只是創建集群的時候,使用的命令有一些不一樣而已。
這是我做的一個各種搭建方式的對比:《Redis應用--Redis搭建方式總結》
二、Redis集群部署
1.部署環境
系統環境:centos7.5.1804
服務版本:redis-4.0.14(截止文章發布前最新版本)
注意:演示的集群部署是使用的但臺機器部署六臺甚至更多redis服務的形式創建的redis集群,正常生產環境需要六臺物理機去分別部署每一個redis服務。
2.安裝Redis服務
cd /usr/local/src/ wget http://download.redis.io/releases/redis-4.0.14.tar.gz tar xzf redis-4.0.14.tar.gz cd redis-4.0.14 make make install PREFIX=/usr/andy/redis-cluster cp -a redis.conf /usr/local/redis-cluster/bin/ cp -a /usr/local/redis-cluster/bin/ /usr/local/redis-cluster/redis01
修改redis01/redis.conf配置,可以找到下面相應的配置項進行修改,也可以只保留下面的配置項。
#vim redis01/redis.conf daemonize yes port 7001 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 15000 appendonly yes #正常應該是ip地址的,不能寫回環地址 bind 192.168.180.192
將bin目錄復制到六份,一定要修改每一個目錄redis配置文件的端口號。
注意:這里bind我用了內網地址,因為此集群部署是在單挑機器模擬的,所以也可以填寫127.0.0.1。
3.redis-trib所需的Ruby腳本
# 將創建集群的腳本復制到redis安裝目錄中 cp -a /usr/local/src/redis-4.0.14/src/redis-trib.rb /usr/local/redis-cluster/ ##安裝ruby,因為我使用的是redis4.0.14版本,現有的centos服務源中并沒有高版本的ruby支持,所以需要先安裝其他源 yum install centos-release-scl-rh yum -y install rh-ruby23 #以下這條命令是進入ruby23的環境中,不使用這個環境的時候可以輸入exit命令退出來。 scl enable rh-ruby23 bash #查看安裝的ruby版本 ruby -v #安裝redis-trib.rb運行依賴的ruby的包redis gem install redis #安裝之后會有如下提示 #Successfully installed redis-4.1.4 #Parsing documentation for redis-4.1.4 #Done installing documentation for redis after 0 seconds #1 gem installed
4.編寫簡單的啟動Redis腳本
腳本內容如下
#vim start_redis.sh cd redis01 ./redis-server redis.conf cd .. cd redis02 ./redis-server redis.conf cd .. cd redis03 ./redis-server redis.conf cd .. cd redis04 ./redis-server redis.conf cd .. cd redis05 ./redis-server redis.conf cd .. cd redis06 ./redis-server redis.conf cd .. ##使用腳本啟動redis服務 bash start_redis.sh ## 檢查是否啟動 ps -ef | grep redis-server |grep -v grep
執行上面命令之后如果redis服務在啟動,會有如下內容,這樣就能判斷redis服務都已經啟動了
root 9625 1 0 6月04 ? 00:11:30 ./redis-server 192.168.180.192:7001 root 9760 1 0 6月04 ? 00:11:38 ./redis-server 192.168.180.192:7002 root 9779 1 0 6月04 ? 00:11:49 ./redis-server 192.168.180.192:7003 root 9796 1 0 6月04 ? 00:11:36 ./redis-server 192.168.180.192:7004 root 9854 1 0 6月04 ? 00:11:33 ./redis-server 192.168.180.192:7005 root 9870 1 0 6月04 ? 00:11:34 ./redis-server 192.168.180.192:7006
5.創建集群
注意:redis-trib.rb是redis3和redis4使用的創建cluster的方式,redis5中使用的自帶的命令redis-cluster
./redis-trib.rb create --replicas 1 192.168.180.192:7001 192.168.180.192:7002 192.168.180.192:7003 192.168.180.192:7004 192.168.180.192:7005 192.168.180.192:7006 # 使用create命令 --replicas 1 參數表示為每個主節點創建一個從節點,其他參數是實例的地址集合。
以上命令執行完畢之后,在屏幕中有提示創建是否完成,創建完成之后的cluster集群狀態。可以看到是三個M的id和其從id和三個S的id和其主id。
在redis5 中創建的方式如下:
cd /usr/local/src/redis-5.0.2/utils/create-cluster # 啟動 ./create-cluster start # 創建 ./create-cluster create # 停止 ./create-cluster stop # 查看狀態 ./create-cluster watch ##當然redis5中還有一種方式,redis-cli命令創建rediscluster集群和redis4的差不多,有興趣可以自行百度搜索redis5的cluster集群創建,在此不再贅述、
6.測試集群
./redis-cli -c -h 192.168.180.192 -p 7001
使用以下命令測試會看到設置key的時候,從7001這個redis服務自動切換到7004這個redis服務
7.模擬集群故障
可以試著將一個Master redis服務停掉,然后檢查是否有它的從被選舉成主。
然后在將停掉的redis服務啟動,觀察是否會自動加入集群,然后加入集群之后它是mstar還是slave,如果是salve的話,它的master是誰,都可以觀察下。
當然還可以添加redis-cluster集群的主從節點,刪除redis-cluster主從節點。在此不再去詳盡的描述了。可以查看這篇文章Redis Cluster集群
在公司的企業架構出去選項的時候,如果選擇了Redis-cluster的話,做決定的時候,就回去定使用多少主從節點。當流量激增等的時候,才會考慮增加節點等內容。
注意:redis4版本添加節點的時候,可能會有命令的問題。可以查看下這篇文章redis 集群新增節點【ERR】?官方文檔推薦使用高版本的redis,比如redis5去創建集群.
Redis
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。