redis集群搭建

redis3.0开始支持cluster

搭建环境:centos7,redis4.0.6

服务器ip

192.168.135.23  (7001、7002)

192.168.135.196(7004、7005)

192.168.135.229(7007、7008)

redis cluster安装

1、下载,解压,编译安装

  官网下载需要的版本:http://download.redis.io/releases/

#我的安装包存放路径
cd /www/package/
wget http://download.redis.io/releases/redis-4.0.6.tar.gz
tar -zxvf redis-4.0.6.tar.gz
cd redis-4.0.6
make

二进制文件编译完成后在src目录下.

创建集群目录,并将相关文件复制到该目录下(三个服务器相同操作)

mkdir /usr/local/redis_cluster
mkdir /usr/local/redis_cluster/conf

2、三台服务器每台创建两个redis节点

192.168.135.23  (7001、7002)192.168.135.196(7004、7005)192.168.135.229(7007、7008)复制成不同端口的配置文件好做记录

[root@localhost redis-4.0.6]# cp redis.conf /usr/local/redis_cluster/conf/redis_7001.conf
[root@localhost redis-4.0.6]# cp redis.conf /usr/local/redis_cluster/conf/redis_7002.conf
[root@localhost src]# cp redis-cli redis-server redis-trib.rb redis-benchmark /usr/local/redis_cluster/

3、修改配置文件,分别对redis_7001.conf,redis_7002.conf做以下修改

daemonize    yes                          //redis后台运行
pidfile  ./redis_7001.pid          //pidfile文件对应7001,7002
port  7001                                //端口7001,7002
cluster-enabled  yes                      //开启集群  把注释#去掉
cluster-config-file  nodes_7001.conf      //集群的配置 首次启动自动生成 7001,7002,记录了集群节点对应关系
cluster-node-timeout  5000                //请求超时  5秒
appendonly  yes                           //aof日志开启  有需要就开启,它会每次写操作都记录一条日志
bind 0.0.0.0                       //bind用于指定本机网卡对应的IP地址(任意)

192.168.135.196(7004、7005)192.168.135.229(7007、7008)这两台配置文件和上面一样,只需改下端口

4、启动三台服务器的6个节点,启动方式相同

[root@localhost redis-4.0.6]# cd /usr/local/redis_cluster/conf
[root@localhost redis-4.0.6]# ../redis-server redis_7001.conf
[root@localhost redis-4.0.6]# ../redis-server redis_7002.conf

192.168.135.196(7004、7005)192.168.135.229(7007、7008)同上操作

5、查看是否启动成功

   ps -ef | grep redis   #查看是否启动成功

   netstat -tnlp | grep redis #可以看到redis监听端口

6、创建集群

上面已经创建好了集群要用的6个节点,把上面这些节点串起来就好了,用官方提供的工具redis-trib.rb (/usr/local/redis_cluster/redis-trib.rb)

它是用ruby写的一个程序,所以我们还得安装ruby

请看这里:https://blog.csdn.net/u010533511/article/details/89389906

确认上面6个节点都启动了,也有了Ruby执行环境,可以开始将之前的6个实例组建成集群了。

/usr/local/redis_cluster/redis-trib.rb create --replicas 1 192.168.135.23:7001 192.168.135.23:7002 192.168.135.196:7004 192.168.135.196:7005 192.168.135.229:7007 192.168.135.229:7008

--replicas 1表示为集群的master节点创建1个slave。那么6个实例里,有三个master,有三个是slave。

验证集群状态

登录集群客户端,-c标识以集群方式登录,查看集群信息:

[root@localhost redis]# ./redis-cli -h 192.168.135.23 -p 7001 -c
192.168.135.23: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:12
cluster_my_epoch:11
cluster_stats_messages_sent:29237
cluster_stats_messages_received:28685
192.168.135.23:7001> cluster nodes
0e6af5f2237483cb06626219ace5bbef8b5544c5 192.168.135.23:7002 slave eaf8a9d52111c0c93fcdf8647d8746ea8e0c894c 0 1535963996415 5 connected
e25f82935f7d3b6438e275b3094ad24be21f6865 192.168.135.229:7008 slave 21adc6fe7665a0870ea4cd4b7167dda58cdb3f2c 0 1535963997424 12 connected
21adc6fe7665a0870ea4cd4b7167dda58cdb3f2c 192.168.135.229:7007 master - 0 1535963999443 12 connected 10923-16383
c9f4679d64279d2241c61767718ac43621fab1c0 192.168.135.23:7001 myself,master - 0 0 11 connected 0-5460
eaf8a9d52111c0c93fcdf8647d8746ea8e0c894c 192.168.135.196:7004 master - 0 1535963994400 2 connected 5461-10922
bf6a7566b6a2ab50549d22bd6cf627055bce9419 192.168.135.196:7005 slave c9f4679d64279d2241c61767718ac43621fab1c0 0 1535963998434 11 connected

至此,本以为redis集群配置完成了.测试直接关掉229上的所有redis服务,结果集群挂了,原因是

redis默认会交叉配置master和slave,但是我这样创建,一直都是只有前两个交叉第三个服务器(229)上面一直是单独的master->slave

 redis集群  通过选举方式进行容错,保证一台Server挂了还能跑,这个选举是全部集群超过半数以上的Master发现其他Master挂了后,会将其他对应的Slave节点升级成Master.  但是229上面的slave也一起挂了,这就导致 cluster is down

所以创建这个集群的时候应该先创建3个master 然后再创建3个slave两两交叉指定到对应的master上,如下文

https://blog.csdn.net/u010533511/article/details/89390387

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

为天空着色

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值