zoukankan      html  css  js  c++  java
  • CentOS7 yum安装配置 +redis主从配置

    一.安装必要包

    yum install gcc

    二.linux下安装

    复制代码
    #下载
    wget http://download.redis.io/releases/redis-3.0.0.tar.gz
    tar zxvf redis-3.0.0.tar.gz
    cd redis-3.0.0
    #如果不加参数,linux下会报错
    make MALLOC=libc
    复制代码

    安装好之后,启动文件

    #启动redis
    src/redis-server &
    #指定配置文件启动
    src/redis-server redis.conf  #关闭redis src/redis-cli shutdown

    当数据量变得庞大的时候,读写分离还是很有必要的。同时避免一个redis服务宕机,导致应用宕机的情况,我们启用sentinel(哨兵)服务,实现主从切换的功能。

     redis提供了一个master,多个slave的服务。 

    准备三个redis服务,依次命名文件夹子master,slave1,slave2.这里为在测试机上,不干扰原来的redis服务,我们master使用6000端口。

    配置文件(redis.conf)

    master配置修改端口:

        port 6000
    
        requirepass 123456

     slave1修改配置:

    port 6001 
    slaveof 127.0.0.1 6000 
    masterauth 123456 
    requirepass 123456

     slave2修改配置: 

    port 6002 
    slaveof 127.0.0.1 6000 
    masterauth 123456 
    requirepass 123456

     requirepass是认证密码,应该之后要作主从切换,所以建议所有的密码都一致, masterauth是从机对主机验证时,所需的密码。(即主机的requirepass)

    启动主机

    # redis-server redis.conf 

    启动从机:

     redis-server redis1.conf
    
     redis-server redis2.conf
    #启动后可以自行验证

    哨兵配置

    vim sentinel.conf

    port 26379

    dir "/tmp"

    sentinel myid 534961a845edd605e8c280d031b6e531dbd7017a

    sentinel monitor mymaster 192.168.183.136 6000 1

    sentinel down-after-milliseconds mymaster 3000

    sentinel failover-timeout mymaster 5000

    sentinel config-epoch mymaster 9
    sentinel leader-epoch mymaster 9
    sentinel known-slave mymaster 192.168.183.138 6000

    启动哨兵

    src/redis-sentinel sentinel.conf

    1 port 7031
    2 
    3 dir /opt/app/redis/redis-2.8.17/tmp
    4 
    5 sentinel monitor mymaster 10.6.144.155 7030 1
    6 sentinel down-after-milliseconds mymaster 5000
    7 sentinel parallel-syncs mymaster 1
    8 sentinel failover-timeout mymaster 15000
    复制代码

    第1行,指定sentinel使用的端口,不能与redis-server运行实例的端口冲突

    第3行,指定工作目录

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

    第6行,表示如果5s内mymaster没响应,就认为SDOWN

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

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

    C# 获取主从服务器地址

    port 26379

    dir "/tmp"
    daemonize yes
    ## 守护进程模式
    #daemonize yes
    ##关闭保护模式
    #protected-mode no
    ##哨兵监控的master,主从配置一样,这里只用输入redis主节点的ip/port和法定人数。
    sentinel monitor mymaster 192.168.148.131 6000 1
    ## master或slave多长时间(默认30秒)不能使用后标记为s_down状态。
    sentinel down-after-milliseconds mymaster 5000
    ##若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。
    sentinel failover-timeout mymaster 18000
    ##设置master和slaves验证密码
    #sentinel auth-pass mymaster 123456

    sentinel config-epoch mymaster 2
    #指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步

    C# 调用

    类库:csredis

    using (var sentinel = new RedisSentinelClient("192.168.148.131", 26379))
    {
      var master = sentinel.Slaves("mymaster");//这个就是在Sentinel上面为Master主机起的名字,要一致
      foreach (var item in master)
      {
        Console.WriteLine(item.MasterHost + ":" + item.MasterPort);//得到Master机器信息
        Console.WriteLine(item.Ip + ":" + item.Port);//得到Slave机器信息
        Console.WriteLine();
      }
    }

  • 相关阅读:
    去掉影响美观的横滚动条
    Visio绘制事件分解图
    Visio绘制系统图
    asp.net与js中字符串的HTML编码与解码
    《ERP从内部集成起步》读书笔记——第一章 Garthner公司是如何提出ERP的 1.1尊重历史
    Asp.net页面传参数给Silverlight
    Gridview中格式化数据的方法
    让silverlight不在最顶层,可以在悬浮层之下
    DateTime类型中 DayOfWeek时的英文如何转换成中文(转)
    Asp.net页面中通过Js控制Silverlight显示值
  • 原文地址:https://www.cnblogs.com/lijiasnong/p/5478507.html
Copyright © 2011-2022 走看看