redis安装-主从-哨兵模式

来源:互联网 发布:sql数据库查询工具 编辑:程序博客网 时间:2024/06/04 23:26

redis安装详解

下载安装包

  1. wget http://download.redis.io/releases/redis-3.2.9.tar.gz

  2. tar -zxvf redis-3.2.9.tar.gz

    如下图

    2017-08-18-14-46-59

  3. cd redis-3.2.9

  4. 执行make命令:
    [wepay@wy188-app104 redis-3.2.9]make[wepay@wy188app104redis3.2.9] sudo make install

  5. 检查是否安装成功:
    [wepay@wy188-app104 redis-3.2.9]$ rpm -qa|grep gcc
    2017-08-18-15-09-13
  6. 创建配置文件目录和bin目录:
    [wepay@wy188-app104 redis]$ mkdir /usr/local/redis/etc

    [wepay@wy188-app104 redis]$ sudo mkdir /usr/local/redis/bin

  7. 移动文件:

    下图文件移动至/usr/local/redis/bin
    2017-08-18-16-09-13

    redis.conf移动至/usr/local/redis/etc

  8. 修改redis.conf文件:
    将daemonize的值改为yes
  9. 启动redis服务:[wepay@wy188-app104 bin]$ ./redis-server /usr/local/redis/etc/redis.conf

    查看服务启动情况:[wepay@wy188-app104 /]$ ps -ef|grep redis

  10. 客户端连接:[wepay@wy188-app104 bin]$ ./redis-cli

简单的部署图

2017-08-22-18-14-57

简单的生产部署图

2017-08-23-14-13-36

配置主从关系

配置104机器为从服务器

  1. 修改conf文件:
    修改端口为6380
    2017-08-20-22-02-35

    修改daemonize 为yes

    备注:
    默认情况下 redis 不是作为守护进程运行的,如果你想让它在后台运行,你就把配置文件里

    当redis作为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件里面

    2017-08-20-22-03-23

    修改pidfile为自己端口

    2017-08-20-22-09-47

    修改slaveof

    备注:设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步

    2017-08-20-22-14-40

    配置106机器为主服务器

    1. 修改conf文件:

      设置端口为6379

      修改daemonize 为yes

    测试

    1. 登录主服务器:[wepay@ba188-app106 bin]$ ./redis-cli

      set测试数据 127.0.0.1:6379> set name zhc
      get测试数据 127.0.0.1:6379> get name

      2017-08-20-22-26-14

    2. 登录从服务器:[wepay@wy188-app104 bin]$ redis-cli -p 6380

      info发现:master_link_status:down

      2017-08-20-23-19-04

      证明没有连接上

      一些尝试

      查看端口是否开放:

      查看主服务:netstat -an | grep 6379

      2017-08-20-23-43-42

      查看从服务器

      2017-08-20-23-44-19

      2017-08-21-09-52-21

    3. 问题排除,经过一系列排除,问题解决如下:

      3.1 修改主服务器conf:

      3.1.1 关闭rdb快照,rdb备份交由slave进行(只需在一台slave开启rdb即可)

      #save 900 1

      #save 300 10

      #save 60 10000

      3.1.2 开启aof日志,因为主服务器的aof日志数据是最新最全的,slave在数据同步时有可能会出现延迟

      appendonly yes

      appendfsync everysec

      no-appendfsync-on-rewrite yes

      auto-aof-rewrite-percentage 100

      auto-aof-rewrite-min-size 64mb

      appendfilename appendonly.aof

      3.2 修改从服务器conf

      3.2.1 打开 rdb快照功能(多台slave只需开一台)
      save 900 1
      save 300 10
      save 60 10000
      stop-writes-on-bgsave-error yes
      rdbcompression yes
      rdbchecksum yes
      dbfilename “dump.rdb”
      dir /usr/local/redis/dir

      3.2.2 通常从服务器不能写,因此需要配置是否只读,配置项:

      slave-read-only yes

      3.2.3 优先级配置

      slave-priority 100

      3.3 再次测试

      127.0.0.1:6379> set name “zhc”

      2017-08-21-11-27-57

      我们发现主服务器set的值在从服务器能get到

    4. 网上一些主从配置出现问题的解决方案

      master上set操作时报错或slave启动报错

      ![2017-08-21-11-34-56](http://ouv5iy6zs.bkt.clouddn.com/2017-08-21-11-34-56.png)

      redis启动时报错

      2017-08-21-11-36-30

      2017-08-21-11-37-16

配置100机器从服务器

  1. 和104一致,但是端口为6382
    2017-08-21-15-33-29

查看日志信息

  1. 106主服务器
    2017-08-21-15-36-08

    可以看到有两个从服务器信息

  2. 查看104从服务器

    2017-08-21-15-38-55

  3. 查看100从服务器
    2017-08-21-15-41-51

配置哨兵模式

单哨兵模式

100机器作为哨兵

  1. 为方便管理,我把sentinel.conf文件放到redis.conf平级目录

    [wepay@wy188-app100 redis-3.2.9]$ sudo mv sentinel.conf /usr/local/redis329/etc

    2017-08-21-16-02-17

    1. 修改 sentinel.conf,来监控主服务器
      2017-08-21-16-12-46

    2. 启动哨兵
      [wepay@wy188-app100 bin]$ sudo redis-sentinel /usr/local/redis329/etc/sentinel.conf

      2017-08-21-16-15-29

      发现有哨兵ID,给master一个监控,两个从服务

    3. 强制杀掉104redis服务
      2017-08-21-16-20-37

      2017-08-21-16-21-23

      发现哨兵控制台打印出来 +sdown信息,说明已经监控到slave宕机了

    4. 重启104redis服务

      发现哨兵控制台打印出来 -sdown信息,说明已经监控到slave重启了

      2017-08-21-16-24-34

    5. 强制杀掉master服务
      2017-08-21-16-33-04

      发现哨兵控制台打印出来
      2017-08-21-16-33-47

      2017-08-21-16-45-05

      查看100机器日志

      2017-08-21-16-47-41

      他已经变成主服务器了

    项目中测试

    1. 我们配置好server.properties
      2017-08-22-10-09-27

    重启服务:

    2017-08-22-10-10-50
    有个错误提示: All sentinels down, cannot determine where is mymaster master is running

    查阅资料:把哨兵的sentinel.conf配置文件中的保护模式改为禁用就行了

    我也重新telnet了哨兵端口:
    2017-08-22-10-12-47
    与资料解释一致,尝试修改conf文件,并重启哨兵

    1. 修改conf文件,并重启哨兵

      protected-mode no

      2017-08-22-10-14-06

    2. 服务重启成功

    3. 杀掉100机器的6379的master服务

      2017-08-22-10-46-23

      选举104作为master

      我们刷新页面

原创粉丝点击