Redis3.2.8集群安装配置

简介:

具体就不做介绍了,直接开始安装

准备环境:

1
2
3
4
5
6
7
8
9
10
使用2台centos服务器,每台机器上部署3个实例,集群为三个主节点与三个从节点:
第一台
192.168.1.107:7000 
192.168.1.107:7001 
192.168.1.107:7002
  
第二台
192.168.1.108:7003  
192.168.1.108:7004  
192.168.1.108:7005

安装配置:

192.168.1.107服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
#yum -y  install gcc zlib ruby rubygems
#gem install redis
#wget http://download.redis.io/releases/redis-3.2.8.tar.gz
#tar -zxvf redis-3.2.8.tar.gz
#cd redis-3.2.8
#make && make install
  将 redis-trib.rb 复制到  /usr/local/bin  目录下
#cp src/redis-trib.rb /usr/local/bin/ 
 
#mkdir -p /data/redis/{conf,data,logs}
#cp redis.conf /data/redis/conf/redis-7000.conf 
#cp redis.conf /data/redis/conf/redis-7001.conf 
#cp redis.conf /data/redis/conf/redis-7002.conf

配置内容如下(redis-7000.conf其它类同):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
daemonize   yes  
pidfile  /data/redis/data/redis-7000 .pid  
port 7000  
bind 192.168.1.107  
unixsocket  /data/redis/data/redis-7000 .sock  
unixsocketperm 700  
timeout 300  
loglevel verbose  
logfile  /data/redis/logs/redis-7000 .log  
databases 16  
dbfilename dump-7000.rdb  
dir  /data/redis/data/  
   
#aof持久化  
appendonly  yes  
appendfilename appendonly-7000.aof  
appendfsync everysec  
no-appendfsync-on-rewrite  yes    
auto-aof-rewrite-percentage 80-100  
auto-aof-rewrite-min-size 64mb    
lua- time -limit 5000  
   
#集群配置  
cluster-enabled  yes  
cluster-config- file  /data/redis/data/nodes-7000 .conf  
cluster-node-timeout 5000

同样的在192.168.1.108上配置其它端口,配置后我们分别启动

1
2
3
4
5
6
7
8
9
192.168.1.107主机
#redis-server /data/redis/conf/redis-7000.conf
#redis-server /data/redis/conf/redis-7001.conf
#redis-server /data/redis/conf/redis-7002.conf
 
192.168.1.108主机
#redis-server /data/redis/conf/redis-7003.conf
#redis-server /data/redis/conf/redis-7004.conf
#redis-server /data/redis/conf/redis-7005.conf

分别在两台主机查看启动进程与端口:

1
2
3
4
5
6
7
8
9
10
11
12
13
# ps -ef|grep redis
root      4663     1  0 10:53 ?        00:00:09 redis-server 192.168.1.107:7000 [cluster]
root      4667     1  0 10:53 ?        00:00:09 redis-server 192.168.1.107:7001 [cluster]
root      5566     1  0 12:12 ?        00:00:06 redis-server 192.168.1.107:7002 [cluster]
root      5611  5313  0 14:49 pts /1     00:00:00  grep  redis
 
# netstat -tnlp | grep redis
tcp        0      0 192.168.1.107:7000         0.0.0.0:*                   LISTEN      4663 /redis-server 
tcp        0      0 192.168.1.107:7001         0.0.0.0:*                   LISTEN      4667 /redis-server 
tcp        0      0 192.168.1.107:7002         0.0.0.0:*                   LISTEN      5566 /redis-server 
tcp        0      0 192.168.1.107:17000        0.0.0.0:*                   LISTEN      4663 /redis-server 
tcp        0      0 192.168.1.107:17001        0.0.0.0:*                   LISTEN      4667 /redis-server 
tcp        0      0 192.168.1.107:17002        0.0.0.0:*                   LISTEN      5566 /redis-server  1

