zoukankan      html  css  js  c++  java
  • Sentinel+Redis集群高可用

    Sentinel+Redis集群高可用

    一、环境准备及部署架构

    所谓的Redis集群,就是通过添加服务器的数量,提供相同的服务,从而让服务器达到一个稳定、高效的状态。

    Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance)实现监控,提醒,故障迁移的效果,sentinel网络中,只要还有一个sentinel活着,就可以实现故障切换。

    环境主备:

    192.168.10.62   reids01(master)/sentinel(哨兵)

    192.168.10.63   reids02(slave)/sentinel(哨兵)

    192.168.10.64   reids03(slave)/sentinel(哨兵)

    部署架构:

     

     

    二、安装Redis

    2.1安装gcc依赖

    由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装

     [root@localhost local]# yum install -y gcc  

    2.2下载并解压安装包

    cd  /usr/local/src/

    wget http://download.redis.io/releases/redis-6.2.5.tar.gz

    tar -zxvf redis-6.2.5.tar.gz

    cd redis-6.2.5

    make

    make install PREFIX=/usr/local/redis

     

    2.3、启动服务

    前台启动

    cd /usr/local/redis/bin/

     ./redis-server

     

     

    后台启动

    redis 的源码目录中复制 redis.conf 到 redis 的安装目录

    cp /usr/local/src/redis-6.2.5/redis.conf   /usr/local/redis/bin

    修改 redis.conf 文件,把 daemonize no 改为 daemonize yes

    vi  /usr/local/redis/bin/redis.conf

     

    启动

    [root@localhost bin]# ./redis-server  redis.conf

     

     

     

    2.4、设置开机启动

    添加开机启动服务

    vi  /usr/lib/systemd/system/redis.service

     

    注意:ExecStart配置成自己的路径 

    设置开机启动

    [root@localhost bin]# systemctl daemon-reload

    [root@localhost bin]# systemctl start redis.service

    [root@localhost bin]# systemctl enable redis.service 

    创建 redis 命令软链接

    [root@localhost ~]# ln -s /usr/local/redis/bin/redis-cli  /usr/bin/redis

    服务操作命令:

    systemctl  start  redis.service   #启动redis服务

    systemctl  stop  redis.service   #停止redis服务

    systemctl  restart  redis.service   #重新启动服务

    systemctl  status  redis.service   #查看服务当前状态

    systemctl  enable  redis.service   #设置开机自启动

    systemctl  disable  redis.service   #停止开机自启动

     

     

     

    三、Redis集群配置

    Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,同步使用的是发布/订阅机制,Mater Slave的模式,从SlaveMaster发起SYNC命令,最终实现读写分离、容灾备份效果。

    3.1、 主从结构搭建

    l 说明

    192.168.10.62:6379  master

    192.168.10.63:6379  slave

    192.168.10.64:6379  slave

    l Master节点修改配置文件

    vi /usr/local/redis/bin/redis.conf

    # Redis使用后台模式 

    daemonize yes

     # 关闭保护模式 

    protected-mode no 

    # 注释以下内容开启远程访问

     # bind 127.0.0.1

     # 修改启动端口为6379

     port 6379

    # 修改pidfile指向路径

     pidfile /var/run/redis_6379.pid

     以此类推,修改端口192.168.10.63192.168.10.64配置。

    l 设置主从

    从节点依次修改配置redis.conf文件,指定主节点的IP和端口

    slaveof <masterip> <masterport>    指定masteripport

    slaveof  192.168.10.62  6379

    也可以用以下命令,临时使用:

    127.0.0.1:6379> slaveof 192.168.10.62  6379

    masterauth <master-password>       master有验证的情况下

    slave-read-only yes                设置slave为只读模式

     

     

     

     

     

    验证 主从关系

      Redis -h nacos01 -p 6379

      Info replication

     

     

    Info

     

    四、Sentinel动态监控

    4.1、配置Sentinel

    复制sentinel文件

    cp /usr/local/src/redis-6.2.5/sentinel.conf  /usr/local/redis/bin/

    macos01 配置sentinel.conf文件,修改端口,并指定要监控的主节点。(从节点不需要指定,sentinel会自动识别)

    port 26379

    daemonize yes

    dir "/usr/local/redis/data"  #工作目录

    logfile "/usr/local/redis/data/26379.log"    #日志

    sentinel down-after-milliseconds mymaster 30000 #主节点故障飘逸时间毫秒

    pidfile /var/run/redis-sentinel.pid

    sentinel monitor mymaster 192.168.10.62 6379 2

     

     

    macos02和macos03依次 配置sentinel.conf文件,修改端口,并指定要监控的主节点。(从节点不需要指定,sentinel会自动识别)

    port 26379

    daemonize yes

    dir "/usr/local/redis/data"  #工作目录

    logfile "/usr/local/redis/data/26379.log"    #日志

    sentinel down-after-milliseconds mymaster 30000 #主节点故障飘逸时间毫秒

    pidfile /var/run/redis-sentinel.pid

    sentinel monitor mymaster 192.168.10.62 6379 2

     

     

     

    macos03依次 配置sentinel.conf文件,修改端口,并指定要监控的主节点。(从节点不需要指定,sentinel会自动识别)

    编辑config目录下的sentinel配置,加入守护进程启动,工作目录,日志文件名,监听master的端口号

    port  26379   #端口

    daemonize yes   #开始守护进行

    dir "/usr/local/redis/data"  #工作目录

    logfile "/usr/local/redis/data/26379.log"    #日志

    sentinel down-after-milliseconds mymaster 30000 #主节点故障飘逸时间毫秒

    pidfile /var/run/redis-sentinel.pid

    sentinel monitor mymaster 192.168.10.62 6379 2

     

     

     

     

     

    4.2、启动、测试sentinel

    再打开三个xshell窗口,在每一个窗口中,启动一个哨兵实例,并观察日志输出

    启动: ./redis-sentinel  ./sentinel.conf

    停止: ./redis-cli -p 26379 shutdown

     

    4.3、Sentinel命令

    1

    2

    3

    4

    5

    6

    127.0.0.1:26379> sentinel masters

    127.0.0.1:26379> sentinel slaves mymaster

    127.0.0.1:26379> SENTINEL get-master-addr-by-name mymaster

    127.0.0.1:26379> SENTINEL reset mymaster

    127.0.0.1:26379> SENTINEL failover mymaster

    127.0.0.1:26379> SENTINEL flushconfig mymaster

     

     

     

    五、测试

    确认:

    # redis-cli -p 26379

    127.0.0.1:26379> INFO sentinel

     

     

    确认Master信息

     

    (1)先关闭192.168.10.62:6379节点。发现,确实重新指定了一个主节点

     

    2打开192.168.10.63:6379节点观察

    30秒后主节点漂移到了192.168.10.63:6379,实现了redis集群的动态飘逸

     

     

     

    六、参考

    https://www.cnblogs.com/vieta/p/11192137.html

    https://www.cnblogs.com/heqiuyong/p/10463334.html

    https://my.oschina.net/u/3371837/blog/1789891

     

    6.1、节点之间之间建立无秘互信

    192.168.10.62  nacos01

    192.168.10.63  nacos02

    192.168.10.64  nacos03

    ===========nacos01=======================

    1nacos01生成密钥 62

        yum install -y openssh-clients       

             ssh-keygen

     ssh-copy-id -i .ssh/id_rsa.pub root@nacos02

     ssh-copy-id -i .ssh/id_rsa.pub root@nacos03

    ===========nacos02=======================

     

    2nacos02生成密钥 63

        yum install -y openssh-clients       

             ssh-keygen

     ssh-copy-id -i .ssh/id_rsa.pub root@nacos01

     ssh-copy-id -i .ssh/id_rsa.pub root@nacos03

    ===========nacos03======================

     

    3nacos03生成密钥 64

        yum install -y openssh-clients       

             ssh-keygen

     ssh-copy-id -i .ssh/id_rsa.pub root@nacos01

     ssh-copy-id -i .ssh/id_rsa.pub root@nacos02

  • 相关阅读:
    二叉搜索树
    【树】List Leaves
    模板——dijkstra单源最短路
    余数求和——除法分块
    倍增——ST表
    线段树——内存池
    线段树——模板
    洛谷 P1498 南蛮图腾
    洛谷 P2199 最后的迷宫
    洛谷 P1495 中国剩余定理
  • 原文地址:https://www.cnblogs.com/show58/p/15385509.html
Copyright © 2011-2022 走看看