redis cluster集群服务的搭建

Redis Cluster 是Redis的集群实现,内置数据自动分片机制,集群内部将所有的key映射到16384个Slot中,集群中的每个Redis Instance负责其中的一部分的Slot的读写。集群客户端连接集群中任一Redis Instance即可发送命令,当Redis Instance收到自己不负责的Slot的请求时,会将负责请求Key所在Slot的Redis Instance地址返回给客户端,客户端收到后自动将原请求重新发往这个地址,对外部透明。一个Key到底属于哪个Slot由crc16(key) % 16384 决定。

集群由N组主从Redis Instance组成。主可以没有从,但是没有从 意味着主宕机后主负责的Slot读写服务不可用。一个主可以有多个从,主宕机时,某个从会被提升为主,具体哪个从被提升为主,协议类似于Raft。Redis Cluster采用quorum+心跳的机制。从节点的角度看,节点会定期给其他所有的节点发送Ping,cluster-node-timeout(可配置,秒级)时间内没有收到对方的回复,则单方面认为对端节点宕机,将该节点标为PFAIL状态。通过节点之间交换信息收集到quorum个节点都认为这个节点为PFAIL,则将该节点标记为FAIL,并且将其发送给其他所有节点,其他所有节点收到后立即认为该节点宕机。

1、redis cluster集群部署信息

主机名 IP地址 redis服务端口1,redis服务端口2

redis_cluster1 172.16.10.115 7000,7005

redis_cluster2 172.16.10.116 7001,7004

redis_cluster3 172.16.10.117 7002,7003

2、最佳性能状态下的主从分布关系

master <– slave

7000 <– 7003

7001 <– 7004

7002 <– 7005

3、创建redis cluster服务集群的方法

使用redis3或更高版本在每个主机上先编译安装redis,过程略。

因为需要启动6个redis服务进程,所以需要准备好6个redis服务使用的配置文件redis.conf。

以下是以端口7000的redis服务举例,说明redis.conf的配置内容:

port 7000

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

appendonly yes

注:以上是配置redis cluster服务所需要最简配置信息。其它服务端口的redis配置文件仅port参数取值不同。

以下为开始创建redis cluster的方法。

(1)启动redis服务进程

redis_cluster1 10.115

cd /hskj/redis-3.0.7/redis-cluster/7000

/hskj/redis-3.0.7/src/redis-server ./redis.conf

redis_cluster2 10.116

cd /hskj/redis-3.0.7/redis-cluster/7001

/hskj/redis-3.0.7/src/redis-server ./redis.conf

redis_cluster3 10.117

cd /hskj/redis-3.0.7/redis-cluster/7002

/hskj/redis-3.0.7/src/redis-server ./redis.conf

(2)创建包含3个master的redis cluster集群

使用redis_cluster作为管理节点:

yum install ruby rubygems gems-redis

获取以下安装包并上传至redis_cluster1容器,安装:

wget https://rubygems.global.ssl.fastly.net/gems/redis-3.2.1.gem

gem install -l ./redis-3.2.1.gem

创建集群,在redis_cluster1上执行:

./redis-trib.rb create 172.16.10.115:7000 172.16.10.116:7001 172.16.10.117:7002

# ./redis-cli -c -p 7000

127.0.0.1:7000> cluster nodes

f8024d3276eaeca1a3324b721113db76650e630f 172.16.10.116:7001 master – 0 1490611287852 2 connected 5461-10922

d877f1a4853aa44738823b70292329a88e76d594 172.16.10.117:7002 master – 0 1490611287350 3 connected 0-5460

f1d92151cc0360624d54f9c89c05ec85e31094e0 172.16.10.115:7000 myself,master – 0 0 1 connected 10923-16383

(3)加入slave节点1

登录redis_cluster1,启动7005端口的redis服务,并加入到集群中作为7001的slave。

cd /hskj/redis-3.0.7/redis-cluster/7005

/hskj/redis-3.0.7/src/redis-server ./redis.conf

(4)加入slave节点2

登录redis_cluster2,启动7004端口的redis服务,并加入到集群中作为7002的slave。

cd /hskj/redis-3.0.7/redis-cluster/7004

/hskj/redis-3.0.7/src/redis-server ./redis.conf

登录redis_cluster1节点进入src目录,执行以下命令。

(5)加入slave节点3

登录redis_cluster3,启动7003端口的redis服务,并加入到集群中作为7000的slave。

cd /hskj/redis-3.0.7/redis-cluster/7003

/hskj/redis-3.0.7/src/redis-server ./redis.conf

登录redis_cluster1节点进入src目录,执行以下命令。

以上过程中不出现任何报错,证明已经成功创建了redis cluster集群。

4、检查集群配置结果

登录其中一个服务端口的redis,查看集群节点的状态。

[root@e98b4864ef20 src]# ./redis-cli -c -p 7000

127.0.0.1:7000> cluster nodes

4c48365f989154f49dfe45ce65983aa2b827a06a 172.16.10.117:7003 slave f1d92151cc0360624d54f9c89c05ec85e31094e0 0 1490661575129 1 connected

da818c3f2c7405b102f7f153dcdc2c69edbc9a4c 172.16.10.116:7004 slave d877f1a4853aa44738823b70292329a88e76d594 0 1490661574630 3 connected

6685406ab6b817f725081249f92534c4b425b574 172.16.10.115:7005 slave f8024d3276eaeca1a3324b721113db76650e630f 0 1490661574128 2 connected

d877f1a4853aa44738823b70292329a88e76d594 172.16.10.117:7002 master – 0 1490661575631 3 connected 0-5460

f8024d3276eaeca1a3324b721113db76650e630f 172.16.10.116:7001 master – 0 1490661576132 2 connected 5461-10922

f1d92151cc0360624d54f9c89c05ec85e31094e0 172.16.10.115:7000 myself,master – 0 0 1 connected 10923-16383

原文链接:https://blog.csdn.net/watermelonbig/article/details/69870142

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/16764

(0)
上一篇 2022年11月16日
下一篇 2022年11月16日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml