最近接手了一个PHP老项目,里面用到了redis缓存,基于sentinel模式的集群。项目里面redis的连接读写都是用PHP实现的,并把不同的信息存储于不同的dbindex下,即分db存储内容。看了下,由于本人是搞Java的,决定用Java进行重构。于是就进行一遍完整的基于sentinel模式redis的集群搭建,并集成于spring。以下为具体的实施过程。
一、redis的下载安装部分
本次使用的redis版本为3.0.7,下载地址:http://download.redis.io/releases/redis-3.0.7.tar.gz
redis的安装过程请参考我的上一篇博文,地址:http://blog.csdn.net/zh520qx/article/details/50977678
二、集群配置部分
1、本次实验为单机伪集群,redis为1个master、2个slave,3个哨兵sentinel
2、redis具体参数配置如下:
redis-master的配置redis.conf:
- pidfile /var/run/redis-6379.pid #[进程文件]
- port 6379 #[端口]
- bind 192.168.1.102 #[绑定的IP]
- requirepass joeffy #[读写前的密码校验]
----------------------------------------------------------------------------------------------------------------------------------------------
redis-slave1的配置redis.conf:
- pidfile /var/run/redis-7000.pid #[进程文件]
- port 7000 #[端口]
- slaveof 192.168.1.102 6379 #[指定主节点的IP、端口]
- masterauth joeffy #[主节点连接提制校验]
- requirepass joeffy #[读写前的密码校验]
----------------------------------------------------------------------------------------------------------------------------------------------
redis-slave2的配置redis.conf:
- pidfile /var/run/redis-7001.pid #[进程文件]
- port 7001 #[端口]
- slaveof 192.168.1.102 6379 #[指定主节点的IP、端口]
- masterauth joeffy #[主节点连接提制校验]
- requirepass joeffy #[读写前的密码校验]
-----------------------------------------------------------------------------------------------------------------------------------------------
上面为redis服务的参数配置,主从节点的配置区别为上面标红的两行参数,其他参数可视具体情况配置或默认。
3、sentinel哨兵的参数配置
哨兵1的参数配置sentinel.conf:
- port 26379
- sentinel monitor mymaster 192.168.1.102 6379 2
- sentinel auth-pass mymaster joeffy
------------------------------------------------------------------------------------------------------------------------------------------------
哨兵2的参数配置sentinel.conf:
- port 27000
- sentinel monitor mymaster 192.168.1.102 6379 2
- sentinel auth-pass mymaster joeffy
------------------------------------------------------------------------------------------------------------------------------------------------
哨兵3的参数配置sentinel.conf:
- port 27001
- sentinel monitor mymaster 192.168.1.102 6379 2
- sentinel auth-pass mymaster joeffy
------------------------------------------------------------------------------------------------------------------------------------------------
sentinel其他参数可视具体情况配置或默认。4、启动redis及哨兵服务,测试集群结果
先启动redis,再启动sentinel
启动redis-matser:./redis-server ../redis-6379/conf/redis.conf &
启动redis-slave1:./redis-server ../redis-7000/conf/redis.conf &
启动redis-slave2:./redis-server ../redis-7001/conf/redis.conf &
启动sentinel1:./redis-sentinel ../redis-6379/conf/sentinel.conf --sentinel &
启动sentinel2:./redis-sentinel ../redis-7000/conf/sentinel.conf --sentinel &
启动sentinel3:./redis-sentinel ../redis-7001/conf/sentinel.conf --sentinel &
查看服务启动情况:ps -ef|grep redis,若正确启动,如下图所示:
验证集群可用性:
用redis客户端,随意连接一个sentinel,,命令如:redis-cli -h 192.168.1.102 -p 26379 -a joeffy
连接成功后,执行如下命令sentinel masters,查看主节点如下图:
执行命令sentinel slaves mymaster,查看从节点:
读写验证就不截图了,各位可自行验证,至此基于sentinel模式的redis集群已经结束。三、集成spring
spring配置:
redis.properties配置:
测试代码:
测试结果:
至此,基于sentinel的redis集群,并集成spring结束。