redis集群
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis集群相关的知识,希望对你有一定的参考价值。
5、redis集群
官方文档 , redis中文社区文档 , redis集群该怎么做与其它缓存的对比
5.1、redis集群介绍
Redis 集群是一个提供在多个Redis间节点间共享数据的程序集
Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误.
Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令. Redis 集群的优势:
- 自动分割数据到不同的节点上。
- 整个集群的部分节点失败或者不可达的情况下能够继续处理命令。
5.2、Redis 集群的数据分片
??redis集群没有一致性hash,而是引入了 哈希糟的概念, redis集群一有16384个哈希糟,每个糟通过CRC16校验来分别放置。
??如果新添加节点,只需要将已有的节点中分割出一部分哈希糟给新节点,那就能实现redis集群节点的增加,如果要减少那么只需要将A节点的哈希糟分配给B或C节点,然后将A节点移除即可
5.3、搭建并使用Redis集群
??要让集群正常运作至少需要三个主节点,不过在刚开始试用集群功能时, 强烈建议使用六个节点: 其中三个为主节点, 而其余三个则是各个主节点的从节点。
5.3.1、安装redis
系统:Centos 7.4
软件:redis 4.0.9
机器:192.168.9.222 机器有限,这里直接用一台开六个实例
端口: 20000-20006
安装配置
创建六个目录,
Host# for i in {20000..20005};do mkdir $i;done
Host# ls
20000 20001 20002 20003 20004 20005
每个文件都需要创建一个redis.conf文件,配置文件如下:
# 端口
port 20000
# 后台运行
daemonize yes
# pid文件 这里每个redis实例一个pid不要重复了
pidfile "/var/run/redis_20000.pid"
# 日志文件注意路径
logfile "/tmp/cluster/20000/redis_20000.log"
# 这里是aof或rdb的文件保存路径
dir "/tmp/cluster/20000"
# 开启aof持久化功能
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
# 用于开实例的集群模式
cluster-enabled yes
# 这个文件会自动生成,有需要时会自动进行更新
cluster-config-file /tmp/cluster/20000/nodes-20000.conf
# 集群节点超时时长
cluster-node-timeout 15000
其它五个只需要改端口号,然后复制到对应的目录下
启动服务
#!/bin/bash
#
找着redis的启动bin文件,然后循环它启动对应的conf文件
Sbin=/tmp/redis-4.0.9/src/redis-server
for i in {20000..20005};do
$Sbin ${i}/redis.conf
done
查看进程
启动之后的文件
5.3.2、配置集群
Host # /tmp/redis-4.0.9/src/redis-trib.rb
/usr/bin/env: ruby: 没有那个文件或目录
注意:没有ruby,redis集群配置一定需要ruby
1、安装ruby
yum -y install ruby ruby-devel rubygems rpm-build
# 运行redis-trib.rb集群搭建工具,发现缺少redis
[[email protected] cluster]# /tmp/redis-4.0.9/src/redis-trib.rb
/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require‘: cannot load such file -- redis (LoadError)
from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require‘
from /tmp/redis-4.0.9/src/redis-trib.rb:25:in `<main>‘
# 安装redis 发现需要升级
[[email protected] cluster]# gem install redis
Fetching: redis-4.0.1.gem (100%)
ERROR: Error installing redis:
redis requires Ruby version >= 2.2.2.
# 升级redis
Host# curl -L get.rvm.io | bash -s stable
又出现一堆错 按照提示 运行gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
# 继续升级 Host# curl -L get.rvm.io | bash -s stable
Creating group ‘rvm‘
Installing RVM to /usr/local/rvm/
Installation of RVM in /usr/local/rvm/ is almost complete
# 获取ruby 可用版本
[[email protected] cluster]# rvm list known
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
.....
[ruby-]2.4[.1]
ruby-head
# 这里获取到了最新的ruby版本 2.4.1,直接安装最新的,一步到位
Host# rvm install 2.4.1
# 安装redis
Host# gem install redis
Fetching: redis-4.0.1.gem (100%)
Successfully installed redis-4.0.1
Parsing documentation for redis-4.0.1
Installing ri documentation for redis-4.0.1
Done installing documentation for redis after 0 seconds
1 gem installed
出现这个说明就能开始redis集群搭建的正式工作了。
以上是关于redis集群的主要内容,如果未能解决你的问题,请参考以下文章