运维开发网

四 、Redis 集群的搭建

运维开发网 https://www.qedev.com 2020-06-13 14:24 出处:网络 作者:运维开发网整理
5.1 redis-cluster 架构图 redis-cluster 投票:容错 架构细节: (1)所有的 redis 节点彼此互联(PING-PONG 机制),内部使用二进制协议优化传输速度和带宽. (2)节点的 fail 是通过集群中超过半数的节点检测失效时才生效. (3)客户端与 redis 节点直连,不需要中间 proxy 层.客户端不需要连接集群所有节点,连接集群中任何一个可用 节点即
5.1 redis-cluster 架构图

四 、Redis 集群的搭建 redis-cluster 投票:容错 架构细节: (1)所有的 redis 节点彼此互联(PING-PONG 机制),内部使用二进制协议优化传输速度和带宽. (2)节点的 fail 是通过集群中超过半数的节点检测失效时才生效. (3)客户端与 redis 节点直连,不需要中间 proxy 层.客户端不需要连接集群所有节点,连接集群中任何一个可用 节点即可 (4)redis-cluster 把所有的物理节点映射到[0-16383]slot 上,cluster 负责维护 node<->slot<->value Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点

 

四 、Redis 集群的搭建

5.2 Redis 集群规划 Redis 集群中至少应该有三个节点。要保证集群的高可用,需要每个节点有一个备份机。 Redis 集群至少需要 6 台服务器。 搭建伪分布式。可以使用一台虚拟机运行 6 个 redis 实例。需要修改 redis 的端口号 7001-7006 5.3 集群搭建环境 1、使用 ruby 脚本搭建集群。需要 ruby 的运行环境。 安装 ruby yum install ruby yum install rubygems 2、安装 ruby 脚本运行使用的包。 [ [email protected] ~]# gem install redis-3.0.0.gem Successfully installed redis-3.0.0 1 gem installed Installing ri documentation for redis-3.0.0... Installing RDoc documentation for redis-3.0.0... 5.4 搭建步骤 需要 6 台 redis 服务器。搭建伪分布式。 需要 6 个 redis 实例。 需要运行在不同的端口 7001-7006 第一步:创建 6 个 redis 实例,每个实例运行在不同的端口。需要修改 redis.conf 配置文件。 配置文件中还需要把 cluster-enabled yes(632 行)前的注释去掉。修改端口(45 行) 每一台设置后台启动 daemonize yes 

四 、Redis 集群的搭建 第二步:启动每个 redis 实例。 Vi start-all.sh 

#!/bin/bash for I in {1..6} do echo "start 700$I redis" cd /usr/local/redis-cluster/700$I/bin ./redis-server redis.conf echo "700$I redis started" done
第三步:使用 ruby 脚本搭建集群。 将 redis-trib.rb 复制到/usr/local/redis-cluster 下 cp ~/redis-3.0.0/src/redis-trib.rb /usr/local/redis-cluster/ cd /usr/local/redis-cluster/ 运行 redis-trib.rb 脚本 
./redis-trib.rb create --replicas 1 

192.168.81.142:7001 192.168.81.142:7002

192.168.81.142:7003 192.168.81.142:7004

192.168.81.142:7005 192.168.81.142:7006

>>> Creating cluster Connecting to node 192.168.81.142:7001: OK Connecting to node 192.168.81.142:7002: OK Connecting to node 192.168.81.142:7003: OK Connecting to node 192.168.81.142:7004: OK Connecting to node 192.168.81.142:7005: OK Connecting to node 192.168.81.142:7006: OK >>> Performing hash slots allocation on 6 nodes... Using 3 masters: 192.168.81.142:7001 192.168.81.142:7002 192.168.81.142:7003 Adding replica 192.168.81.142:7004 to 192.168.81.142:7001 Adding replica 192.168.81.142:7005 to 192.168.81.142:7002 Adding replica 192.168.81.142:7006 to 192.168.81.142:7003 M: 7ca25ac01d3da5efb9f25aa7259e24cd9d16910d 192.168.81.142:7001 slots:0-5460 (5461 slots) master M: 2c39ffee04aed3d1100b6b9d6640b630bcc295e1 192.168.81.142:7002 slots:5461-10922 (5462 slots) master M: ab054ceb45e6c4e3d1efee645a8fb7d64abd28b5 192.168.81.142:7003 slots:10923-16383 (5461 slots) master S: ad2e038493605c98f7b516877d393fe21f3fbf85 192.168.81.142:7004 replicates 7ca25ac01d3da5efb9f25aa7259e24cd9d16910d S: 35859f9240701728bf93b0cd6868816e4efdbd67 192.168.81.142:7005 replicates 2c39ffee04aed3d1100b6b9d6640b630bcc295e1 S: 0b6c9898513c50f74ef4a690e1c07c04140cef7f 192.168.81.142:7006 replicates ab054ceb45e6c4e3d1efee645a8fb7d64abd28b5 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 192.168.81.142:7001)M: 7ca25ac01d3da5efb9f25aa7259e24cd9d16910d 192.168.81.142:7001 slots:0-5460 (5461 slots) master M: 2c39ffee04aed3d1100b6b9d6640b630bcc295e1 192.168.81.142:7002 slots:5461-10922 (5462 slots) master M: ab054ceb45e6c4e3d1efee645a8fb7d64abd28b5 192.168.81.142:7003 slots:10923-16383 (5461 slots) master M: ad2e038493605c98f7b516877d393fe21f3fbf85 192.168.81.142:7004 slots: (0 slots) master replicates 7ca25ac01d3da5efb9f25aa7259e24cd9d16910d M: 35859f9240701728bf93b0cd6868816e4efdbd67 192.168.81.142:7005 slots: (0 slots) master replicates 2c39ffee04aed3d1100b6b9d6640b630bcc295e1 M: 0b6c9898513c50f74ef4a690e1c07c04140cef7f 192.168.81.142:7006 slots: (0 slots) master replicates ab054ceb45e6c4e3d1efee645a8fb7d64abd28b5 [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered.  第四步:使用集群 随便找一台机器连接即可,但是要加-c 参数 代表连接的是集群 7004/bin/redis-cli -h 192.168.81.142 -p 7004 -c 第五步 :停止集群 Vi stop-all.sh 
#!/bin/bash 
cd /usr/local/redis-cluster/7001/bin 
for I in {1..6} 
do
echo "stop 700$I redis" 
./redis-cli -p 700$I shutdown 
echo "700$I redis stoped" 
done
0

精彩评论

暂无评论...
验证码 换一张
取 消