美文网首页
Redis5.0.8 Cluster模式安装部署手册

Redis5.0.8 Cluster模式安装部署手册

作者: 葬花逐流 | 来源:发表于2021-12-18 14:23 被阅读0次

Redis5.0.8 Cluster模式安装部署手册

1.基础环境

  • 软件版本:centos7.8 、redis5.0.7
  • 资源:需要1台虚拟机(占用6个port)或者6个虚拟机

2.Redis Cluster 离线安装

Redis Cluster是一种服务器端数据Sharding技术,3.0版本开始正式提供。Redis Cluster并没有使用一致性hash,而是采用slot(槽)的概念,一共分成16384个槽。客户端将请求发送到集群任意节点,接收到请求的节点会将查询请求发送到正确的节点上执行。当客户端操作的key没有分配到该node上时,Redis会返回转向指令,指向正确的node,由Redis客户端完成,对业务应用开发人员而言,就像操作单一Redis实例一样,这有点儿像浏览器页面的302 redirect跳转。

Redis集群,要保证16384个槽对应的node都正常工作,如果某个node发生故障,那它负责的slots也就失效,整个集群将不能工作。为了增加集群的可访问性,官方推荐的方案是将node配置成主从结构,即一个master节点,挂n个slave节点。这时,如果主节点失效,Redis Cluster会根据选举算法从slave节点中选择一个上升为主节点,整个集群继续对外提供服务,集群模式具有以下特点:

  • 无中心架构,支持动态扩容,对业务透明

  • 具备Sentinel的监控和自动Failover能力

  • 客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可

  • 高性能,客户端直连redis服务,免去了proxy代理的损耗

缺点是运维也很复杂,数据迁移需要人工干预,只能使用0号数据库,不支持批量操作,分布式逻辑和存储模块耦合等。

由于Redis cluster是redis官方提供的,目前官方一直都在维护中,具有代表性,建议生产使用。

官方推荐集群至少需要六个节点,即三主三从。六个节点的配置文件基本相同,只需要修改端口号。

角色 端口 描述
master 6383
master 6384
master 6385
slave 6386
slave 6387
slave 6388

配置文件内容如下(只是端口号不同):

port 6383
bind 127.0.0.1
daemonize yes
cluster-enabled yes
cluster-config-file nodes_6383.conf
cluster-node-timeout 15000

现在,先使用redis-server命令将6个Redis节点启动。然后使用Redis官方提供的redis-trib.rb这个工具创建集群:

./redis-trib.rb create --replicas 1 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 127.0.0.1:6386 127.0.0.1:6387 127.0.0.1:6388

备注:在任意一台Redis节点上运行即可,不用在每台机器上都运行,一台就够了。

但是要运行redis-trib.rb命令,我们的主机还是要安装一些软件的。而在一台新的机器上离线安装这些软件,会让你非常难受,下面就来说说如何离线安装这些软件,也就是详细的安装步骤了。

详细的安装步骤

1.离线安装Ruby

可以在这里下载ruby源码。编译源码,然后进行安装:

# 解压源码包
tar -xzvf ruby-2.5.1.tar.gz
cd ruby-2.5.1

# 生成编译配置
./configure --prefix=/home/jelly/ruby

# 编译并安装
make && make install

# 配置环境变量
PATH=$PATH:/home/jelly/ruby/bin

# 测试
ruby -v</pre>

2.离线安装zlib

可以在这里下载zlib源码。编译源码,然后进行安装:

# 解压缩源码
tar -xzvf zlib-1.2.11.tar.gz
cd zlib-1.2.11

# 生成编译配置
./configure --prefix=/home/jelly/zlib

# 编译并安装
make && make install</pre>

3.离线安装rubygems

可以在这里下载rubygems源码。编译源码,然后进行安装:

# 编译ruby中的zlib
cd /home/jelly/ruby-2.5.1/ext/zlib
ruby extconf.rb --with-zlib-include=/home/jelly/zlib/include/ --with-zlib-lib=/home/jelly/zlib/lib

# 解压源码包
tar -xzvf rubygems-2.7.7.tgz
cd rubygems-2.7.7

# 执行安装脚本,在这个过程中可能需要安装zlib
ruby setup.rb

# 验证gem是否可以使用
gem -v

4.安装rubygems的redis api

可以在这里下载rubygems的redis api。然后进行安装:

gem install -l redis-4.0.1.gem
gem list redis

5.执行创建Redis集群的命令

# 创建集群
./redis-trib.rb create --replicas 1 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 127.0.0.1:6386 127.0.0.1:6387 127.0.0.1:6388

# 查看集群信息
127.0.0.1:6383> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:717
cluster_stats_messages_pong_sent:250
cluster_stats_messages_sent:967
cluster_stats_messages_ping_received:250
cluster_stats_messages_pong_received:221
cluster_stats_messages_received:471

# 查看集群当前节点信息
127.0.0.1:6383> cluster nodes
97ec5f3606ef995f952ffa17f05a4b1e70dbc392 127.0.0.1:6383@16383 myself,master - 0 1531145554000 1 connected 0-5460
1bddffff033ccf2182b3937e2d5f8af257d97416 127.0.0.1:6388@16388 slave 85162c300cf1701ff7ab5ef2bb14b9e5d7a9fc9c 0 1531145554000 6 connected
85162c300cf1701ff7ab5ef2bb14b9e5d7a9fc9c 127.0.0.1:6384@16384 master - 0 1531145555880 2 connected 5461-10922
c7b6fef3312033ede2993fcb0b0acabe3f6b9d78 127.0.0.1:6386@16386 slave 6edac8e90957060ef176cf5ac627f9f68bac054e 0 1531145554874 4 connected
3865043ff47b60ddd099c93741d76abda3be9ecc 127.0.0.1:6387@16387 slave 97ec5f3606ef995f952ffa17f05a4b1e70dbc392 0 1531145555000 5 connected
6edac8e90957060ef176cf5ac627f9f68bac054e 127.0.0.1:6385@16385 master - 0 1531145553000 3 connected 10923-16383

# 查看集群状态信息
./redis-trib.rb check 127.0.0.1:6383
>>> Performing Cluster Check (using node 127.0.0.1:6383)
M: 97ec5f3606ef995f952ffa17f05a4b1e70dbc392 127.0.0.1:6383
 slots:0-5460 (5461 slots) master
 1 additional replica(s)
S: 1bddffff033ccf2182b3937e2d5f8af257d97416 127.0.0.1:6388
 slots: (0 slots) slave
 replicates 85162c300cf1701ff7ab5ef2bb14b9e5d7a9fc9c
M: 85162c300cf1701ff7ab5ef2bb14b9e5d7a9fc9c 127.0.0.1:6384
 slots:5461-10922 (5462 slots) master
 1 additional replica(s)
S: c7b6fef3312033ede2993fcb0b0acabe3f6b9d78 127.0.0.1:6386
 slots: (0 slots) slave
 replicates 6edac8e90957060ef176cf5ac627f9f68bac054e
S: 3865043ff47b60ddd099c93741d76abda3be9ecc 127.0.0.1:6387
 slots: (0 slots) slave
 replicates 97ec5f3606ef995f952ffa17f05a4b1e70dbc392
M: 6edac8e90957060ef176cf5ac627f9f68bac054e 127.0.0.1:6385
 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.

到此,关于redis cluster如何搭建就总结完毕了。

相关文章

网友评论

      本文标题:Redis5.0.8 Cluster模式安装部署手册

      本文链接:https://www.haomeiwen.com/subject/rprgfrtx.html