zoukankan      html  css  js  c++  java
  • linux centos 7安装redis并且配置主从复制和哨兵模式。一主二从三哨兵

    1、VMware准备三台虚拟机(不会安装的自行百度,再次不做赘述),我的配置如图。三台虚拟机(centos 7),IP分别为192.168.124.19,192.168.124.20,192.168.124.21,其中20作为master(主服务器)。19和21为slave(从服务器)。主服务器可以读写,从服务器只读不能写。三台服务器上分别安装redis,我的redis版本为4.0.11

    tar xzvf redis-4.0.11.tar.gz
    
    cd redis-4.0.11
    
    make
    
    make install
    
    安装gcc 
    yum -y install gcc automake autoconf libtool make 

    2、redis安装好了之后,三台服务器分别把相关的文件拷贝到/usr/redis目录下。先新建此目录,然后在redis安装目录下的src目录下面复制redis-server、redis-cli、redis-benchmark三个文件到/usr/redis。再从redis安装目录下复制redis.conf、sentinel.conf两个文件到/usr/redis目录下面。复制完之后,/usr/redis文件夹目录如下,只有这5个文件

    3、进入到/usr/redis目录,修改两个从服务器(也就是192.168.124.19,192.168.124.21这两个)的redis.conf文件

    # bind 127.0.0.1   #把这一行注释掉
    protected-mode no # 把保护模式设置为no,如果这里是yes,那么修改为no
    port 6379 #端口号6379保持不变
    daemonize no #这里修改为no,表示redis服务可以后台运行
    slaveof 192.168.124.20 6379 #由于是从服务器,所以要配置其主服务器,配置格式:
    slaveof 主IP 主端口号

    4、修改主服务器(192.168.124.20)的redis.conf文件,因为是主服务器,所以不配置slaveof,其他相同

    # bind 127.0.0.1   #把这一行注释掉
    protected-mode no # 把保护模式设置为no,如果这里是yes,那么修改为no
    port 6379  #端口号6379保持不变
    daemonize no  #这里修改为no,表示redis服务可以后台运行

    5、关于redis的其他配置可以参考这个博客 https://www.cnblogs.com/zxtceq/p/7676911.html

    6、修改完了配置之后,可以挨个启动redis服务。这里启动一点要带上redis.conf,否则的话,redis会用默认配置,那刚才配置的就没用了,所以要带上redis.conf

    redis-server redis.conf

    这时候三个服务器的redis服务就已经全部启动了,可以用info命令查看redis信息

    redis-cli info

    先看主服务器192.168.124.20,如图。可以看到角色role是master,也就是主服务器,有两个slave,slave0和slave1,说明配置正确

    再看从服务器的信息info,在从服务器上执行redis-cli info命令,如图。可以看到角色role是slave,也就是从服务器。master_link_status:up这说明主服务状态正在运行,这里如果为down,那可能是主机的防火墙的原因,可以关闭防火墙,systemctl stop firewalld

    7、试一试redis的读写,在主服务器上面可以写,也就是set,在20上面执行,可以读可以写

    在从服务器上,19上面,可以看到没有写的权限,只有读的权限。可以在 主服务器上面写,然后在从服务器上面读取

    8、到此,redis的主从复制已经搭建完成,然后再搞一下哨兵。其实哨兵也就是一个进程,用来监视这个redis集群。这里遵从一主二从三哨兵模式。这里有三台主机192.168.124.19,192.168.124.20,192.168.124.21,可以在这上面分别启动一个哨兵进程。注意:哨兵进程和redis进程没有关系,可以在一台主机上面启动。(最开始学这里的时候我也是懵逼的,后来懂的),还记得开始的时候拷贝的几个文件么,其中有一个就是sentinel.conf ,这个文件就是哨兵的配置文件。三个哨兵监控这个redis集群,如果主服务器挂了,那么三个哨兵就从从服务器里选一台作为主服务器,选举机制一会在配置文件里面表明。

    9、三台服务器上的哨兵配置相同的,这里写一个,其他两个都一样的,修改配置文件sentinel.conf

    protected-mode no  #关闭保护模式
    
    port 26379  #端口号
    
    dir "/tmp"   #目录

    sentinel parallel-syncs mymaster 1 #故障迁移的时候,复制的从服务器的个数

    sentinel failover-timeout mymaster 180000 #故障迁移所需时间,也就是主服务器挂了之后,选举新服务器的时间,如果这个时间还没能选举出来,那么就算选举失败

    sentinel deny-scripts-reconfig yes sentinel monitor mymaster
    192.168.124.20 6379 2 #这个是指哨兵监视哪个redis集群,这里监视的是192.168.124.20,6379是端口号,最后的2表示,如果主服务器挂了,3个哨兵中有2个投票选新的服务器,那么就可以进行故障迁移,选出了新的服务器 sentinel down-after-milliseconds mymaster 3000 #sentinel认为“主线下线”的一个阀值。

     10、挨个启动哨兵模式,哨兵之间也是相互监控的

    redis-server sentinel.conf --sentinel &

     11、这是,哨兵模式就已经启动了,这时候就可以监视redis集群了,如果主服务器挂了之后就可进行故障转移了,现在模拟主服务器挂掉,在20上执行,redis-cli shutdown,手动挂掉主服务器,如图

    可以看到,+switch,选了一个新的主服务器,也就是19.这时候看一看19的信息info如图,19role为master,有一个从服务器21

    试一试写操作,是可以的

    看一看21的info,主服务器变为19

    12、再重新启动挂掉的20,之后再看看19的info,有两个slave,20和21.很成功。nice

    Linux
    
    安装完redis单独用命令:
    
    redis-server
    报错:
    
    -bash: redis-server: command not found
    说明redis-server不是全局命令,那么假如到全局即可:
    
     假如我的redis安装路径是:/home/prod/redis/redis-4.0.8
    
    ln -s /home/prod/redis/redis-4.0.8/src/redis-server /usr/bin/redis-server
    将
    redis-server
    放到/usr/bin下即可(相当于创建一个全局快捷方式)
    --------------------- 
    作者:Mr.True 
    来源:CSDN 
    原文:https://blog.csdn.net/q258523454/article/details/81012518 
    版权声明:本文为博主原创文章,转载请附上博文链接!
    

      

     
  • 相关阅读:
    【转载】Linux下各文件夹的含义和用途
    【转载】Linux 通过mount -o loop 配置本地.iso镜像为yum源(yum仓库)
    Fedora 和 RedHat 以及 SUSE 中 YUM 工具的使用
    【转】下载对应内核版本的asmlib
    【转】VMWare vCenter 6.0安装配置
    【转】在VMware中为Linux系统安装VM-Tools的详解教程
    【转】虚拟化(五):vsphere高可用群集与容错
    html拼接时onclick事件传递json对象
    bootstrap table 解析写死的json.并且把进度条放进列中。
    开发规范实体和值对象
  • 原文地址:https://www.cnblogs.com/bxssjava/p/9992492.html
Copyright © 2011-2022 走看看