创建集群

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
redis-trib.rb命令介绍可以参考:
http: //weizijun .cn /2016/01/08/redis %20cluster%E7%AE%A1%E7%90%86%E5%B7%A5%E5%85%B7redis-trib-rb%E8%AF%A6%E8%A7%A3/
 
# redis-trib.rb  create  --replicas  1  192.168.1.107:7000 192.168.1.107:7001  192.168.1.107:7002 192.168.1.108:7003  192.168.1.108:7004  192.168.1.108:7005
>>> Creating cluster
>>> Performing  hash  slots allocation on 6 nodes...
Using 3 masters:
192.168.1.108:7003
192.168.1.107:7000
192.168.1.108:7004
Adding replica 192.168.1.107:7001 to 192.168.12.108:7003
Adding replica 192.168.1.108:7005 to 192.168.12.107:7000
Adding replica 192.168.1.107:7002 to 192.168.12.108:7004
M: d0ce4d4eb8c503267ffea606e90d1c537a83a22e 192.168.1.107:7000
    slots:5461-10922 (5462 slots) master
S: 24ca2753885db7f37c0e0077b1f43eb2b1a52e42 192.168.1.107:7001
    replicates 8ee448821d5e757af73bab65861340e557b8cd14
S: 90c36924c71ae924b1179ff1a384c53e5ea2e484 192.168.1.107:7002
    replicates 5a93221a3281f88f9984c24b6e1d6f08b3685c89
M: 8ee448821d5e757af73bab65861340e557b8cd14 192.168.1.108:7003
    slots:0-5460 (5461 slots) master
M: 5a93221a3281f88f9984c24b6e1d6f08b3685c89 192.168.1.108:7004
    slots:10923-16383 (5461 slots) master
S: a63176f88cbf58ab879421148da3b171f169540d 192.168.1.108:7005
    replicates d0ce4d4eb8c503267ffea606e90d1c537a83a22e
Can I  set  the above configuration? ( type  'yes'  to accept):  yes   #输入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 192.168.1.107:7000)
M: d0ce4d4eb8c503267ffea606e90d1c537a83a22e 192.168.1.107:7000
    slots:5461-10922 (5462 slots) master
M: 24ca2753885db7f37c0e0077b1f43eb2b1a52e42 192.168.1.107:7001
    slots: (0 slots) master
    replicates 8ee448821d5e757af73bab65861340e557b8cd14
M: 90c36924c71ae924b1179ff1a384c53e5ea2e484 192.168.1.107:7002
    slots: (0 slots) master
    replicates 5a93221a3281f88f9984c24b6e1d6f08b3685c89
M: 8ee448821d5e757af73bab65861340e557b8cd14 192.168.1.108:7003
    slots:0-5460 (5461 slots) master
M: 5a93221a3281f88f9984c24b6e1d6f08b3685c89 192.168.1.108:7004
    slots:10923-16383 (5461 slots) master
M: a63176f88cbf58ab879421148da3b171f169540d 192.168.1.108:7005
    slots: (0 slots) master
    replicates d0ce4d4eb8c503267ffea606e90d1c537a83a22e
[OK] All nodes agree about slots configuration.
>>> Check  for  open  slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.         #集群创建成功

集群验证

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
192.168.1.107的7002端口的节点写入数据,在192.168.1.108的7005端口查询,接方式为 
redis-cli -h 192.168.31.245 -c -p 7002  ,加参数 -C 可连接到集群,因为上面 redis.conf 
将 bind 改为了ip地址,所以 -h 参数不可以省略。
 
# redis-cli -h 192.168.1.107 -c -p 7002
192.168.1.108:7003>  set  test01  "this is test01"
OK
192.168.1.108:7003>
 
# redis-cli -h 192.168.1.108 -c -p 7005
192.168.12.108:7005> get test01
-> Redirected to slot [1840] located at 192.168.12.108:7003
"this is test01"
 
说明集群运作正常。

