• redis--安装


    一、安装、部署

    两台机子:10.6.54.231(master),10.6.54.232(slave),先操作master

    1.下载编译:

    windows:https://github.com/MSOpenTech/redis/releases,Windows版不是官方开发的,是微软某个技术小组开发的

    Linux: http://download.redis.io/releases/redis-3.0.0.tar.gz 

    解压到/opt/app/redis-3.0.0目录下,执行make命令编译

    注:make命令需要linux上安装gcc,若机器上未安装gcc,redhat环境下,如果能联网,可键入:yum -y install gcc 安装

      编译中若提示"Newer version of jemalloc required"之类的错误,在make后加参数 MALLOC=libc,即 make MALLOC=libc

    2.默认端口为6379,可以在/opt/app/redis-3.0.0下修改端口:

    mkdir conf
    cp redis.conf conf/

    打开复制的redis.conf 修改两个地方

    daemonize yes  # redis server 启动方式为在后台运行

    port 8830    #端口设为8830

    3.启动

    cd /opt/app/redis-3.0.0/src

    ./redis-server ../conf/redis.conf

    4.测试

    ./redis-cli -p 8830

    注:如果连接远程的redis服务器,可以用类似./redis-cli -h 10.6.54.231 -p 8830 set test

    • 设置一个key为test,value为'Hello Redis'的缓存项

      set test 'Hello Redis'

    • 读取缓存,测试获取test缓存项

       get test 

    • 删除缓存

       del test 

    5.停止

    ./redis-cli -p 8830 shutdown

    到此,在单机使用redis基本可以了,下面的配置主要是redis功能增强

    6. master-salve模式

    master节点写入cache后,会自动同步到slave上,默认slava只读不写

    在slave上重复【1】【2】步骤,修改slave机器的节点配置,在redis.conf中配置如下

    slaveof 10.6.54.231 8830 #将slaveof  设置为 master节点的机器IP和端口

    到此,master-salve模式配置完成,只要修改一点就可以了,可以检测了,

    在master写入一个缓存项,去slave上读出,顺利的话就成功了

    7.sentinel 配置 (哨兵机制)

    cd /opt/app/redis-3.0.0/

    sentinel.conf 复制一份到conf目录下,修改

    1 port 8831 #指定sentinel使用的端口
    2 
    3 dir /opt/app/redis/redis-3.0.0/tmp #工作目录
    4 
    5 sentinel monitor mymaster 10.6.54.231 8830 1
    6 sentinel down-after-milliseconds mymaster 5000
    7 sentinel parallel-syncs mymaster 1
    8 sentinel failover-timeout mymaster 15000

    第5行,显示监控master节点10.6.54.231,master节点使用端口8830,最后一个数字表示投票需要的"最少法定人数",比如有10个sentinal哨兵都在监控某一个master节点,如果需要至少6个哨兵发现master挂掉后,才认为master真正down掉ODOWN(客观宕机,Objective Down),那么这里就配置为6,最小配置1台master,1台slave,在二个机器上都启动sentinal的情况下,哨兵数只有2个,如果一台机器物理挂掉,只剩一个sentinal能发现该问题,所以这里配置成1,至于mymaster只是一个名字,可以随便起,但要保证5-8行都使用同一个名字

    第6行,表示如果5s内mymaster没响应,就认为SDOWN(主观宕机,Subjective Down)

    第8行,表示如果15秒后,mymaster仍没活过来,则启动failover,从剩下的slave中选一个升级为master

    第7行,表示如果master重新选出来后,其它slave节点能同时并行从新master同步缓存的台数有多少个,显然该值越大,所有slave节点完成同步切换的整体速度越快,但如果此时正好有人在访问这些slave,可能造成读取失败,影响面会更广。最保定的设置为1,只同一时间,只能有一台干这件事,这样其它slave还能继续服务,但是所有slave全部完成缓存更新同步的进程将变慢。

    另:一个sentinal可同时监控多个master,只要把5-8行重复多段,加以修改即可。

    master和slave上使用同样的sentinel.conf

    进入src,启动哨兵:./redis-sentinel ../conf/sentinel.conf

    停止哨兵:./redis-cli -p 8831 shutdown 

    启动master和slave上的redis和哨兵,然后在master上,./redis-cli -p 8830 shutdown ,手动把master停掉,稍后重启,观察sentinel的输出

    17836:X 18 Nov 16:33:27.535 # +switch-master mymaster 10.6.54.231 8830 10.6.54.232 8830 #master发生了迁移
    17836:X 18 Nov 16:33:27.535 * +slave slave 10.6.54.231:8830 10.6.54.231 8830 @ mymaster 10.6.54.232 8830
    17836:X 18 Nov 16:33:32.584 # +sdown slave 10.6.54.231:8830 10.6.54.231 8830 @ mymaster 10.6.54.232 8830
    17836:X 18 Nov 16:34:13.304 # -sdown slave 10.6.54.231:8830 10.6.54.231 8830 @ mymaster 10.6.54.232 8830
    17836:X 18 Nov 16:34:23.308 * +convert-to-slave slave 10.6.54.231:8830 10.6.54.231 8830 @ mymaster 10.6.54.232 8830 #master重启后,被当作slave加入

    附:常用命令

    /opt/app/redis-3.0.0/src/redis-server /opt/app/redis-3.0.0/conf/redis.conf #启动redis
    /opt/app/redis-3.0.0/src/redis-cli -p 8830 #连接redis
    /opt/app/redis-3.0.0/src/redis-cli -p 8830 shutdown #关闭redis
    
    nohup /opt/app/redis-3.0.0/src/redis-sentinel /opt/app/redis-3.0.0/conf/sentinel.conf & #启动sentinel
    /opt/app/redis-3.0.0/src/redis-cli -p 8831 shutdown #关闭sentinel
    /opt/app/redis-3.0.0/src/redis-cli -p 8831 sentinel masters #查看master节点情况

     后记:在家里安装redis时,启动正常,使用自带客户端set测试时出现类似

    127.0.0.1:6379> set k1 "nob"

    (error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.

    错误,网上说是由于内存不足,要在/etc/sysctl.conf 添加一项 vm.overcommit_memory = 1,运行命令sysctl vm.overcommit_memory=1或重启使之生效,我试了下还是没效果,后来发现安装的目录竟然所有者不是登陆用户,使用chown改变所有者,提高权限,就好了,如果出现这样的error,先试试这两种情况,如果还是不行就在redis.conf配置日志文件logfile "",检查日志

    参考文章:

    Redis Sentinel:集群Failover解决方案

  • 相关阅读:
    DIJ最短路
    快速输入/输出
    Codeforces Round #610 (Div. 2).K for the Price of One (Hard Version)
    Codeforces Round #625 (Div. 1, based on Technocup 2020 Final Round).B. Navigation System
    Codeforces Round #612 (Div. 2)C. Garland
    Codeforces Round #621 (Div. 1 + Div. 2).D. Cow and Fields
    73.Python中ORM聚合函数详解:Count
    72.Python中ORM聚合函数详解:Avg,aggregate,annotate
    17. Getting to the essence of things
    55.ORM外键:引用同app下的不同模型,引用不同app下的模型,引用模型自身使用详解
  • 原文地址:https://www.cnblogs.com/yhzh/p/4974681.html
Copyright © 2020-2023  润新知