redis集群的搭建与使用

redis3.0后出现了redis-cluster集群模式,不同于redis-sentinel模式的是玩全去中心化,没有主从之分,分布式存储,连接任何一个节点都可以,为了避免出现单点故障 所以我们一般都采用主备模式

最简单的集群三对主备,6个节点(这里采用3台机,伪集群)

 

192.168.172.72:7001 (master1)

192.168.172.72:7002 (slave1)

192.168.172.73:7003 (master)

192.168.172.737004 (slave2)

192.168.172.74:7005 (master3)

192.168.172.74:7006 (slave3)


1、安装环境依赖:

redis集群时需要使用一个ruby的脚本来完成集群,ruby环境安装一台机即可,无需每个节点都安装
(1) 安装ruby环境
命令: yum -y install ruby 

或去http://www.ruby-lang.org/zh_cn/downloads下载,源码安装

解压后进入解压目录

#./configure
#make
#make install

(2) 安装ruby的包管理器
命令:yum -y install rubygems

或去https://rubygems.org/gems/rubygems-update下载,gem安装

命令:gem install rubygems-update-2.7.6.gem

(3) 安装ruby的gem包

https://rubygems.org/gems/redis/下载

命令:gem install redis-3.3.3.gem

 

2、redis安装与配置

(1)redis基本安装

以192.168.172.72为例安装,去https://redis.io/下载稳定版,上传至服务器

例如:/opt/soft/redis/ 下,进行解压

# cd /opt/soft/redis  
# tar zxvf redis-4.0.9.tar.gz  

然后进入到解压的目录src下,make进行编译

#make  

编译无误后make install进行安装,这里安装到了/usr/local/redis-cluster

# make install PREFIX=/usr/local/redis-cluster  

(2)redis文件夹配置

安装后会在/usr/local/redis-cluster 目录下出现bin文件夹,里边包含了redis的基本命令

在redis-cluster下创建data目录,用作数据存储位置

#mkdir /usr/local/redis-cluster/7001/data
#mkdir /usr/local/redis-cluster/7002/data

把/usr/local/redis-cluster/bin文件夹分别复制到7001、7002文件夹下

#cp -r/usr/local/redis-cluster/bin/  /usr/local/redis-cluster/7001/
#cp -r/usr/local/redis-cluster/bin/  /usr/local/redis-cluster/7002/

进入到redis的安装目录下的src目录下找到到 redis-trib.rb这个文件, 这是创建集群时需要的脚本,

将其复制到/usr/local/redis-cluster/7001/bin/下

#cp redis-trib.rb /usr/local/reids-cluster/7001/bin/

分别在7001,7002下创建conf文件夹

#mkdir /usr/local/redis-cluster/7001/conf
#mkdir /usr/local/redis-cluster/7002/conf

分别把redis配置文件复制到conf下

#cp redis.conf /usr/local/reids-cluster/7001/conf
#cp redis.conf /usr/local/reids-cluster/7002/conf

(3)配置redis

 在redis-cluster下vim 7001/conf/redis.conf 编辑进行配置

daemonize yes           #默认no,把no改为yes,yes表示守护进程启动redis
pidfile /var/run/redis/redis-7001.pid    #redis进程路径
port 7001          #默认端口6379,可自行修改
cluster-enabled yes #去掉注释,开启集群
cluster-config-file nodes_7001.conf #去掉注释,集群信息存放文件
cluster-node-timeout 15000  #去掉注释,集群节点通信时,超过这个时间,即节点失联,就视为节点故障
bind 192.168.172.72    #默认127.0.0.1 修改后可远程登录
dir /usr/local/redis-cluster/7001/data/     #redis数据存储路径,rdb、aof文件也会写在这个目录appendonly no

7002进行同样操作,vim 7002/conf/redis.conf ,只需修改对应地方端口为7002即可

(4)文件分发

把配置好的redis-cluster文件夹分别复制到另外两台机上

#scp -r /usr/local/reids-cluster/ 192.168.172.73:`pwd`
#scp -r /usr/local/reids-cluster/ 192.168.172.74:`pwd`

复制时若之前没有ssh免密钥操作,需输入密码才能进行复制

复制成功后,分别编辑每个节点conf下的redis.conf,修改对应地方端口即可

 

3、 创建集群

 

(1) 创建一个能够批量启动的脚本程序
命令:vim start-cluster.sh(要开启节点间ssh免登录)

#!/bin/sh
ssh 192.168.172.72 "cd /usr/local/reids-cluster/redis7001/bin;./redis-server ../conf/redis.conf;exit"
ssh 192.168.172.72 "cd /usr/local/reids-cluster/redis7002/bin;./redis-server ../conf/redis.conf;exit"
ssh 192.168.172.73 "cd /usr/local/reids-cluster/redis7003/bin;./redis-server ../conf/redis.conf;exit"
ssh 192.168.172.73 "cd /usr/local/reids-cluster/redis7004/bin;./redis-server ../conf/redis.conf;exit"
ssh 192.168.172.74 "cd /usr/local/reids-cluster/redis7005/bin;./redis-server ../conf/redis.conf;exit"
ssh 192.168.172.74 "cd /usr/local/reids-cluster/redis7006/bin;./redis-server ../conf/redis.conf;exit"
echo "the redis-cluster start is OK!"

添加启动脚本可执行权限
命令:chmod +x start-cluster.sh
执行这个批量启动的脚本,启动各个节点

