• redis环境搭建及一主二从三哨兵模式配置


    一、单机redis环境搭建

    1.安装:

    OS:linux redhat6.5

    下载redis 官网下载链接:https://redis.io/download

    把安装包上传到服务器,进行解压

    [root@master redis]# tar -xvf redis-5.0.4.tar.gz
    [root@master redis]# cd redis-5.0.4
    [root@master redis-5.0.4]# ls 
    00-RELEASENOTES  BUGS          COPYING  deps  INSTALL  Makefile   README.md  runtest-cluster   sentinel.conf  tests
                  CONTRIBUTING       MANIFESTO  runtest    runtest-sentinel  src            utils

    2.安装gcc,如果未安装gcc的话需要安装gcc环境

    [root@master redis-5.0.4]# yum -y install gcc*

    3.进入redis-5.0.4目录对解压后的文件进行编译、安装

    [root@master redis]# cd redis-5.0.4
    
    [root@master redis-5.0.4]#make  //进行编译
    
    [root@master redis-5.0.4]#cd src/    //进入src目录下
    
    [root@master src]# make install //安装redis

    4.为了便于管理,在redis-5.0.4下创建bin,log,data,etc等四个目录

    [root@master redis-5.0.4]# mkdir bin
    
    [root@master redis-5.0.4]#mkdir etc
    
    [root@master redis-5.0.4]#mkdir data
    
    [root@master redis-5.0.4]#mkdir log
    
    [root@master redis-5.0.4]#ls 
    00-RELEASENOTES  BUGS          COPYING  deps  INSTALL  Makefile   README.md  runtest-cluster   sentinel.conf  tests
    bin              CONTRIBUTING  data     etc   log      MANIFESTO  runtest    runtest-sentinel  src 
    
    [root@master redis-5.0.4]#mv redis.conf etc/  //将redis-5.0.4目录下的 redis.conf 移动到 redis-5.0.4目录下的etc文件夹下
    [root@master redis-5.0.4]#mv src/mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-server  redis-sentinel bin/
    //将mkreleasehdr.sh、redis-benchmark、redis-check-aof、redis-cli、redis-server 、redis-sentinel移动到   /usr/local/redis-5.0.0/bin/ 目录下

    5.进入redis-5.0.4/etc下修改redis.conf配置文件,然后启动redis服务

    # IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
    # JUST COMMENT THE FOLLOWING LINE.
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    #bind 127.0.0.1   //绑定的主机,注释掉后允许所有主机登陆
    
    
    protected-mode no //关闭保护模式
    
    port 6379   //端口,默认为6379
    
    daemonize yes   //开启后台运行模式
    
    
    logfile "/backup2/redis/redis-5.0.4/log/redis.log" //redis日志文件路径
    
    dir "/backup2/redis/redis-5.0.4/data"   //持久化数据文件路径
    
    requirepass "password"   //登陆redis数据库的密码认证
    masterauth "password"   //哨兵模式中设定主库密码与当前库密码同步,保证从库能够提升为主库
    
    appendonly yes  //开启AOF持久化模式

    进入bin目录下

    [root@master bin]# ./redis-server ../etc/redis.conf  //使用编辑好的配置文件启动redis

    [root@master bin]# ./redis-cli //启动redis客户端
    127.0.0.1:6379> ping
    (error) NOAUTH Authentication required.
    127.0.0.1:6379> auth password  //该密码为配置文件中设定的密码
    OK
    127.0.0.1:6379> ping
    PONG
    127.0.0.1:6379> 
    
    //如上输出即表示redis启动成功

    6.启动告警处理,在首次启动redis时 有可能会有以下告警:

    告警:overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to/etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

    解决办法:在/etc/sysctl.conf/文件中添加vm.overcommit_memory=1      sysctl -p 生效

    二、哨兵模式配置

    由于哨兵模式包含了简单的主从模式,所以主从模式不再进行单独说明,普通主从模式只是可以备份数据,在主机宕机并且数据文件损坏的情况下提供数据恢复,不能在主机挂掉之后主动升级为主节点,而哨兵模式就是通过哨兵对节点的监控,在主节点挂掉之后能通过投票的方式在从节点中选举一个升级为主节点。

    软件架构:三台服务器:master,slave1,slave2,其中master为前面已经安装好的主机

    1.修改sentinel配置文件

    //在redis.conf所在目录下新建一个sentinel.conf文件
    
    [root@master etc]# vi sentinel.conf
    
    protected-mode no  //关闭保护模式
    
    port 26379           //默认端口
    
    daemonize yes      //允许后台运行
    
    pidfile "/var/run/redis-sentinel.pid"  //pid文件 默认就好
    logfile "/backup2/redis/redis-5.0.4/log/sentinel.log"  //sentinel日志文件
    
    sentinel announce-ip 192.168.1.1 //设置本机ip
    
    #master
    sentinel monitor mymaster 192.168.1.1 6379 2
    sentinel down-after-milliseconds mymaster1 30000
    sentinel parallel-syncs mymaster 2
    sentinel failover-timeout mymaster 180000
    sentinel auth-pass mymaster1 yourpasswd
    
    

    2.把 redis-5.0.4目录整个打包并传到另外两台服务器,然后解压

    在每台服务器上分别修改redis.conf,在配置文件中添加  slaveof 192.168.1.1 6379  //配置主从关系

    修改sentinel.cong,把sentinel announce-ip 192.168.1.1  中的ip更换为本机ip,其余配置可不用更改。

    3.启动集群服务,按照master->slave->sentinel的启动顺序

    [root@master bin]# ./redis-server ../etc/redis.conf  //在每个节点执行该命令启动redis
    
    root@master bin]# ./redis-sentinel ../etc/sentinel.conf  //启动sentinel
    
    //启动后在主节点连接到主节点
    
    127.0.0.1:6379> info replication
    # Replication
    role:master    //角色   
    connected_slaves:2     //节点个数
    slave0:ip=192.168.1.2,port=6379,state=online,offset=84,lag=1    //从节点信息
    slave1:ip=192.168.1.3,port=6379,state=online,offset=98,lag=0     //从节点信息
    master_replid:27663ab908f4a8bfd198cd7ec3db924bee4fa441
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:98
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:98
    
    //连接到从节点
    127.0.0.1:6379> info replication
    # Replication
    role:slave
    master_host:192.168.1.1
    master_port:6379
    master_link_status:up      //主节点状态 up/down
    master_last_io_seconds_ago:1
    master_sync_in_progress:0
    slave_repl_offset:62896
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:af5dd7a6f5e2093bbe8f01923fcfe0ed7fc8ba14
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:62896
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:62896
    127.0.0.1:6379>

    启动哨兵:[root@test bin]# ./redis-sentinel ../etc/sentinel.conf

    [root@master bin]#./redis-cli -h 192.168.1.1 -p 26379
    10.197.11.159:26379> info sentinel
    # Sentinel
    sentinel_masters:1
    sentinel_tilt:0
    sentinel_running_scripts:0
    sentinel_scripts_queue_length:0
    sentinel_simulate_failure_flags:0
    master0:name=mymaster,status=ok,address=192.168.1.1:6379,slaves=2,sentinels=3
    //以上表示哨兵模式集群正常

    至此,redis的一主二从三哨兵架构搭建完成。

  • 相关阅读:
    js写入和读取cookie
    算法笔记汇总精简版
    廖雪峰Git教程3
    廖雪峰Git教程2
    廖雪峰Git教程1
    PHP fastcgi_finish_request 方法
    PHP获取远程文件的大小,通过ob_get_contents实现
    PHP 浮点型运算相关问题
    php中的func_num_args、func_get_arg与func_get_args函数
    C# ListView用法详解
  • 原文地址:https://www.cnblogs.com/sg1005/p/10695161.html
Copyright © 2020-2023  润新知