集群搭建的三种方式
主从复制
在主从复制中,数据库分为俩类,主数据库(master)和从数据库(slave)。其中主从复制有如下特点:
- 主数据库可以进行读写操作,当读写操作导致数据变化时会自动将数据同步给从数据库
- 从数据库一般都是只读的,并且jie shou主数据库同步过来的数据
- 一个master可以拥有多个slave,但是一个slave只能对应一个master
哨兵模式
哨兵的作用是监控 redis系统的运行状况,他的功能如下:
- 监控主从数据库是否正常运行
- master出现故障时,自动将slave转化为master
- 多哨兵配置的时候,哨兵之间也会自动监控
- 多个哨兵可以监控同一个redis
集群模式
使用集群,只需要将每个数据库节点的cluster-enable配置打开即可。每个集群中至少需要三个主数据库才能正常运行,集群具备如下特点:
- 集群会开放两个tcp链接端口,一个用作正常的管理链接,如6379,另一个通常在管理端口上加10000,用作集群间的通信
- 集群的数据是分片存储的,利用一致性的哈希算法对数据进行分片,每个节点负责一部分hash槽,用来存储数据
- 集群具备主从模式,每个主节点都会搭建一个从节点保证无单点故障
- 集群无法保证强一致性,原因是由于主从复制是异步进行的
集群搭建
安装redis服务
yum -y install epel-release //安装epel源
yum -y install redis //安装redis
下载redis-trib.rb工具
redis-server --version //获取redis版本
wget http://download.redis.io/releases/redis-3.2.12.tar.gz //根据redis版本下载redis源码包
tar -xvf redis-3.2.12.tar.gz //解压源码包
cp redis-3.2.12/src/redis-trib.rb /usr/bin/ //复制ruby工具到/usr/bin下
创建配置文件
注意:在一台虚拟机上
mkdir redis-cluster/{7001,7002,7003,7004,7005,7006} -p //创建集群配置文件存放目录
vi redis-cluster/7001/redis.conf //编辑集群配置文件,把7001换成7002其余不变
port 7001(7002,7003...) //根据文件夹名称修改端口号
bind 本机ip
daemonize yes //redis后台运行
pidfile /var/run/redis_7000.pid //pidfile文件对应
cluster-enabled yes //开启集群
cluster-config-file nodes.conf //集群的配置 配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout 5000 /请求超时 默认5秒,可自行设置
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
启动各redis实例
cd redis-cluster/7001 //进入各自配置文件目录启动集群方式启动redis
redis-server redis.conf & //加&表示后台运行
安装ruby环境
yum -y install ruby //安装ruby环境
yum -y install rubygems //安装ruby的gems包管理工具
gem install redis //使用gem包管理工具安装redis的ruby环境,用来支持redis-trib.rb运行
升级ruby环境(无报错不执行)
[root@localhost 7006]# gem install redis
Fetching: redis-4.1.0.gem (100%)
ERROR: Error installing redis:
redis requires Ruby version >= 2.2.2.
报错样式,由于ruby版本过低,无法安装redis的ruby环境,升级ruby环境
此种情况需升级ruby环境/
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB //安装ruby下载的密钥
curl -sSL https://get.rvm.io | bash -s stable //下载ruby包并执行安装
source /etc/profile.d/rvm.sh //加载profile下的rvm脚本文件
rvm list known //列出环境列表
rvm install 2.4.1 //升级2.4.1版本
gem install redis //再次安装redis-trib.rb运行所需的ruby环境
创建集群
redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 //使用ruby工具创建集群
验证集群
redis-cli -c -p 7001 //集群的方式链接redis
set a b //设置一个键值对
get a //在自动切换的环境下根据键获取值
set c d //再次设置一个键值对
get c //在自动切换的环境下根据键获取值