zoukankan      html  css  js  c++  java
  • linux安装redis及主从复制、读写分离、哨兵模式

    Redis安装与部署

    版本最好选择3.0及以上。以后还可以部署Redis集群。

    1.下载:

    [root@bogon redis-3.0.0]# cd /usr/local
    [root@bogon local]#
    wget http://download.redis.io/releases/redis-3.0.0.tar.gz


    2.解压:

    [root@bogon local]# tar -zxvf redis-3.0.0.tar.gz


     
    3.编译、安装:

    [root@bogon local]# cd /usr/local/redis-3.0.0
    [root@bogon redis-3.0.0]# make
    [root@bogon redis-3.0.0]# make install



    4.拷贝配置文件,方便以后使用

    [root@localhost redis-3.0.0]# mkdir /usr/local/redis
    [root@localhost redis-3.0.0]# mkdir /usr/local/redis/etc
    [root@localhost redis-3.0.0]# cp  redis.conf  /usr/local/redis/etc/


    5.修改配置:

    [root@bogon local]# cd /usr/local/redis/etc/
    [root@bogon redis-3.0.0]# vim redis.conf
    daemonize yes    #表示后台运行
    logfile /usr/local/redis/log    #日志文件,目录必须存在


    7.服务端启动,指定配置文件redis.conf启动

    [root@bogon redis]# redis-server  /usr/local/redis/etc/redis.conf 


    8.客户端启动:

    [root@bogon redis]# redis-cli
    127.0.0.1:6379> 

    主从架构

    主从架构设计的思路大概如下(注意:只是大概情况,并不是所有架构都完全一样):

    • 只有一台主服务器,只负责写入数据,不负责读取数据。
    • 多台从服务器,不写入数据,只负责同步主服务器的数据,提供外部程序读取。
    • 主服务器写入数据后,将命令发送到从服务器,使主从数据同步。
    • 应用程序可以读取某一台从服务器的数据,负载均衡。
    • 当某些从服务器瘫痪时,系统影响不大。当主服务器瘫痪时,选举某一台从服务器成为主服务器

     主从复制

    Redis主从复制讲解,详情见:https://www.cnblogs.com/expiator/p/9881989.html

    1.分别在两台linux上面安装redis,安装完后查看本机ip:

    ifconfig     #显示ip。其中的ens33后面的 inet 就是ip地址。

    主机ip: 192.168.0.103
    从机ip: 192.168.0.104 

    比较麻烦的是ip地址,有时动态ip会一直变化,可以设置成静态ip。或者选择"挂起"虚拟机,而不是"关机",这样ip就不会变。

     配置静态ip详情见 : https://blog.csdn.net/Readiay/article/details/50866709

    2.修改主机的配置文件redis.conf :

    vim   /usr/local/redis/etc/redis.conf 

    主机绑定了127.0.0.1,那么只能本机才能访问,从机的请求无法访问。因此将主机绑定为0.0.0.0。

    bind 0.0.0.0

    接着再修改从机的配置文件redis.conf,slaveof属性修改为:主机ip和端口:

    slaveof 192.168.0.103 6379

    3.启动主机和从机的redis,查看主机和从机的info :

    [root@bogon ~]# redis-server /usr/local/redis/etc/redis.conf 
    [root@bogon ~]# redis-cli
    127.0.0.1:6379> info

    主机状态如下:

    # Replication
    role:master
    connected_slaves:1
    slave0:ip=192.168.0.104,port=6379,state=online,offset=99,lag=1

    其中的connected_slaves不为0,表示主从复制已经成功了。

    读写分离

    主从复制成功后,在主机写入数据时,从机可以获取到数据。

    在主机写入数据如下:

    127.0.0.1:6379> set age 26
    OK

    然后在从机可以获取主机的数据。但是从机无法写入数据。

    127.0.0.1:6379> get age
    "26"
    127.0.0.1:6379> set age 28
    (error) READONLY You can't write against a read only slave.

    遇到的问题

    在linux中安装、部署环境时,出了问题一定要多看log。

    查看从机的redis的log,之前已经创建并指定了log的路径,如下:

    vim /usr/local/redis/log

    具体错误可以参见: https://www.cnblogs.com/expiator/p/9936368.html

    哨兵模式(sentinel)

    Redis 提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。
    其原理是哨兵通过发送命令,等待 Redis 服务器响应,从而监控运行的多个 Redis 实例 。
    Redis的sentinel系统用于管理多个redis服务器,该系统主要执行三个任务:监控、提醒、自动故障转移。
    1、监控(Monitoring): Redis Sentinel实时监控主服务器和从服务器运行状态,并且实现自动切换。
    2、提醒(Notification):当被监控的某个 Redis 服务器出现问题时, Redis Sentinel 可以向系统管理员发送通知, 也可以通过 API 向其他程序发送通知。
    3、自动故障转移(Automatic failover): 当一个主服务器不能正常工作时,Redis Sentinel 可以将一个从服务器升级为主服务器, 并对其他从服务器进行配置,让它们使用新的主服务器。当应用程序连接Redis 服务器时, Redis Sentinel会告之新的主服务器地址和端口。
    注意:使用多个哨兵的监控,各个哨兵之间还会相互监控,这样就变为了多个哨兵模式。
    多个哨兵不仅监控各个 Redis 服务器,而且哨兵之间互相监控 ,看看哨兵们是否还活着。

    主观下线和客观下线:
    1、主观下线状态:当一个sentinel认为一个redis服务连接不上的时候,会给这个服务打个标记为下线状态。
    2、客观下线状态:当多个sentinel认为一个redids连接不上的时候,则认为这个redis服务确实下线了。这里的多个sentinel的个数可以在配置文件中设置。

     sentinel(哨兵)配置

    1.修改主机、从机的sentinel.conf文件

    sentinel monitor mymaster  192.168.0.103  6379  2     

    最后一个参数为需要判定客观下线所需的主观下线sentinel个数,这个参数不可以大于sentinel个数。


    2.启动sentinel

    [root@localhost ~]# cd /usr/local/redis-3.0.0/
    
    [root@localhost redis-3.0.0]# redis-sentinel sentinel.conf

    结果如下:

    参考资料:

    https://blog.csdn.net/u011204847/article/details/51281567

    https://blog.csdn.net/qq_28538407/article/details/81878609

  • 相关阅读:
    字体
    abstract关键词
    final关键词
    多态
    接口
    java面向对象
    java运算符
    JDK安装
    循环
    TextView控件
  • 原文地址:https://www.cnblogs.com/expiator/p/9915774.html
Copyright © 2011-2022 走看看