redis主从配置与集群

redis主从配置

  • 本次配置是在同一机器上启动2个redis服务
    (1) cp /etc/redis.conf /etc/redis1.conf
    (2)针对/etc/redis1.conf做如下修改,并增加一行配置在这里插入代码片
    redis主从配置与集群_第1张图片
    在这里插入图片描述因为安装的redis版本是5.0.5,所以配置时的参数是replicaof,在 4.0.1版本中使用的是slaveof。如果是主上配置了密码,那么从的配置文件中也需要配置masterauth chunyz>com,本次配置已开启密码
    (3) mkdir /data/redis1_data/ /创建redis1目录,之后就可以启动
    redis主从配置与集群_第2张图片
    (4)redis与MySQL主从不一样,redis主从不用事先同步数据,它会自动同步过去。
    (5)测试验证
    redis主从配置与集群_第3张图片主上加入requirepass chunyz>com,从上加入masterauth chunyz>com,最后显示的结果为登录主需要输入密码,而登录从不需要密码(不太对)。
    (7)主从配置文件中都有一行replica-read-only yes,表示副本只读,从不能进行写操作

redis集群(redis cluster)介绍

  • redis3.0版本之前只支持单例模式,在3.0版本及以后才支持集群。
  • 单台redis不能满足需求时,需要由多台机器构成一个集群,,用来解决存储空间,查询速度,负载太高等瓶颈问题,redis cluster是一个分布式集群,支持横向扩展,redis集群采用P2P模式,是完全去中心化的,不存在中心节点或者代理节点。
    redis主从配置与集群_第4张图片
    (1)多个redis节点网络互联,数据共享
    (2)所有的节点都是一主一从(可以是多个从),其中从不提供服务,仅作为备用
    (3)不支持同时处理多个键(如mset/mget),因为redis需要把键均匀分布在各个节点上,并发量很高的情况下同时创建键值会降低性能并导致不可预测的行为
    (4)支持在线增加、删除节点
    (5)客户端可以连任何一个主节点进行读写

redis集群搭建配置

  • 前期准备(场景设置)
    (1)需要2台机器都全部编译安装redis,分别开启3个redis服务(端口)
    (2)148机器上开启3个端口为7000、7002、7004,
    (3)143机器上开启3个端口为7001、7003、7005
    redis主从配置与集群_第5张图片
    (4)复制3个不同的redis.conf文件,分别设置不同的端口号、dir等参数
    redis主从配置与集群_第6张图片
    (5)创建每个redis服务的dir目录,并启动服务查看是否成功启动
    redis主从配置与集群_第7张图片
    (6)2台机器的firewalld与selinux是需要关闭的。

  • 安装redis集群需要版本号在3.0以上,redis-cluster安装前需要安装ruby环境,搭建集群需要使用到官方提供的ruby脚本,需要安装ruby的环境。redis5.0.5版本需要Ruby版本>= 2.3.0,系统默认自带的是2.0.0版本不满足需求,需要升级ruby版本。

  • redis为4.0.1版本时可以通过以下方式安装ruby2.2版本(只需在某台机器上进行,以下操作目的是将ruby的源码包弄成rpm包,以便安装高于系统自带ruby的版本)
    (1)yum groupinstall -y “Development Tools”
    (2)yum install -y gdbm-devel libdb4-devel libffi-devel libyaml libyaml-devel ncurses-devel openssl-devel readline-devel tcl-devel
    (3)cd /root/
    (4)mkdir -p rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
    (5)wget http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.gz -P rpmbuild/SOURCES
    (6)wget https://raw.githubusercontent.com/tjinjin/automate-ruby-rpm/master/ruby22x.spec -P rpmbuild/SPECS
    (7)rpmbuild -bb rpmbuild/SPECS/ruby22x.spec
    (8)yum -y localinstall rpmbuild/RPMS/x86_64/ruby-2.2.3-1.el7.centos.x86_64.rpm
    (9)ruby -v /查看ruby版本

  • redis版本5.0.5安装ruby2.6.3
    (1)下载ruby源码包
    https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.tar.gz
    (2)解压后编译安装
    ./config
    make && make install
    (3)安装redis接口
    gem install redis
    redis主从配置与集群_第8张图片

  • 安装系统自带ruby版本进行升级
    (1)yum install -y curl
    (2)curl -L get.rvm.io | bash -s stable
    redis主从配置与集群_第9张图片
    (3)gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
    redis主从配置与集群_第10张图片
    (4)curl -sSL https://get.rvm.io | bash -s stable
    redis主从配置与集群_第11张图片
    (5)source ~/.bashrc source ~/.bash_profile source /usr/local/rvm/scripts/rvm
    (6)rvm list known列出支持版
    redis主从配置与集群_第12张图片
    (7)rvm install 2.4.6 / 安装新版本
    redis主从配置与集群_第13张图片
    (8)查看ruby版本
    在这里插入图片描述
    * 或者是redis5.0.5版本安装redis接口时提示ruby版本过低,可以下载ruby2.6.3的源码包到/usr/local/src下进行编译安装也可以解决此问题


  • 创建集群(redis5.0.5版本)
    redis-cli --cluster create 192.168.142.148:7000 192.168.142.148:7002 192.168.142.148:7004 192.168.142.143:7001 192.168.142.143:7003 192.168.142.143:7005 --cluster-replicas 1redis主从配置与集群_第14张图片
    (1)redis4.0.1版本, ruby2.2版本创建集群的命令如下:
    redis-trib.rb create --replicas 1 192.168.142.148:7000 192.168.142.148:7002 192.168.142.148:7004 192.168.142.143:7001 192.168.142.143:7003 192.168.142.143:7005
    (2)以集群的方式登录
    redis-cli -c -h 192.168.142.143 -p 7005 不加-c选项则是进入单实例当中

(3)任意节点创建key,或者查看key
redis主从配置与集群_第15张图片
(4)列出所有节点
CLUSTER nodes
在这里插入图片描述
(5)查看集群信息
CLUSTER INFO
redis主从配置与集群_第16张图片
(6)添加节点
CLUSTER MEET IP PORT
redis主从配置与集群_第17张图片
(7)查看集群状态
redis-cli --cluster check 192.168.142.143:7003 /redis5.0.5
redis-trib.rb check 192.168.142.143:7003 /redis4.0.1
redis主从配置与集群_第18张图片
(8)后面加入到集群中的节点默认都是master节点,可以通过命令将当前节点设置为指定节点的从节点
CLUSTER REPLICATE node_id
redis主从配置与集群_第19张图片
(9)移除节点
当移除节点A为master时,不能直接移除master节点A,需要将master节点A设置为某个节点B的从节点,然后登陆到某个节点B再去移除master节点A
当移除节点A为slave时,不能移除处于登录状态的节点A。
CLUSTER FORGET node_id
redis主从配置与集群_第20张图片
(10)保存配置文件
CLUSTER SAVECONFIG
此命令主要用于nodes.conf节点状态文件由于某种原因丢失/删除的情况,我们希望从头开始再次生成它。在通过CLUSTER命令对节点集群配置进行平凡更改的情况下,它也很有用,以确保新配置保留在磁盘上,但是所有命令通常应该能够自动调度以在磁盘上保留配置。这对于重启时系统的正确性非常重要。

你可能感兴趣的:(redis主从配置与集群)