Linux環境redis集羣搭建

集羣后tomcat context.xml的配置html

<!-- 集羣配置-->node

<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"/>linux

 

 

原文:http://blog.csdn.net/yj327243832a/article/details/52785100redis

 參考瞭如下文章tomcat

 http://blog.sina.com.cn/s/blog_53b45c4d0102wg10.htmlruby

 http://www.linuxidc.com/Linux/2015-08/121845.htm服務器

 https://my.oschina.net/guol/blog/506193session

 

必讀:如下內容寫的ip不一致是由於部份內容是從網頁上覆制來的,實際ip要改爲本身的,若是集羣的redis不在同一服務器上,則不要寫127.0.0.1,要改爲實際服務器的ip,否則集羣時會鏈接不到其餘機器的redis節點。app

改爲真實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、700一、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服務上也這樣操做了一遍,將端口分配爲700三、700四、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

 

六、測試

使用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

相關文章
相關標籤/搜索