Redis-cluster集群、主从复制

Redis主从复制、读写分离

一般主库可以做读写、从库做读。

过程:

从库启动时,会向主库发送sync命令。
主库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来。
当快照完成后,redis会将快照文件和所有缓存的命令发送给从库。
从库收到后,会载入快照文件并执行收到的缓存的命令。

配置:

只需在从库修改 redis.config(vim redis.config)文件,加入主库的IP地址,端口号,密码。
slaveof 192.168... 6379
masterauth 123456--- 主库没有密码就不用配

15570722-2ebbf06465242d77.png
主从配置.png

Redis-cluster集群

官方推荐三主三从,Redis-cluster集群至少需要6个节点,一个主配一个从。
服务器有点小贵,这里先创建一台虚拟机试试手,分配6个不同端口实现不同的节点。
7001、7002、7003、7004、7005、7006。
先把防火墙关闭了--
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
systemctl status firewalld.service #查看firewall的状态

  1. 创建redis-cluster目录
    mkdir -p 7001/data
    mkdir -p 7002/data
    mkdir -p 7003/data
    mkdir -p 7004/data
    mkdir -p 7005/data
    mkdir -p 7006/data
    mkdir bin
  2. 到redis的安装路径复制src的脚本到bin目录下(绿色的)
    cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server redis-trib.rb /usr/local/redis-cluster/bin
  3. 复制redis 实例 到7001
    cp -r /usr/local/redis /usr/local/redis-cluster/7001
  4. 修改7001的redis.conf脚本
port 7001(每个节点的端口号)
daemonize yes
bind 192.168.119.131(绑定当前机器 IP)
pidfile /var/run/redis_7001.pid(pid 7001和port要对应)
cluster-enabled yes(启动集群模式)
cluster-config-file nodes-7001.conf(pid 7001和port要对应)
cluster-node-timeout 15000
appendonly yes
dir /usr/local/redis-cluster/7001/data/(数据文件存放位置,这个放到脚本最后面一行)
  1. 我们再复制5个分别放到对应的端口号目录里
    \cp -rf /usr/local/redis-cluster/7001/* /usr/local/redis-cluster/7002
    \cp -rf /usr/local/redis-cluster/7001/* /usr/local/redis-cluster/7003
    \cp -rf /usr/local/redis-cluster/7001/* /usr/local/redis-cluster/7004
    \cp -rf /usr/local/redis-cluster/7001/* /usr/local/redis-cluster/7005
    \cp -rf /usr/local/redis-cluster/7001/* /usr/local/redis-cluster/7006
  2. 然后进入7002-7006端口号对应的redis.conf脚本,修改成对应的端口号。
  3. 启动试试水
    /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7001/redis/etc/redis.conf
    /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7002/redis/etc/redis.conf
    /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7003/redis/etc/redis.conf
    /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7004/redis/etc/redis.conf
    /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7005/redis/etc/redis.conf
    /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7006/redis/etc/redis.conf
  4. 测试节点
    /usr/local/redis-cluster/7001/redis/bin/redis-cli -h 192.168.37.130 -p 7001
    /usr/local/redis-cluster/7002/redis/bin/redis-cli -h 192.168.37.130 -p 7002
    /usr/local/redis-cluster/7003/redis/bin/redis-cli -h 192.168.37.130 -p 7003
    /usr/local/redis-cluster/7004/redis/bin/redis-cli -h 192.168.37.130 -p 7004
    /usr/local/redis-cluster/7005/redis/bin/redis-cli -h 192.168.37.130 -p 7005
    /usr/local/redis-cluster/7006/redis/bin/redis-cli -h 192.168.37.130 -p 7006
    ping一下.
    查看redis进程:ps -ef |grep redis
    9.这时候set,会报错


    15570722-5556757674b1d763.png
    报错.png
  5. 安装ruby软件,直接复制到命令行运行。
    yum install ruby
    yum install rubygems
    gem install redis (或者使用本地上传方式,不知道是不是国内问题,可能这个命令下载不来)
  6. 找到刚刚下载gem install redis 的位置,运行命令。
    gem install -l redis-3.2.1.gem
  7. 最后测试集群:
    /usr/local/redis-cluster/bin/redis-trib.rb create --replicas 1 id地址:7001 id地址:7002 id地址:7003 id地址:7004 id地址:7005 id地址:7006
15570722-a76e5632a645c401.png
集群成功.png

M主S从
测试:
往7001set数据,保存到了6007。


15570722-bd9c27430e11006e.png
测试.png
  1. 如果报错:
    15570722-3521e07cc1450ebb.png
    报错2.png

    可能是 redis-trib.rb与你所安装的版本不符。
    下载3.2.1版本的 redis-trib.rb。官网地址
    解压后我们在src目录找到redis-trib.rb脚本,上传,再用这个redis-trib.rb运行集群。

在云服务器上搭建

基本步骤跟上面差不多,要注意几点:

  • 需要protected-mode把改成no:protected-mode no
    保护模式,yes就是不允许外网访问。
  • bind后面写主机ip地址,我的写了没用,我就直接注释了,或者写0.0.0.0。就上面IP都允许。


    15570722-32c7a1727e155f92.png
    bind.png
  • protected-mode改为no,bind有注释了,运行的时候会报你什么安全的东西,意思就是你总的设置一个密码吧,不然什么人都能链。加个密码,requirepass 123。
  • 看你是用什么云服务,腾讯云阿里云需要去安全组开放端口,端口+10000也要开放,6个节点的12个端口号。百度云就不需要了,默认就已经是全部端口号都开启了。


    15570722-15324b68aca1fff2.png
    端口1.png

    15570722-da2aae979f012ce1.png
    端口2.png
  • redis官方一般不建议加密码了,主要是只允许本机访问,bind后面加固定ip的方法比较好

猜你喜欢

转载自blog.csdn.net/weixin_34111819/article/details/86921288