Redis集群规范:https://redis.io/topics/cluster-spec
1. 原理简述:
此处的集群指的是Cluster, 通过分区/分片来实现一定程度的分布式与高可用部署。
2. 集群配置:
2.1 准备工作:
Redis 最小集群规划,需要包含至少三个主节点,此处测试部署具有三个主服务器和三个从服务器的六节点群集。计划是在一台机器上模拟一个集群,主节点端口7000,7001,7002, 从节点7003,7004,7005,这和生产环境的集群搭建没本质区别
[root@hadoop104 bin]# yum install ruby -y
[root@hadoop104 bin]# yum install rubygems -y //rubygems,ruby组件的打包系统,安装之后才可以运行.gem结尾的文件
上传rubygems-update-3.0.0.gem,
下载地址:https://rubygems.org/gems/rubygems-update/versions/3.0.0
[root@hadoop104 software]# gem install rubygems-update-3.0.0.gem -y
2.2 集群搭建:
节点配置文件修改
1. 进入安装目录/opt/module/redis/bin/目录下,将redis服务关掉
[root@hadoop104 bin]# ./redis-cli shutdown
2. 创建一个文件夹redis-cluster,并将bin目录拷贝至该文件夹
[root@hadoop104 redis]# mkdir /opt/module/redis-cluster
[root@hadoop104 redis]# cp -r bin /opt/module/redis-cluster/redis01
3. 进入/opt/module/redis-cluster/redis01,删除dump.rdb,还原redis初始状态。
[root@hadoop104 redis01]# pwd
/opt/module/redis-cluster/redis01[root@hadoop104 redis01]# rm -f dump.rdb
4. 修改配置文件
①修改端口
②开启集群模式
集群配置文件修改:
1. 将配置好的节点复制六份
[root@hadoop104 redis-cluster]# pwd
/opt/module/redis-cluster[root@hadoop104 redis-cluster]# cp -r redis01/ redis02(~6)
将复制出来的节点的端口号修改就可以了,这里改为7002~7006
2. 将解压的文件夹下的所有 .rb结尾的文件拷贝之redis-cluster文件夹下
[root@hadoop104 src]# pwd
/opt/module/redis-4.0.14/src[root@hadoop104 src]# cp *.rb /opt/module/redis-cluster/
3. 将六个节点的redis服务启动
建一个脚本文件startup.sh
#!/bin/bash
cd redis01
./redis-server redis.conf
cd ..
cd redis02
./redis-server redis.conf
cd ..
cd redis03
./redis-server redis.conf
cd ..
cd redis04
./redis-server redis.conf
cd ..
cd redis05
./redis-server redis.conf
cd ..
cd redis06
./redis-server redis.conf
cd ..
给脚本添加执行权限
[root@hadoop104 redis-cluster]# chmod a+x startup.sh
启动脚本,所有redis服务启动
[root@hadoop104 redis-cluster]# ./startup.sh
4.启动复制过来的redis-trib.rb脚本,启动redis集群
该过程出现错误,可以参考:https://www.jb51.net/article/123987.htm
[root@hadoop104 redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.1.104:7001 192.168.1.104:7002 192.168.1.104:7003 192.168.1.104:7004 192.168.1.104:7005 192.168.1.104:7006
2.3 测试
随便进入一个节点的客户端
[root@hadoop104 redis01]# ./redis-cli -p 7001 -c //-p表示连接那个端口,-c表示以集群模式启动,
使用redisDesktopManager连接失败,原因是端口未放开
修改防火墙端口,并重启防火墙
[root@hadoop104 redis-cluster]# vim /etc/sysconfig/iptables
[root@hadoop104 redis-cluster]# service iptables restart
再次连接,连接六个redis服务:
3 jedis访问集群
Jedis jedis = new Jedis(); Set<HostAndPort> set = new HashSet<>(); set.add(new HostAndPort("192.168.1.104",7001)); set.add(new HostAndPort("192.168.1.104",7002)); set.add(new HostAndPort("192.168.1.104",7003)); set.add(new HostAndPort("192.168.1.104",7004)); set.add(new HostAndPort("192.168.1.104",7005)); set.add(new HostAndPort("192.168.1.104",7006)); JedisCluster cluster = new JedisCluster(set); String result = cluster.get("a"); System.out.println(result);