Redis各架构安装与服务端使用

Redis各架构安装与服务端使用
单机
主从架构
哨兵架构
集群

单机安装

  1. 确保本机已安装wget和gcc,如未安装执行yum install gcc wget -y
  2. 下载redis.tar.gz 本次使用的redis版本为5.08wget http://download.redis.io/releases/redis-5.0.8.tar.gz
  3. 解压包到/usr/local/下tar -zxvf redis-5.0.8.tar.gz -C /usr/local/
  4. 编译cd /usr/local/redis-5.0.8/ && make出现Hint: It's a good idea to run 'make test' ;)表示编译成功
  5. 配置redis (log,data,)
    • daemonize yes开启后台运行
    • #bind 127.0.0.1注释
    • protected-mode no关闭安全模式
    • logfile "/usr/local/redis-5.0.8/log/6379.log"方便查看日志
    • dbfilename 6379dump.rdbrdb文件
    • dir /usr/local/redis-5.0.8/data/ rdb文件保存位置
    • appendonly yes开启aof
    • appendfilename "6379appendonly.aof"aof文件名
  6. 启动src/redis-server config/redis6379.conf
  7. 检测是否启动成功ps -ef|grep redis
  8. 客户端连接 src/redis-cli -h 127.0.0.1 -p 6379(-p 6379可省略)
  9. 关闭服务端使用ps -ef|grep redis 查询到pid kill [查询到的pid]

主从架构

一台master负责写请求 slave只负责读请求 master与slave直接通讯同步数据

部分复制

若slave与master直接通讯断开 重连后slave会发送通讯请求并携带当前slave中数据的偏移量(理解为当前slave中数据的最大下标), 如果偏移量在master的数据缓存区内则返回偏移量到最近数据数据若不在触发全量备份

全量复制

master执行bgsave生成最新数据的rdb快照 在执行bgsave之间的操作会写入缓存区,操作执行完后将rdb快照和缓存区命令发送给slave,slave清空内存加载rdb文件与缓存区命令

  1. 配置主从
    • 复制一份配置文件
    • 将配置文件中6379替换为6380 :%s/6379/6380
    • 配置主从 找到replicaof <masterip> <masterport>在下方输入replicaof 127.0.0.1 6379
    • 配置只读replica-read-only yes
  2. 启动 指定此配置文件src/redis-server config/redis6380.conf
  3. 客户端连接src/redis-cli -h 127.0.0.1 -p 6380 输入info可以看到当前角色为slave
  4. 测试使用6379 set值 6380可以查询到 6380是不能写入的
    [root@localhost redis-5.0.8]# src/redis-cli -h 127.0.0.1 -p 6379
    127.0.0.1:6379> set key value
    OK
    127.0.0.1:6379> set key0 value0
    OK
    127.0.0.1:6379> exit
    [root@localhost redis-5.0.8]# src/redis-cli -h 127.0.0.1 -p 6380
    127.0.0.1:6380> keys *
    1) "key"
    2) "key0"
    127.0.0.1:6380> set key1 value1
    (error) READONLY You can't write against a read only replica.
    

哨兵架构

  1. 主从架构的缺点: 主节点至关重要,一旦主节点挂 整个redis就不能使用了 只能改从节点的配置文件将其变为主节点
  2. 基本结构
    • 客户端与哨兵通讯 获取master节点地址
    • 哨兵之间通讯,当主节点挂了进行选举,下节详细说
    • salve与哨兵通讯 当slave发现master挂了会进行选举 哨兵会将选举出的slave作为master 并将其他节点作为其从节点
  3. 配置(三个哨兵两个从节点,建议奇数个与选举策略有关)
    • 配置哨兵
      1. 将sentinel复制到config下
      2. 配置sentinel文件
        • daemonize yes后台运行
        • pidfile /var/run/redis-sentinel26379.pidpid文件
        • sentinel monitor mymaster 127.0.0.1 6379 2监视主节点ip,端口 投票数
        • info可以查看详细信息
      3. 复制两份命名为26380,26381替换文本中端口号:%s/26379/26380
      4. 再配置一个从节点,方便后面演示故障转移,配置方法和配置主从一样
    1. 启动两个主从节点
    2. 启动哨兵src/redis-sentinel config/sentinel26379.conf
    3. 查看是否启动成功(现在是三个redis服务 三个sentinel服务)
      [root@localhost redis-5.0.8]# ps -ef|grep redis
      root       7319      1  0 7月28 ?       00:03:02 src/redis-server *:6379
      root       7937      1  0 19:53 ?        00:00:05 src/redis-server *:6380
      root       7991      1  0 20:45 ?        00:00:00 src/redis-server *:6381
      root       8000      1  0 20:46 ?        00:00:00 src/redis-sentinel *:26379 [sentinel]
      root       8005      1  0 20:46 ?        00:00:00 src/redis-sentinel *:26380 [sentinel]
      root       8010      1  0 20:46 ?        00:00:00 src/redis-sentinel *:26381 [sentinel]
      
      1. 连接sentienlsrc/redis-cli -h 127.0.0.1 -p 26379
      2. sentienl命令
        • SENTINEL masters 显示当前监视主机信息
        • SENTINEL slaves mymaster 显示从节点信息

