安装Redis
最小群集需要包含至少三个主节点,我们这里使用两台虚拟机做三主三从
上传Redis安装包到虚拟机
解压
tar xzvf redis-5.0.0.tar.gz
cd redis-5.0.0
make 然后执行make install
(如果需要指定安装目录)
cd redis-5.0.0 make cd src make install PREFIX=/data/redis
在
/data/redis
下新建 conf 目录mkdir /data/redis/conf
修改配置文件
#在Redis的源码包里面(redis5.0.0/src)里面拷贝配置文件
cp redis.conf /data/redis/conf/redis6379.conf
cp redis.conf /data/redis/conf/redis6389.conf
cp redis.conf /data/redis/conf/redis6399.conf
#分别修改这三个配置文件,修改内容如下
port 6379 //端口6379,6389,6399
bind 本机ip //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
daemonize yes //redis后台运行
pidfile /var/run/redis_7000.pid //pidfile文件对应7000,7001,7002
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_7000.conf //集群的配置 配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout 15000 //请求超时 默认15秒,可自行设置
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
在另一台虚拟机重复上面的操作(端口可以跟第一台机器一样,因为IP不同)
分别启动两台虚拟机的Redis
#第一台虚拟机
./data/redis/bin/redis-server /data/redis/conf/redis6379.conf
./data/redis/bin/redis-server /data/redis/conf/redis6389.conf
./data/redis/bin/redis-server /data/redis/conf/redis6399.conf
#第二台虚拟机
./data/redis/bin/redis-server /data/redis/conf/redis6379.conf
./data/redis/bin/redis-server /data/redis/conf/redis6389.conf
./data/redis/bin/redis-server /data/redis/conf/redis6399.conf
检查 redis 启动情况
#第一台虚拟机
[root@CentOS_Nginx data]# ps -ef |grep redis
root 25190 1 0 01:41 ? 00:00:38 ./redis-server 192.168.199.198:6379 [cluster]
root 25195 1 0 01:41 ? 00:00:35 ./redis-server 192.168.199.198:6389 [cluster]
root 25200 1 0 01:41 ? 00:00:29 ./redis-server 192.168.199.198:6399 [cluster]
root 25571 25435 0 06:12 pts/2 00:00:00 grep --color=auto redis
#第二台虚拟机
[root@localhost bin]# ps -ef | grep redis
root 13918 14580 0 14:09 pts/0 00:00:00 grep --color=auto redis
root 19289 1 0 11:22 ? 00:00:34 ./redis-server 192.168.199.187:6379 [cluster]
root 19294 1 0 11:22 ? 00:00:33 ./redis-server 192.168.199.187:6389 [cluster]
root 19299 1 0 11:22 ? 00:00:36 ./redis-server 192.168.199.187:6399 [cluster]
创建集群
**在Redis5.0中不在使用
redis-trib.rb
创建集群,所以也不用再安装 Ruby **
./data/redis/bin/redis-cli --cluster create 192.168.199.198:6379 192.168.199.198:6389 192.168.199.198:6399 192.168.199.187:6379 192.168.199.187:6389 192.168.199.187:6399 --cluster-replicas 1
如果设置了密码,可以加上
-a 密码
如下:
./data/redis/bin/redis-cli --cluster create 192.168.199.198:6379 192.168.199.198:6389 192.168.199.198:6399 192.168.199.187:6379 192.168.199.187:6389 192.168.199.187:6399 -a 123456 --cluster-replicas 1
出现如下提示:
到这集群就搭建完成了
验证集群
#登录一台Redis
[root@CentOS_Nginx bin]# ./redis-cli -p 6379 -h 192.168.199.198
192.168.199.198:6379> auth an3605958
OK
192.168.199.198:6379> 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:2
cluster_current_epoch:9
cluster_my_epoch:7
cluster_stats_messages_ping_sent:10901
cluster_stats_messages_pong_sent:10343
cluster_stats_messages_meet_sent:1
cluster_stats_messages_update_sent:1
cluster_stats_messages_sent:21246
cluster_stats_messages_ping_received:10338
cluster_stats_messages_pong_received:10901
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:21244
192.168.199.198:6379>
#看到cluster_state:ok说明成功
还可以使用官方写好的redis-cluster脚本,进入redis根目录,里面有一个脚本(与它所包含的目录同名),它是一个简单的bash脚本。要启动具有3个主服务器和3个从服务器的6节点集群,只需键入以下命令
cd utils/create-cluster
## 启动
create-cluster start
## 创建集群
create-cluster create
您现在可以与群集交互,默认情况下,第一个节点将从端口30001开始,关闭命令为
## 关闭
create-cluster stop
整合spring-boot
添加maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.0.3.RELEASE</version>
</dependency>
在application.yml 添加Redis配置
spring:
redis:
cluster:
nodes: 192.168.199.198:6379,192.168.199.198:6389,192.168.199.198:6399,192.168.199.187:6379,192.168.199.187:6389,192.168.199.187:6399
添加SpringBootTest测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestDemo {
@Autowired
private RedisTemplate redisTemplate;
@Test
public void test() {
redisTemplate.opsForValue().set("redis-cluster-state", "success");
System.out.println(redisTemplate.opsForValue().get("redis-cluster-state"));
}
}
输出结果:
2019-05-19 16:54:41.431 INFO 88393 --- [ main] io.lettuce.core.EpollProvider : Starting without optional epoll library
2019-05-19 16:54:41.433 INFO 88393 --- [ main] io.lettuce.core.KqueueProvider : Starting without optional kqueue library
success