redis缓存高可用集群的搭建
高可用集群:
redis集群是一个由多个主从节点群组成的分布式服务群,它具有复制、高可用和分片特性。
redis集群不需要sentine哨兵也能完成节点移除和故障转移的功能 。需要将每个节点设置成
集群模式,这种集群模式没有中心节点,可以水平扩展,据官方文档称可以线性扩展到1000
个节点。redis集群的性能和高可用性均优于之前版本的哨兵模式,且集群配置非常简单
------------------------------------------------------------------------------------------------------------------------
redis集群需要至少要三个master节点,我们这里搭建三个master节点,并且给每个master再
搭建一个slave节点,总共6个redis节点,由于节点数较多,这里采用在一台机器上创建6个redis
实例,并将这6个redis实例配置成集群模式,所以这里搭建的是伪集群模式,当然真正的分布式
集群配置方法几乎一样。
第一步:在/usr/local下创建文件夹redis-cluster,然后在其下面分别创建6个文件夹:
- mkkir -p /usr/local/redis-cluster
- mkdir 8010、mkdir 8011、mkdir 8012、mkdir 8013、mkdir 8014、mkdir 8015
第二步:把之前的redis.conf配置文件copy到8010下,修改如下内容:
- daemonize yes
- prot 8010 (分别对每个机器的端口号进行设置)
- bind 192.168.0.60 (必须绑定当前机器的ip,这里方便redis集群定位机器,不绑定可能会出现循环查找集群节点机器的情况)
- dir /usr/local/redis-cluster/8010/ (指定数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据)
- cluster-enabled yes (启动集群模式)
- cluster-config-file nodes-8010.conf (这里801x最好和port对应上)
- cluster-node-timeout 5000 (如其中一个节点的心跳停止超过5秒中,就会被集群踢出去)
- appendonly yes (日志模式打开)
第三步:把修改后的配置文件,分别copy到各个文件,注意每个文件要修改2、4、6项里的端口号,可以用此批量替换
- %s/原字符串/新字符串/g (所有文本中全局替换)
第四步:由于redis集群需要使用ruby命令,拟我们需要安装ruby
- yum install ruby
- yum install rubygems
- gem install redis --version 3.0.0 (安装redis和ruby的接口)
第五步:分别启动6个redis实例,然后检查是否启动成功
- /usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/801*/redis.conf 启动服务
- ps -ef | grep redis 查看是否启动成功
第六步:在redis的安装目录下执行执行redis-trib.rb命令创建整个redis集群
- cd /usr/local/redis/src
- ./redis-trib.rb create --replicas 1 192.168.26.136:8010 192.168.26.136:8011 192.168.26.136:8012 192.168.26.136:8013 192.168.26.136:8014 192.168.26.136:8015
- 注:上面的红色1代表着 总主服务器数量和总从服务器数量的一个比值,后面跟的ip和端口 内部有自己的规则对应主从配合(比如:前三个为主,后三个为从,且第1个和第4个对应主从关系,第2个和第5个对应....)
第七步:验证集群
- 连接任意一个客户端即可:./redis-cli -c -h -p (-c 表示集群模式,指定ip地址和端口号)
- 如:/usr/local/redis/bin/redis-cli -c -h 192.168.26.136 -p 801*
- 进行验证:cluster info (查看集群信息)、cluster nodes (查看节点列表)
- 进行数据操作验证
- 关闭集群则需要逐个进行关闭,使用命令:
- /usr/local/redis/bin/redis-cli -c -h 192.168.126.136 -p 801* shutdown
PS:当出现集群无法启动时,删除临时的数据文件,再次重新启动每一个redis服务,然后重新构造集群环境
redis-cli 来连接每个节点
使用命令 flushdb
cluster reset

浙公网安备 33010602011771号