Redis 集群会把数据存在一个 master 节点,然后在这个 master 和其对应的salve 之间进行数据同步。当读取数据时,也根据一致性哈希算法到对应的 master 节点获取数据。只有当一个master 挂掉之后,才会启动一个对应的 salve 节点,充当 master 。

需要注意的是:必须要3个或以上的主节点,否则在创建集群时会失败,并且当存活的主节点数小于总节点数的一半时,整个集群就无法提供服务了。


本文转自 jackjiaxiong 51CTO博客,原文链接:http://blog.51cto.com/xiangcun168/1923279

相关文章
|
9月前
|
存储 负载均衡 NoSQL
【赵渝强老师】Redis Cluster分布式集群
Redis Cluster是Redis的分布式存储解决方案,通过哈希槽(slot)实现数据分片,支持水平扩展,具备高可用性和负载均衡能力,适用于大规模数据场景。
605 2
|
7月前
|
缓存 负载均衡 监控
135_负载均衡:Redis缓存 - 提高缓存命中率的配置与最佳实践
在现代大型语言模型(LLM)部署架构中,缓存系统扮演着至关重要的角色。随着LLM应用规模的不断扩大和用户需求的持续增长,如何构建高效、可靠的缓存架构成为系统性能优化的核心挑战。Redis作为业界领先的内存数据库,因其高性能、丰富的数据结构和灵活的配置选项,已成为LLM部署中首选的缓存解决方案。
766 25
|
存储 NoSQL 数据库
Redis 逻辑数据库与集群模式详解
Redis 是高性能内存键值数据库,广泛用于缓存与实时数据处理。本文深入解析 Redis 逻辑数据库与集群模式:逻辑数据库提供16个独立存储空间,适合小规模隔离;集群模式通过分布式架构支持高并发和大数据量,但仅支持 database 0。文章对比两者特性,讲解配置与实践注意事项,并探讨持久化及性能优化策略,助你根据需求选择最佳方案。
1007 5
|
7月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
808 6
|
8月前
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
10月前
|
负载均衡 NoSQL Redis
【赵渝强老师】Redis的主从复制集群
Redis主从复制是指将一台Redis服务器的数据复制到其他Redis服务器,实现数据热备份、故障恢复、负载均衡及高可用架构的基础。主节点负责写操作,从节点同步数据并可提供读服务,提升并发处理能力。
313 5
|
10月前
|
NoSQL 安全 Linux
设置Redis在CentOS7上的自启动配置
这些步骤总结了在CentOS 7系统上设置Redis服务自启动的过程。这些命令提供了一个直接且明了的方式,确保Redis作为关键组件在系统启动时能自动运行,保障了依赖于Redis服务的应用的稳定性和可用性。
737 9
|
9月前
|
存储 NoSQL 算法
Redis的集群架构与使用经验
本文介绍了Redis的集群架构与使用经验,包括主从复制、哨兵集群及Cluster分片集群的应用场景与实现原理。内容涵盖Redis主从同步机制、数据分片存储方式、事务支持及与Memcached的区别,并讨论了Redis内存用尽时的处理策略。适用于了解Redis高可用与性能优化方案。
|
存储 NoSQL Redis
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 + 无锁架构 + EDA架构 + 异步日志 + 集群架构
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 + 无锁架构 + EDA架构 + 异步日志 + 集群架构
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 +  无锁架构 +  EDA架构  + 异步日志 + 集群架构
|
存储 NoSQL 算法
Redis分片集群中数据是怎么存储和读取的 ?
Redis集群采用的算法是哈希槽分区算法。Redis集群中有16384个哈希槽(槽的范围是 0 -16383,哈希槽),将不同的哈希槽分布在不同的Redis节点上面进行管理,也就是说每个Redis节点只负责一部分的哈希槽。在对数据进行操作的时候,集群会对使用CRC16算法对key进行计算并对16384取模(slot = CRC16(key)%16383),得到的结果就是 Key-Value 所放入的槽,通过这个值,去找到对应的槽所对应的Redis节点,然后直接到这个对应的节点上进行存取操作