集群架构

  1. 哨兵架构缺点
    • 只有一个master,虽然可以故障转移,但还是要消耗时间出现短暂断连
    • 虽然支持十万并发毕竟只有一个master没法支持超高并发
    • 单节点内存不宜过大,开机主从同步都需要消耗不少时间
  2. 集群架构模型
    • 几个主从架构
    • 数据分片存储
  3. 搭建 三台机器分别一主一从
    1. 在三台主机安装redis 在/usr/local/下创建redis-cluster用于保存数据
    2. 在第一台redis-cluster创建8001,8002文件夹依次类推
    3. 配置redis,将配置文件复制到8001下
      • #bind 127.0.0.1
      • protected-mode no
      • port 8001
      • daemonize yes
      • pidfile /var/run/redis_8001.pid
      • logfile "/usr/local/redis-cluster/8001/8001.log"
      • dbfilename 8001dump.rdb
      • dir /usr/local/redis-cluster/8001/
      • appendonly yes
      • appendfilename "8001appendonly.aof"
      • 找到# cluster-enabled yes取消注释,开启集群模式
      • cluster-config-file nodes-8001.conf集群配置文件
      • cluster-node-timeout 5000超时时间
      • requirepass jaminredis访问密码
      • masterauth jamin集群间访问密码
    4. 按上方配置其他的几台
    5. 三台机器关闭并禁用防火墙systemctl stop firewalld && systemctl stop firewalld启动6个服务
    6. 集群连接/usr/local/redis-5.0.8/src/redis-cli -a jamin --cluster create --cluster-replicas 1 192.168.150.101:8001 192.168.150.101:8002 192.168.150.102:8003 192.168.150.102:8004 192.168.150.103:8005 192.168.150.103:8006-a 表示密码 --cluster create --cluster-replicas 创建集群 1 表示一从
    7. redis会自动分配询问Can I set the above configuration? (type 'yes' to accept):输入yes等到[OK] All 16384 slots covered.创建成功
    8. 客户端连接/usr/local/redis-5.0.8/src/redis-cli -a jamin -c -h 192.168.150.101 -p 8001
    9. cluster命令cluster info 查看集群信息CLUSTER NODES查看集群节点
    10. 添加节点/usr/local/redis-5.0.8/src/redis-cli -a jamin --cluster add-node 192.168.150.103:8007 192.168.150.101:8001192.168.150.103:8007为新的节点 192.168.150.101:8001为已存在的节点
    11. 新加入的节点是无法使用的,需要数据分片/usr/local/redis-5.0.8/src/redis-cli -a jamin --cluster reshard 192.168.150.103:8007询问迁移多少,接接收的id,输入all进行确认,分配方案输入yes
    12. 添加8008作为8007的从节点
      • /usr/local/redis-5.0.8/src/redis-cli -a jamin --cluster reshard 192.168.150.103:8008 192.168.150.103:8007将8008加入集群
      • /usr/local/redis-5.0.8/src/redis-cli -a jamin -c -h 192.168.150.103 -p 8008连接到8008
      • CLUSTER REPLICATE e089b5aff1bf2a54d45a22763703819100fe77c8后面为8007的id 可使用CLUSTER NODES查看
    13. 删除节点
      • 删除从节点/usr/local/redis-5.0.8/src/redis-cli -a jamin --cluster del-node 192.168.150.103:8008 906c2547f0ace77e8a9928bad3f29e0b51b18385 ip:端口号 id
      • 删除主节点
        • 槽位转移/usr/local/redis-5.0.8/src/redis-cli -a jamin --cluster reshard 192.168.150.103:8007
        • 选择转移数量 输入8007槽位数
        • 选择接收主机
        • 资源输入8007的id
        • 结束
        • 删除8007/usr/local/redis-5.0.8/src/redis-cli -a jamin --cluster del-node 192.168.150.103:8007 e089b5aff1bf2a54d45a22763703819100fe77c8

猜你喜欢

转载自www.cnblogs.com/JaminYe/p/13401431.html