Redis叢集安裝步驟
一、安裝redis環境
1. 安裝redis
安裝的前提條件:需要安裝gcc:yum install gcc-c++
- 下載redis的原始碼包
- 把原始碼包上傳到linux伺服器
- 解壓原始碼包(上傳到哪個路徑就在哪個路徑解壓)
tar -zxvf redis-3.0.0.tar.gz
- make
- make install
[[email protected] redis-3.0.0]# make install PREFIX=/usr/local/redis
2. 啟動redis
- 前端啟動模式
/usr/local/redis/bin/redis-server
預設是前端啟動模式,埠是6379
- 後端啟動模式
- 從redis的原始碼目錄中複製redis.conf到redis的安裝目錄。
- 修改配置檔案
- [[email protected] bin]# ./redis-server redis.conf
3. Redis常用命令
127.0.0.1:6379> set a 10
OK
127.0.0.1:6379> get a
"10"
4. 常用資料型別
String
Hash
List
Set
SortedSet
二、Redis叢集的搭建
1. redis叢集相關概念
redis-cluster把所有的物理節點對映到[0-16383]slot上,cluster 負責維護node<->slot<->value
Redis 叢集中內建了 16384 個雜湊槽,當需要在 Redis 叢集中放置一個 key-value 時,redis 先對 key 使用 crc16 演算法算出一個結果,然後把結果對 16384 求餘數,這樣每個 key 都會對應一個編號在 0-16383 之間的雜湊槽,redis 會根據節點數量大致均等的將雜湊槽對映到不同的節點
Key:a
計算a的hash值,例如值為100,100這個槽在server1上,所以a應該放到server1.
Key:hello
Hash值:10032,此槽在server2上。Hell可以應該存在server2.
2. redis-cluster投票:容錯
(1)領著投票過程是叢集中所有master參與,如果半數以上master節點與master節點通訊超過(cluster-node-timeout),認為當前master節點掛掉.
(2):什麼時候整個叢集不可用(cluster_state:fail)?
a:如果叢集任意master掛掉,且當前master沒有slave.叢集進入fail狀態,也可以理解成叢集的slot對映[0-16383]不完成時進入fail狀態. ps : redis-3.0.0.rc1加入cluster-require-full-coverage引數,預設關閉,開啟叢集相容部分失敗.
b:如果叢集超過半數以上master掛掉,無論是否有slave叢集進入fail狀態.
ps:當叢集不可用時,所有對叢集的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)錯誤
3. 我們的叢集結構
叢集中有三個節點的叢集,每個節點有一主一備。需要6臺虛擬機器。
搭建一個偽分散式的叢集,使用6個redis例項來模擬。
- 搭建叢集需要的環境
搭建叢集需要使用到官方提供的ruby指令碼。
需要安裝ruby,步驟如下:
yum install ruby
yum install rubygems
redis叢集管理工具redis-trib.rb
[[email protected] ~]# cd redis-3.0.0
[[email protected] redis-3.0.0]# cd src
[[email protected] src]# ll *.rb
-rwxrwxr-x. 1 root root 48141 Apr 1 07:01 redis-trib.rb
[[email protected] src]#
指令碼需要的ruby包:
需要上傳到linux服務。
安裝ruby的包:
gem install redis-3.0.0.gem
[[email protected] ~]# gem install redis-3.0.0.gem
Successfully installed redis-3.0.0
1 gem installed
Installing ri documentation for redis-3.0.0...
Installing RDoc documentation for redis-3.0.0...
- 叢集的搭建
第一步:建立6個redis例項,埠號從7001~7006
第二步:修改redis的配置檔案
修改埠號
開啟cluster-enable前面的註釋。
第三步:把建立叢集的ruby指令碼複製到redis-cluster目錄下。
第四步:啟動6個redis例項
修改埠號從7001修改到7006
第五步:建立叢集啟動指令碼
第六步:建立叢集。
./redis-trib.rb create --replicas 1 192.168.221.130:7001 192.168.221.130:7002 192.168.221.130:7003 192.168.221.130:7004 192.168.221.130:7005 192.168.221.130:7006 |
- 測試叢集
[[email protected] redis-cluster]# redis01/redis-cli -h 192.168.221.130 -p 7002 -c
- 關閉redis
redis01/redis-cli -p 7001 shutdown
- 連線工具RedisDesktopManager測試
如果連線不上,可能是防火牆埠號沒放行,步驟如下:
1.開啟防火牆配置:vim /etc/sysconfig/iptables
2.新增放行配置
3.重新啟動 service iptables restart