Redis-cluster集群、主从复制

#Redis主从复制、读写分离
一般主库可以做读写、从库做读。
####过程:
从库启动时,会向主库发送sync命令。
主库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来。
当快照完成后,redis会将快照文件和所有缓存的命令发送给从库。
从库收到后,会载入快照文件并执行收到的缓存的命令。
####配置:
只需在从库修改 redis.config(vim redis.config)文件,加入主库的IP地址,端口号,密码。
slaveof 192.168… 6379
masterauth 123456— 主库没有密码就不用配
主从配置.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,会报错
    报错.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

集群成功.png
M主S从
测试:
往7001set数据,保存到了6007。
测试.png
13. 如果报错:
报错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都允许。
    bind.png
  • protected-mode改为no,bind有注释了,运行的时候会报你什么安全的东西,意思就是你总的设置一个密码吧,不然什么人都能链。加个密码,requirepass 123。
  • 看你是用什么云服务,腾讯云阿里云需要去安全组开放端口,端口+10000也要开放,6个节点的12个端口号。百度云就不需要了,默认就已经是全部端口号都开启了。
    端口1.png
    端口2.png
  • redis官方一般不建议加密码了,主要是只允许本机访问,bind后面加固定ip的方法比较好
  • 如果显示Permission denied :就加chmod 777运行一下
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值