redis3.2.1叢集介紹及在Linux作業系統上安裝
一、redis叢集介紹點選開啟連結
Redis3.0版本之後支援Cluster.
二、redis叢集安裝
準備工作:
1. 安裝兩臺虛擬機器,模擬6個節點,一臺機器3個節點,創建出3 master、3 salve 環境。
2. 虛擬機器安裝參考:http://blog.csdn.net/z3225167/article/details/79537280
3. 兩臺虛擬機器都是 CentOS ,一臺 CentOS7 (IP:192.168.230.166),一臺 CentOS7(IP:192.168.31.167) 。
安裝過程:
1. 下載並解壓
mkdir /tools 然後 cd /tools
wget http://download.redis.io/releases/redis-3.2.1.tar.gz
tar -zxvf redis-3.2.1.tar.gz
2. 編譯安裝
make && make install 如果出現錯誤,需要安裝gcc。 yum -y install gcc gcc-c++ libstdc++-devel
3. 建立 Redis 節點
在每臺伺服器的tools目錄下建立redis_cluster目錄,並且在redis_cluster下分別建立對應的埠目錄,並且將redis.conf複製到對應的目錄中
mkdir redis_cluster mkdir 7000 7001 7002 cp redis.conf /tools/redis_cluster/7000 cp redis.conf /tools/redis_cluster/7001 cp redis.conf /tools/redis_cluster/7002
分別修改對應的redis.conf
port 7000 //埠7000,7002,7003
#bind 127.0.0.1 //開啟遠端訪問需要註釋掉本機IP 並且把 protected-mode 改為 no
protected-mode no //開啟遠端訪問需要註釋掉本機IP 並且把 protected-mode 改為 no
daemonize yes //redis後臺執行
pidfile /var/run/redis_7000.pid //pidfile檔案對應7000,7001,7002
cluster-enabled yes //開啟叢集 把註釋#去掉
cluster-config-file nodes_7000.conf //叢集的配置 配置檔案首次啟動自動生成 7000,7001,7002
cluster-node-timeout 15000 //請求超時 預設15秒,可自行設定
appendonly yes //aof日誌開啟 有需要就開啟,它會每次寫操作都記錄一條
在這裡有必要說下如果當前redis不需要持久化,只作為快取使用,可以進行如下配置
save "" //把其於的save註釋掉,只留下save ""
maxmemory 1536mb //限制記憶體使用,如果你的記憶體是2G 可以使用當前這個配置
maxmemory-policy allkeys-lru //設定清理快取的策略,如果達到了你配置的快取,則會清理
#下面為redis官網上的幾種清理策略:
#volatile-lru:從已設定過期時間的資料集(server.db[i].expires)中挑選最近最少使用的資料淘汰
#volatile-ttl:從已設定過期時間的資料集(server.db[i].expires)中挑選將要過期的資料淘汰
#volatile-random:從已設定過期時間的資料集(server.db[i].expires)中任意選擇資料淘汰
#allkeys-lru:從資料集(server.db[i].dict)中挑選最近最少使用的資料淘汰
#allkeys-random:從資料集(server.db[i].dict)中任意選擇資料淘汰
#no-enviction(驅逐):禁止驅逐資料
maxmemory-samples 3 預設值3,上面LRU和最小TTL策略並非嚴謹的策略,而是大約估算的方式,因此可以選擇取樣值以便檢查
接著在另外一臺機器上(192.168.230.167),的操作重複以上三步,只是把目錄改為7003、7004、7005,對應的配置檔案也按照這個規則修改即可
4. 啟動各個節點:
第一臺機器上執行
redis-server /tools/redis_cluster/7000/redis.conf
redis-server /tools/redis_cluster/7001/redis.conf
redis-server /tools/redis_cluster/7002/redis.conf
另外一臺機器上執行
redis-server /tools/redis_cluster/7003/redis.conf
redis-server /tools/redis_cluster/7004/redis.conf
redis-server /tools/redis_cluster/7005/redis.conf
對應的機器檢視各個節點的啟動情況:
ps -ef | gerp redis
root 61020 1 0 02:14 ? 00:00:01 redis-server 192.168.230.166:7000 [cluster]
root 61024 1 0 02:14 ? 00:00:01 redis-server 192.168.230.166:7001 [cluster]
root 61029 1 0 02:14 ? 00:00:01 redis-server 192.168.230.166:7002 [cluster]
netstat -tnlp | grep redis
tcp 0 0 192.168.230.166:17000 0.0.0.0:* LISTEN 61020/redis-server
tcp 0 0 192.168.230.166:17001 0.0.0.0:* LISTEN 61024/redis-server
tcp 0 0 192.168.230.166:17002 0.0.0.0:* LISTEN 61029/redis-server
tcp 0 0 192.168.230.166:7000 0.0.0.0:* LISTEN 61020/redis-server
tcp 0 0 192.168.230.166:7001 0.0.0.0:* LISTEN 61024/redis-server
tcp 0 0 192.168.230.166:7002 0.0.0.0:* LISTEN 61029/redis-server
5. 建立叢集
Redis 官方提供了 redis-trib.rb 這個工具,就在解壓目錄的 src 目錄中,第三步中已將它複製到 /usr/local/bin 目錄中,可以直接在命令列中使用了。使用下面這個命令即可完成安裝。
redis-trib.rb create --replicas 1 192.168.230.166:7000 192.168.230.166:7001 192.168.230.166:7002 192.168.230.167:7003 192.168.230.167:7004 192.168.230.167:7005
檢視叢集情況
redis-trib.rb check 192.168.230.166:7000
如果建立叢集出錯,需要安裝ruby環境:
安裝ruby環境:
1.yum install ruby
2.yum install rubygems
3.gem install redis
Centos預設支援ruby到2.0.0,redis需要最低是2.2.2。解決辦法是 先安裝rvm 再把ruby版本升級到2.3.3
1.sudo yum install curl
2.安裝rvm
curl -L get.rvm.io | bash -s stable
3.
source /usr/local/rvm/scripts/rvm
4.檢視rvm庫中已知的ruby版本
rvm list known
5.安裝一個ruby版本
rvm install 2.3.3
6.使用一個ruby版本
rvm use 2.3.3
7.解除安裝一個已知版本
rvm remove 2.0.0
8.檢視版本
ruby --version
9.再安裝redis
gem install redis
其他錯誤處理:
解決方式 : 是因為之前建立redis叢集時錯誤因起的,只需要把 redis.conf 中指定的檔案刪除即可,一般預設的檔名是: nodes.conf , 所有的節點下都有一個這樣的檔案,所以需要把所有的nodes.conf都刪除即可
編寫啟動指令碼:
#!/bin/sh
#chkconfig: 2345 80 90
#description:開機自動啟動的指令碼程式
redis-server /tools/redis_cluster/7000/redis.conf
redis-server /tools/redis_cluster/7001/redis.conf
redis-server /tools/redis_cluster/7002/redis.conf
chmod 777 start-all.sh //設定許可權
./start-all.sh 執行
如果需要開機啟動則將寫好的start-all.sh指令碼移動到/etc/rc.d/init.d/目錄下
cd /etc/rc.d/init.d/
chmod +x start-all.sh
新增指令碼到開機自動啟動專案中
chkconfig --add autostart.sh
chkconfig autostart.sh on