redis多實例集羣搭建與使用

主機分配

主機名 IP地址 端口 角色
node1 192.168.124.3 6377 實例一
node1 192.168.124.3 6378 實例二
node1 192.168.124.3 6379 實例三
node2 192.168.124.4 6380 實例四
node2 192.168.124.4 6381 實例五
node2 192.168.124.4 6382 實例六
node1 192.168.124.3 管理點

環境搭建

- node1上操作(分別進行以下操作)
[root@node1 ~]# mkdir cluster
[root@node1 ~]# cd cluster/
[root@node1 cluster]# mkdir node1
[root@node1 cluster]# mkdir node2
[root@node1 cluster]# mkdir node3
[root@node1 cluster]# ls
node1  node2  node3
[root@node1 ~]# tar -zxvf redis-4.0.8.tar.gz -C cluster/node1/
[root@node1 ~]# tar -zxvf redis-4.0.8.tar.gz -C cluster/node2/
[root@node1 ~]# tar -zxvf redis-4.0.8.tar.gz -C cluster/node3/
[root@node1 ~]# cd cluster/node1/redis-4.0.8/
[root@node1 redis-4.0.8]# make 
[root@node1 redis-4.0.8]# make install
[root@node1 redis-4.0.8]# ./utils/install_server.sh
##指定你的配置,本次安裝指定的是6377端口
- node2上操作(分別進行以下操作)
[root@node2 ~]# mkdir cluster
[root@node2 ~]# cd cluster/
[root@node2 cluster]# mkdir node4
[root@node2 cluster]# mkdir node5
[root@node2 cluster]# mkdir node6
[root@node2 cluster]# ls
node4  node5  node6
[root@node2 ~]# tar -zxvf redis-4.0.8.tar.gz -C cluster/node4/
[root@node2 ~]# tar -zxvf redis-4.0.8.tar.gz -C cluster/node5/
[root@node2 ~]# tar -zxvf redis-4.0.8.tar.gz -C cluster/node6/

修改配置文件

[root@node1 ~]# /etc/init.d/redis_6377 stop
[root@node1 ~]# vim /etc/redis/6377.conf
bind 192.168.124.3
port 6377
cluster-enabled yes
cluster-config-file nodes-6377.conf
cluster-node-timeout 5000
:wq
[root@node1 ~]# /etc/init.d/redis_6377 start
[root@node1 ~]# cd cluster/node2/redis-4.0.8/
[root@node1 redis-4.0.8]# make 
[root@node1 redis-4.0.8]# make install
[root@node1 redis-4.0.8]# ./utils/install_server.sh
##指定你的配置,本次安裝指定的是6378端口
[root@node1 ~]# /etc/init.d/redis_6378 stop
[root@node1 ~]# vim /etc/redis/6378.conf
bind 192.168.124.3
port 6378
cluster-enabled yes
cluster-config-file nodes-6378.conf
cluster-node-timeout 5000
:wq
[root@node1 ~]# /etc/init.d/redis_6378 start
[root@node1 ~]# cd cluster/node3/redis-4.0.8/
[root@node1 redis-4.0.8]# make 
[root@node1 redis-4.0.8]# make install
[root@node1 redis-4.0.8]# ./utils/install_server.sh
##指定你的配置,本次安裝指定的是6379端口
[root@node1 ~]# /etc/init.d/redis_6379 stop
[root@node1 ~]# vim /etc/redis/6379.conf
bind 192.168.124.3
port 6379
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 5000
:wq
[root@node1 ~]# /etc/init.d/redis_6379 start
[root@node2 ~]# cd cluster/node4/redis-4.0.8/
[root@node2 redis-4.0.8]# make 
[root@node2 redis-4.0.8]# make install
[root@node2 redis-4.0.8]# ./utils/install_server.sh
##指定你的配置,本次安裝指定的是6380端口
[root@node2 ~]# /etc/init.d/redis_6380 stop
[root@node2 ~]# vim /etc/redis/6380.conf
bind 192.168.124.4
port 6380
cluster-enabled yes
cluster-config-file nodes-6380.conf
cluster-node-timeout 5000
:wq
[root@node2 ~]# /etc/init.d/redis_6380 start
[root@node2 ~]# cd cluster/node5/redis-4.0.8/
[root@node2 redis-4.0.8]# make 
[root@node2 redis-4.0.8]# make install
[root@node2 redis-4.0.8]# ./utils/install_server.sh
##指定你的配置,本次安裝指定的是6381端口
[root@node2 ~]# /etc/init.d/redis_6381 stop
[root@node2 ~]# vim /etc/redis/6381.conf
bind 192.168.124.4
port 6381
cluster-enabled yes
cluster-config-file nodes-6381.conf
cluster-node-timeout 5000
:wq
[root@node2 ~]# /etc/init.d/redis_6381 start
[root@node2 ~]# cd cluster/node6/redis-4.0.8/
[root@node2 redis-4.0.8]# make 
[root@node2 redis-4.0.8]# make install
[root@node2 redis-4.0.8]# ./utils/install_server.sh
##指定你的配置,本次安裝指定的是6382端口
[root@node2 ~]# /etc/init.d/redis_6382 stop
[root@node2 ~]# vim /etc/redis/6382.conf
bind 192.168.124.4
port 6382
cluster-enabled yes
cluster-config-file nodes-6382.conf
cluster-node-timeout 5000
:wq
[root@node2 ~]# /etc/init.d/redis_6382 start

查看狀態

