集群后tomcat context.xml的配置
<!-- 集群配置-->
<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
<Manager className="com.radiadesign.catalina.session.RedisSessionManager"
maxInactiveInterval="60"
password="123456"
sentinelMaster="mymaster"
sentinels="192.168.1.249:7000,192.168.1.249:7001,192.168.1.249:7002,192.168.1.248:7003,192.168.1.248:7004,192.168.1.248:7005"/>
原文:http://blog.csdn.net/yj327243832a/article/details/52785100
參考了以下文章
http://blog.sina.com.cn/s/blog_53b45c4d0102wg10.html
http://www.linuxidc.com/Linux/2015-08/121845.htm
https://my.oschina.net/guol/blog/506193
必讀:以下內容寫的ip不一致是因為部分內容是從網頁上復制來的,實際ip要改成自己的,如果集群的redis不在同一服務器上,則不要寫127.0.0.1,要改成實際服務器的ip,不然集群時會連接不到其他機器的redis節點。
改成真實ip后,則客戶端連接都要寫此ip,不能再寫127.0.0.1。如果redis節點都在一台服務器上則可以寫127.0.0.1
(要讓集群正常工作至少需要3個主節點,在這里我們要創建6個redis節點,其中三個為主節點,三個為從節點,對應的redis節點的ip和端口對應關系如下)
192.168.1.249:7000
192.168.1.249:7001
192.168.1.249:7002
192.168.1.248:7003
192.168.1.248:7004
192.168.1.248:7005
查看redis
ps -ef |grep redis
殺死全部redis的節點:
pkill -9 redis
1.首先安裝好一個redis實例,已安裝好的此歩可不看
、安裝redis
上傳服務器,解壓,編譯
tar -zxvf redis-3.2.1.tar.gz
cd redis-3.2.1
make
2.可以在同目錄下新建文件夾redis_cluster

3.在redis_cluster文件夾下創建log文件夾,此路徑后面會用在redis.conf logfile的配置中,便於統一存放日志
4.在redis_cluster文件夾下創建各節點的文件夾名稱,建議用端口號命名,如下圖:

5.將安裝好的redis實例中的redis.conf分別copy至7000、7001、7002文件夾中,
並修改如下內容
port 7000
cluster-config-file nodes-7000.conf
dbfilename dump-7000.rdb
logfile "/usr/local/redis_cluster/log/7000.log"
bind 192.168.1.249
appendonly yes
daemonize yes
cluster-enabled yes
cluster-node-timeout 15000
rename-command CONFIG ""
我在192.168.1.248服務上也這樣操作了一遍,將端口分配為7003、7004、7005。
logfile "/usr/local/redis_cluster/log/"
dir /usr/local/redis_cluster
在redis_cluster目錄下創建log文件夾
在/usr/local/redis-3.2.4/src目錄下,執行啟動redis進程命令:
./redis-server /usr/local/redis_cluster/7000/redis.conf
./redis-server /usr/local/redis_cluster/7001/redis.conf
./redis-server /usr/local/redis_cluster/7002/redis.conf
在192.168.1.248上也同樣操作,在/usr/local/redis-3.2.4/src目錄下:
./redis-server /usr/local/redis_cluster/7003/redis.conf
./redis-server /usr/local/redis_cluster/7004/redis.conf
./redis-server /usr/local/redis_cluster/7005/redis.conf
bind要設置該服務器實際的ip,不要設置127.0.0.1,不然不同服務器直接集群會找不到其他集群的節點,如果是單台服務器可以配置為127.0.0.1
執行集群創建命令,還是在/usr/local/redis-3.2.4/src目錄下:
./redis-trib.rb create --replicas 1 192.168.1.249:7000 192.168.1.249:7001 127.0.0.1:7002 192.168.1.248:7003 192.168.1.248:7004 192.168.1.248:7005
遇到執行集群創建時報錯處理:
/usr/bin/env: ruby: No such file or directory
報錯:/usr/bin/env: ruby: No such file or directory
因為是執行的ruby的腳本,需要ruby的環境
安裝ruby環境
[root@apec-001 src]# yum install ruby
再次執行創建集群命令
[root@apec-001 src]# ./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:7003 127.0.0.1:7004 127.0.0.1:7005
/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- redis (LoadError)
from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
from ./redis-trib.rb:25:in `<main>'
報錯cannot load such file -- redis (LoadError)...
缺少rubygems組件,使用yum安裝
[root@apec-001 src]# yum install rubygems
再次執行創建集群命令
[root@apec-001 src]# ./redis-trib.rb create --replicas 1 192.168.1.249:7000 192.168.1.249:7001 127.0.0.1:7002 192.168.1.248:7003 192.168.1.248:7004 192.168.1.248:7005
/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- redis (LoadError)
from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
from ./redis-trib.rb:25:in `<main>'
缺少redis和ruby的接口,使用gem 安裝
gem install redis
再次執行創建集群命令后,根據提示輸入yes后集群創建成功
[root@apec-001 src]# ./redis-trib.rb create --replicas 1 192.168.8.21:7000 192.168.8.21:7001 192.168.8.21:7002 192.168.8.21:7003 192.168.8.21:7004 192.168.8.21:7005

