centos7搭建redis集群

redis 版本:4.0.9

服务器 IP:

192.168.101.77

Redis的下载、安装、启动

cd /usr/local
wget http://download.redis.io/releases/redis-4.0.9.tar.gz
tar zxvf redis-4.0.9.tar.gz
cd redis-4.0.9
make MALLOC=libc
make install
make clean

redis集群搭建

redis集群采用3主3从6个进程进行创建,通过一台机器多个端口的方式搭建。
首先,创建Redis的配置文件目录redis-cluster,并将redis.conf文件拷贝6份至当前文件夹下:
redis-7000.conf
redis-7001.conf
redis-7002.conf
redis-7003.conf
redis-7004.conf
redis-7005.conf

修改文件中内容:
#该集群阶段的端口
port 7000
#为每一个集群节点指定一个pid_file
pidfile /var/run/redis_7000.pid
#在bind指令后添加本机的ip
bind 192.168.136.145
#找到Cluster配置的代码段,使得Redis支持集群
cluster-enabled yes
#每一个集群节点都有一个配置文件,这个文件是不能手动编辑的。确保每一个集群节点的配置文件不通
cluster-config-file nodes-7000.conf
#集群节点的超时时间,单位:ms,超时后集群会认为该节点失败
cluster-node-timeout 5000
#最后将appendonly改成yes	开启aof
appendonly yes
#后台运行
daemonize yes


依次配置剩余几个redis进程的配置文件后,启动进程:
修改命令路径 /usr/local/bin/redis-server
$ nohup /usr/local/redis-4.0.9/src/redis-server /usr/local/redis-cluster/redis-7000.conf &
$ nohup /usr/local/redis-4.0.9/src/redis-server /usr/local/redis-cluster/redis-7001.conf &
$ nohup /usr/local/redis-4.0.9/src/redis-server /usr/local/redis-cluster/redis-7002.conf &
$ nohup /usr/local/redis-4.0.9/src/redis-server /usr/local/redis-cluster/redis-7003.conf &
$ nohup /usr/local/redis-4.0.9/src/redis-server /usr/local/redis-cluster/redis-7004.conf &
$ nohup /usr/local/redis-4.0.9/src/redis-server /usr/local/redis-cluster/redis-7005.conf &

启动集群

此时如果执行redis-trib.rb,会报错,原因是未安装ruby,因此需要安装ruby
安装ruby
yum -y install ruby ruby-devel rubygems rpm-build

默认ruby的版本是2.0.0,版本过低不满足要求(>2.3.0),因此需要升级ruby至高版本

查看当前版本
ruby -v
安装yum源
yum install -y centos-release-scl-rh
安装指定版本的ruby
yum install -y rh-ruby24
使升级后的配置生效
scl enable rh-ruby24 bash
查看当前ruby版本
ruby -v

安装redis
$ gem install redis

启动集群
$ /usr/local/redis-4.0.9/src/redis-trib.rb create --replicas 1 192.168.101.77:7000 192.168.101.77:7001 192.168.101.77:7002 192.168.101.77:7003 192.168.101.77:7004 192.168.101.77:7005

弹出的提示信息中输入yes

集群创建完毕,查看redis进程可以看到相应信息
ps -ef | grep  redis

redis 命令
redis-cli -h 192.168.101.77 -p 7000
redis-cli -h 192.168.101.77 -p 7001
# 查看节点分配情况
redis-cli -h 192.168.101.77 -p 7001 cluster nodes

持久化

redis操作的数据是在内存中的,它支持两种方案将内存中的数据持久化到硬盘中,下面分别介绍。

1、RDB方式(默认方式)

RDB持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的数据进行快照并持久化到硬盘。打开redis.conf,如图:

img

save 900 1:表示15分钟(900秒钟)内至少1个键被更改则进行快照。

save 300 10:表示5分钟(300秒)内至少10个键被更改则进行快照。

save 60 10000:表示1分钟(60秒)内至少10000个键被更改则进行快照。

这3个是默认配置,只要满足一个就会持久化,也可以自己根据需要配置(添加、减少、修改)。

RDB快照文件的位置默认在bin下面的dump.rdb,可以修改redis.conf进行配置。dbfilename:文件名,dir:路径

img

Redis启动后读取RDB快照文件,将数据从硬盘载入到内存。通常将一千万个字符串类型键、1GB的快照文件载入到内存需要花费20~30秒钟。

2、AOF方式

默认情况下Redis没有开启AOF(append only file)方式,可以通过修改redis.conf配置文件中的appendonly参数开启。如下图所示:

img

appendonly设置为true表示开启,appendfilename:AOF文件的名称,默认是: appendonly.aof,dir:路径(与RDB方式使用一个参数)。

开启AOF持久化后每执行一条会更改Redis中的数据的命令,Redis就会将该命令写入硬盘中的AOF文件。

3、两种方式的比较

通过RDB方式实现持久化,一旦Redis异常退出,就会丢失最后一次快照以后更改的所有数据。这就需要开发者根据具体的应用场合,通过组合设置自动快照条件的方式来将可能发生的数据损失控制在能够接受的范围。如果数据很重要以至于无法承受任何损失,则可以考虑使用AOF方式进行持久化。

命令

查看集群节点
cluster nodes

查看key对应的slot
cluster keyslot key

查看slot和节点的对应关系
cluster slots
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值