redis伪集群配置Cluster集群模式

本文详细介绍了在Linux环境下搭建Redis集群的过程,包括下载编译安装、配置节点、启动服务及使用Ruby进行集群节点配置。同时,提供了Java客户端连接集群的示例代码,展示了如何通过JedisCluster操作Redis集群。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载编译安装redis

新建redis安装目录

/usr/local/share/redis

[root@ip-172-31-17-64 share]# mkdir redis
# 下载redis安装包
[root@ip-172-31-17-64 share]# wget http://download.redis.io/releases/redis-3.2.4.tar.gz
[root@ip-172-31-17-64 share]# tar -zxvf redis-3.2.4.tar.gz
[root@ip-172-31-17-64 share]# cd redis-3.2.4/
[root@ip-172-31-17-64 share]# make && make install
复制代码

节点配置

# 创建redis_cluster目录
[root@ip-172-31-17-64 redis]# mkdir redis_cluster
[root@ip-172-31-17-64 redis]# cd redis_cluster
[root@ip-172-31-17-64 redis_cluster]# mkdir 7000 7001  7002 7003 7004 7005
# 进入redis-3.2.4目录,复制redis.conf到7000 7001 7002 7003 7004 7005中
[root@ip-172-31-17-64 redis-3.2.4]# cp redis.conf /usr/local/share/redis/redis_cluster/7000
[root@ip-172-31-17-64 redis-3.2.4]# cp redis.conf /usr/local/share/redis/redis_cluster/7001
[root@ip-172-31-17-64 redis-3.2.4]# cp redis.conf /usr/local/share/redis/redis_cluster/7002
[root@ip-172-31-17-64 redis-3.2.4]# cp redis.conf /usr/local/share/redis/redis_cluster/7003
[root@ip-172-31-17-64 redis-3.2.4]# cp redis.conf /usr/local/share/redis/redis_cluster/7004
[root@ip-172-31-17-64 redis-3.2.4]# cp redis.conf /usr/local/share/redis/redis_cluster/7005
复制代码
修改配置文件

分别进入集群目录修改redis.conf配置

修改以下配置项

# 修改成对应调的端口号
port 7000
# 注释掉 bind 配置
# bind 127.0.0.1
daemonize yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
复制代码

启动redis

分别进入集群目录启动

[root@ip-172-31-17-64 redis_cluster]# cd 7000
# 启动
[root@ip-172-31-17-64 7000]# redis-server redis.conf
复制代码

客户端连接

安装Ruby

[root@ip-172-31-17-64 7000]# yum install ruby
[root@ip-172-31-17-64 7000]# yum install rubygems
[root@ip-172-31-17-64 7000]# gem install redis -v 3.2.2
复制代码

集群节点

# 进入redis根据目录的src目录,执行命令
# 52.77.243.30 为服务器外网ip
[root@ip-172-31-17-64 src]# ./redis-trib.rb create --replicas 1 52.77.243.30:7000 52.77.243.30:7001 52.77.243.30:7002 52.77.243.30:7003 52.77.243.30:7004 52.77.243.30:7005
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
52.77.243.30:7000
52.77.243.30:7001
52.77.243.30:7002
Adding replica 52.77.243.30:7003 to 52.77.243.30:7000
Adding replica 52.77.243.30:7004 to 52.77.243.30:7001
Adding replica 52.77.243.30:7005 to 52.77.243.30:7002
M: 703b3f7c232f3bb99fc0004cef4ab0aac92f0b28 52.77.243.30:7000
   slots:0-5460 (5461 slots) master
M: 2464c0a5dcd7e0adf266951b5d1262871a96c819 52.77.243.30:7001
   slots:5461-10922 (5462 slots) master
M: 774b9a2d5bd214cfac0c6ded72ab5fa5bfcf2112 52.77.243.30:7002
   slots:10923-16383 (5461 slots) master
S: d000b91c9efffa7d2b55ca37cacd915698be22de 52.77.243.30:7003
   replicates 703b3f7c232f3bb99fc0004cef4ab0aac92f0b28
S: c1aae83e0324292254b6b81bfce53faf830ef9c1 52.77.243.30:7004
   replicates 2464c0a5dcd7e0adf266951b5d1262871a96c819
S: a2ecec5c754a73a33e4e14c16ea7cb6fe63b61dc 52.77.243.30:7005
   replicates 774b9a2d5bd214cfac0c6ded72ab5fa5bfcf2112
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join.......
>>> Performing Cluster Check (using node 52.77.243.30:7000)
M: 703b3f7c232f3bb99fc0004cef4ab0aac92f0b28 52.77.243.30:7000
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: c1aae83e0324292254b6b81bfce53faf830ef9c1 52.77.243.30:7004
   slots: (0 slots) slave
   replicates 2464c0a5dcd7e0adf266951b5d1262871a96c819
S: a2ecec5c754a73a33e4e14c16ea7cb6fe63b61dc 52.77.243.30:7005
   slots: (0 slots) slave
   replicates 774b9a2d5bd214cfac0c6ded72ab5fa5bfcf2112
M: 2464c0a5dcd7e0adf266951b5d1262871a96c819 52.77.243.30:7001
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: d000b91c9efffa7d2b55ca37cacd915698be22de 52.77.243.30:7003
   slots: (0 slots) slave
   replicates 703b3f7c232f3bb99fc0004cef4ab0aac92f0b28
M: 774b9a2d5bd214cfac0c6ded72ab5fa5bfcf2112 52.77.243.30:7002
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@ip-172-31-17-64 src]# redis-cli -c -p 7000
127.0.0.1:7000> quit
复制代码

测试

public void testRedisCluster() throws IOException{
		JedisPoolConfig pool = new JedisPoolConfig();
		// 设置最大的空闲数
		pool.setMaxIdle(2);
		// 设置最大连接数
		pool.setMaxTotal(30);
		Set<HostAndPort> nodes = new HashSet<>();
		nodes.add(new HostAndPort("52.77.243.30", 7001));
		nodes.add(new HostAndPort("52.77.243.30", 7002));
		nodes.add(new HostAndPort("52.77.243.30", 7003));
		nodes.add(new HostAndPort("52.77.243.30", 7004));
		nodes.add(new HostAndPort("52.77.243.30", 7005));
		nodes.add(new HostAndPort("52.77.243.30", 7000));
		JedisCluster jedis = new JedisCluster(nodes,pool );
		String name = jedis.set("name","lisi");
		System.out.println(name);
		jedis.close();
		pool.clone();
	}
复制代码

Cluster集群模式缺点

redis-cluster集群引入了主从模式,一个主节点对应一个或者多个从节点,当主节点宕机的时候,就会启用从节点。当其它主节点ping一个主节点A时,如果半数以上的主节点与A通信超时,那么认为主节点A宕机了。如果主节点A和它的从节点A1都宕机了,那么该集群的A和A1就无法再提供服务了,部分数据无法保存到redis了,集群不可用。

转载于:https://juejin.im/post/5cac953a6fb9a068b65e0e00

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值