[root@node1 ~]# netstat -lnput | grep redis
tcp        0      0 192.168.124.3:16377     0.0.0.0:*               LISTEN      1034/redis-server 1 
tcp        0      0 192.168.124.3:16378     0.0.0.0:*               LISTEN      1031/redis-server 1 
tcp        0      0 192.168.124.3:16379     0.0.0.0:*               LISTEN      1032/redis-server 1 
tcp        0      0 192.168.124.3:6377      0.0.0.0:*               LISTEN      1034/redis-server 1 
tcp        0      0 192.168.124.3:6378      0.0.0.0:*               LISTEN      1031/redis-server 1 
tcp        0      0 192.168.124.3:6379      0.0.0.0:*               LISTEN      1032/redis-server 1
[root@node2 ~]# netstat -lnput | grep redis
tcp        0      0 192.168.124.4:16380     0.0.0.0:*               LISTEN      1082/redis-server 1 
tcp        0      0 192.168.124.4:16381     0.0.0.0:*               LISTEN      1083/redis-server 1 
tcp        0      0 192.168.124.4:16382     0.0.0.0:*               LISTEN      1065/redis-server 1 
tcp        0      0 192.168.124.4:6380      0.0.0.0:*               LISTEN      1082/redis-server 1 
tcp        0      0 192.168.124.4:6381      0.0.0.0:*               LISTEN      1083/redis-server 1 
tcp        0      0 192.168.124.4:6382      0.0.0.0:*               LISTEN      1065/redis-server 1

搭建管理節點

[root@node1 ~]# yum  -y  install   rubygems
[root@node1 ~]# gem install redis-3.2.1.gem
[root@node1 ~]# mkdir  /root/bin    
[root@node1 ~]# tar -zxvf redis-4.0.8.tar.gz
[root@node1 ~]# cd  redis-4.0.8/src/
[root@node1 ~]# cp  redis-trib.rb   /root/bin/ 
[root@node1 ~]# chmod  +x   /root/bin/redis-trib.rb
[root@node1 ~]# redis-trib.rb 

創建集羣

[root@node1 ~]#  redis-trib.rb create  --replicas 192.168.124.3:6377 192.168.124.3:6378 192.168.124.3:6379 192.168.124.4:6380 192.168.124.4:6381 192.168.124.4:6382
[OK] All 16384 slots covered.   ##成功
- 檢測集羣信息
[root@node1 ~]# redis-trib.rb check 192.168.124.3:6377
>>> Performing Cluster Check (using node 192.168.124.3:6377)
M: 4ccdc9069e2be50552dfde275d62fa9c13712135 192.168.124.3:6377
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: 20aef13d825914fa97f20341c26d629463a7c641 192.168.124.4:6380
   slots: (0 slots) slave
   replicates e95134820b8e10345aa5044907c97e95d8a36ae7
M: e95134820b8e10345aa5044907c97e95d8a36ae7 192.168.124.3:6379
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
M: 62ce3137c41db3016d0c66d63b945ceeb312f8b5 192.168.124.3:6378
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 84ef0546cda459e8920a550bef7a5b244b35e139 192.168.124.4:6381
   slots: (0 slots) slave
   replicates 62ce3137c41db3016d0c66d63b945ceeb312f8b5
S: 6365c6d9c4f853a4bc8baaf9981c3874a4393f1e 192.168.124.4:6382
   slots: (0 slots) slave
   replicates 4ccdc9069e2be50552dfde275d62fa9c13712135
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
- 查看集羣詳細信息
[root@node1 ~]# redis-cli -c -h 192.168.124.3 -p 6377 
192.168.124.3:6377> ping
PONG
192.168.124.3:6377> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:10
cluster_my_epoch:10
cluster_stats_messages_ping_sent:13836
cluster_stats_messages_pong_sent:9706
cluster_stats_messages_auth-req_sent:10
cluster_stats_messages_update_sent:2
cluster_stats_messages_sent:23554
cluster_stats_messages_ping_received:9701
cluster_stats_messages_pong_received:9567
cluster_stats_messages_fail_received:6
cluster_stats_messages_auth-ack_received:2
cluster_stats_messages_update_received:8
cluster_stats_messages_received:19284

訪問集羣

[root@node1 ~]# redis-cli -c -h 192.168.124.3 -p 6377
192.168.124.3:6377> keys *
1) "3"
192.168.124.3:6377> set 123 123
-> Redirected to slot [5970] located at 192.168.124.3:6379
OK
192.168.124.3:6379> set 456 456
-> Redirected to slot [13712] located at 192.168.124.3:6378
OK
192.168.124.3:6378> 

注:如果想設置密碼,可以到配置文件中配置。比如你的數據庫設置的密碼爲123456

[root@node1 ~]# find / -name "client.rb"
/usr/local/share/gems/gems/redis-3.2.1/lib/redis/client.rb
[root@node1 ~]# vim /usr/local/share/gems/gems/redis-3.2.1/lib/redis/client.rb
class Redis
  class Client

    DEFAULTS = {
      :url => lambda { ENV["REDIS_URL"] },
      :scheme => "redis",
      :host => "127.0.0.1",
      :port => 6379,
      :path => nil,
      :timeout => 5.0,
      :connect_timeout => 5.0,
      :password => 123456,
      :db => 0,
      :driver => nil,
      :id => nil,
      :tcp_keepalive => 0,
      :reconnect_attempts => 1,
      :inherit_socket => false
    }

需把文件中的密碼改爲123456,如上所述。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章