命令:[root@localhost redis-cluster]# ./start-cluster.sh 

(2)开始创建集群,每个主节点创建一个从节点,命令:

./redis-trib.rb create --replicas 1 192.168.172.72:7001 192.168.172.72:7002 192.168.172.73:7003 192.168.172.73:7004 192.168.172.74:7005  192.168.172.74:7006


控制台会显示如下信息 输入 yes

>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.172.72:7001
192.168.172.73:7003
192.168.172.74:7005
Adding replica 192.168.172.73:7004 to 192.168.172.72:7001
Adding replica 192.168.172.74:7006 to 192.168.172.73:7003
Adding replica 192.168.172.72:7002 to 192.168.172.74:7005
M: b5b8f0576fb874978b60e5c1bf15474510389d05 192.168.172.72:7001
   slots:0-5460 (5461 slots) master
S: 5326c627de6e98985e574f1749dda8cb02db4bd8 192.168.172.72:7002
   replicates 003b04d7bb9c85ccc7e37223e86cea9d1bd8272a
M: 48af5d0273eae9ceeb7cb660cadc18c9bb093f9c 192.168.172.73:7003
   slots:5461-10922 (5462 slots) master
S: 4c6f0b5ec319210e7e5ed7f6592e4bfb01b4aa2f 192.168.172.73:7004
   replicates b5b8f0576fb874978b60e5c1bf15474510389d05
M: 003b04d7bb9c85ccc7e37223e86cea9d1bd8272a 192.168.172.74:7005
   slots:10923-16383 (5461 slots) master
S: 577601ffa7d989f4399debe4803af04f222c38f3 192.168.172.74:7006
   replicates 48af5d0273eae9ceeb7cb660cadc18c9bb093f9c
Can I set the above configuration? (type 'yes' to accept): yes

如果控制台输出如下信息表集群创建成功

>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join.....
>>> Performing Cluster Check (using node 192.168.172.72:7001)
M: b5b8f0576fb874978b60e5c1bf15474510389d05 192.168.172.72:7001
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: 48af5d0273eae9ceeb7cb660cadc18c9bb093f9c 192.168.172.73:7003
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 577601ffa7d989f4399debe4803af04f222c38f3 192.168.172.74:7006
   slots: (0 slots) slave
   replicates 48af5d0273eae9ceeb7cb660cadc18c9bb093f9c
M: 003b04d7bb9c85ccc7e37223e86cea9d1bd8272a 192.168.172.74:7005
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 5326c627de6e98985e574f1749dda8cb02db4bd8 192.168.172.72:7002
   sl
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

 

(3) 停止集群,编写停止脚本

命令:vim stop-cluster.sh

#!/bin/sh  
echo "redis-cluster is stopping....."
/usr/local/reids-cluster/redis7002/bin/redis-cli -h 192.168.172.72 -p 7001 shutdown  
/usr/local/reids-cluster/redis7002/bin/redis-cli -h 192.168.172.72 -p 7002 shutdown  
/usr/local/reids-cluster/redis7002/bin/redis-cli -h 192.168.172.73 -p 7003 shutdown  
/usr/local/reids-cluster/redis7002/bin/redis-cli -h 192.168.172.73 -p 7004 shutdown  
/usr/local/reids-cluster/redis7002/bin/redis-cli -h 192.168.172.74 -p 7005 shutdown  
/usr/local/reids-cluster/redis7002/bin/redis-cli -h 192.168.172.74 -p 7006 shutdown 
echo "Ok!redis-cluster have been stopped!" 

 添加启动脚本可执行权限
 命令:chmod +x start-cluster.sh
 执行脚本,停止集群
命令:[root@localhost redis-cluster]# ./stop-cluster.sh 

(4)重新启动集群

[root@localhost redis-cluster]# ./start-cluster.sh 

(5)查看Redis集群

可以连接集群中的任意一个节点进行查看
命令:[root@localhost redis-cluster]# ./redis01/redis-cli -h 192.168.172.71 -p 7001 -c(-c表示集群)

连接成功后

cluster info       打印集群的信息

192.168.172.72:7001> 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:7
cluster_my_epoch:7
cluster_stats_messages_sent:9873
cluster_stats_messages_received:9860

cluster nodes   列出集群当前已知的所有节点(node),以及这些节点的相关信息  

192.168.172.72:7001> cluster nodes
3c143f98ab241692f997ea0275be7e3d357640d8 192.168.172.72:7001 myself,master - 0 1525126958253 2 connected 5461-10922 0 0 1 connected
927272450f6d014af7116de6ab4aa8b3fe873282 192.168.172.72:7004 slave a01bff6a9416a9f0ce77c55cfc3ccc78d24afb5b 
a01bff6a9416a9f0ce77c55cfc3ccc78d24afb5b 192.168.172.73:7002 master - 0 1525126961341 7 connected 0-5460
03ecc83b53dfa1419ce830a09457a0c746ad3d95 192.168.172.73:7003 master - 0 1525126957212 3 connected 10923-16383
9c0b0f2564ee476aaf1a2ecacffd9790e7afb972 192.168.172.74:7006 slave 03ecc83b53dfa1419ce830a09457a0c746ad3d95 0 1525126956185 6 connected
cbf1baa11eb49552b35d937dedee76f16db8b8be 192.168.172.74:7005 slave 3c143f98ab241692f997ea0275be7e3d357640d8 0 1525126960308 5 connected

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值