6、測試
使用redis-cli命令進入集群環境
./redis-cli -c -p 7000(此命令只能連接到bind為127.0.0.1)

./redis-cli -c -h 192.168.1.249 -p 7000 (這個命令可以指定連接到哪個服務器上的redis節點)
如果redis設置密碼的話,操作前需要輸入auth 密碼

集群情況檢查
在/usr/local/redis-3.2.4/src目錄下執行(設置密碼后不能直接執行此命令了,需要先
執行 ./redis-cli -c -h 192.168.1.248 -p 7003 再auth 密碼 再執行cluster nodes
)
./redis-cli -c -h 192.168.1.248 -p 7003 cluster nodes

或者
./redis-trib.rb check 192.168.1.248:7003
端口號根據實際的來
效果:

查看集群目前狀況:
在/usr/local/redis-3.2.4/src目錄下執行
-h可以指定ip,bind為ip的必須輸入-h ip
./redis-cli -c -p 7000(這個只能連接bind為127.0.0.1的)
./redis-cli -h 192.168.1.249 -c -p 7000
連接成功后輸入cluster info
下圖的示例是我加入密碼后的,如果沒有設置密碼是不會要求輸入密碼的.

測試存值取值:
(下面是別人測試的,所以ip和我的不同)
示例說明了redis會自動跳轉到key所在的節點服務器與端口上。
127.0.0.1:7000> set foo bar
-> Redirected to slot [12182] located at 127.0.0.1:7002
OK
127.0.0.1:7002> set hello world
-> Redirected to slot [866] located at 127.0.0.1:7000
OK
127.0.0.1:7000> get foo
-> Redirected to slot [12182] located at 127.0.0.1:7002
"bar"
127.0.0.1:7000> get hello
-> Redirected to slot [866] located at 127.0.0.1:7000
"world"
下圖是我測試的,可能是因為6個加點都加了密碼,所以跳了好幾個節點都輸入了密碼才保存成功的

隨便打開一個 節點的nodes.conf文件內容

6739eece298760a2ee4f81a70e1ae9c2401234e2 192.168.1.248:7005 master - 0 1476758650335 7 connected 6827-10922
4f656a887b12a03e1c64f7585e77556ed06a988d 192.168.1.249:7000 myself,slave 6739eece298760a2ee4f81a70e1ae9c2401234e2 0 0 1 connected
3fa0a3ff79be99c45fa378572a3e5f2ecf8ab520 192.168.1.249:7002 slave ec9fb7461190a04155ad36846aa955c184d8e991 0 1476758648188 5 connected
e35f421a07ab04481ccd41e8c38a2b1e0a85afa9 192.168.1.249:7001 slave c7342df9eb32f0d58b1251e53ca716f85836fa26 0 1476758650230 9 connected
c7342df9eb32f0d58b1251e53ca716f85836fa26 192.168.1.248:7003 master - 0 1476758649212 9 connected 0-6826 10923-12287
ec9fb7461190a04155ad36846aa955c184d8e991 192.168.1.248:7004 master - 0 1476758647268 5 connected 12288-16383
vars currentEpoch 9 lastVoteEpoch 0
集群時密碼設置
方法1.集群前設置密碼
需要修改gem的redis工具下的一個文件,我這里是默認安裝,路徑如下:/usr/lib/ruby/gems/1.8/gems/redis-3.2.1/lib/redis/client.rb ,修改內容如下:

方法2.集群后設置密碼
對每一個節點的redis.conf修改 requirepass 123456
然后重啟即可
我是用的方法2
