Redis高可用哨兵模式搭建 一主一从二哨兵模式

 

Redis安装、配置


1、Redis 安装

  wget http://download.redis.io/releases/redis-5.0.5.tar.gz
  tar zxcf redis-5.0.5.tar.gz
  cd  redis-5.0.5
  cd src 
   make
   yum install -y tcl
   make test
   make install PREFIX=/home/redis-sentinel #指定目录安装,注意 PREFIX 大写


 2、配置文件

  mkdir /home/redis-sentinel/conf
  cp redis.conf /home/redis-sentinel/conf
  cd /home/redis-sentinel/conf
  vi redis.conf   #编辑配置文件
  • 将bind 127.0.0.1注释掉,这个是绑定能访问redis的ip地址,如果指定,那么只有指定的ip可以访问redis
  • 将daemonize no修改为daemonize yes,设置为后台启动
  • 将protected-mode yes修改为protected-mode no,设置为非保护模式,这样可以进行远程访问,如果不改,哨兵配置的如果是真实ip地址(非127.0.0.1),则没法访问。非保护模式会有安全问题,我们可以给redis和哨兵设置密码,增强安全性。  
cp redis.conf redis-6380.conf  
  •   分别修改`redis-6380.conf的端口号等并且加入一下配置。
  •   slaveof [主节点ip] [主节点端口号]    如:slaveof 192.168.1.27

3、启动redis

  ./redis-server ../conf/redis.conf 
  ./redis-server ../conf/redis-6380.conf 
  • 到此Redis的主从配置就完成了,可以通过
  •    ./redis-cli -p [端口号]登录命令,登录redis进行测试主从复制是否成功。

Redis哨兵配置


1、从下载文件中复制sentinel.conf配置文件到安装目录下

2、在配置文件中修改以下内容

  •   port 26379  #哨兵的端口
  •   sentinel monitor s1 <ip地址> 6379 2   
  •   sentinel monitor s2 <ip地址> 6379 2   # 这里是主节点的配置,如果有多个master节点,则配置多行,2代表选举的时候新的leader需要获得2票
  •   protected-mode no
  • 注意:

此处的<ip地址>不要写127.0.0.1,否则在使用程序连接哨兵的时候,主从切换后,程序自动获取到的IP地址是127.0.0.1:端口,这意味着应用程序服务器上可能是没有Redis的(如果有也可能不是同一个Redis)。

protected-mode :关闭保护模式(默认情况下,redis node和sentinel的protected-mode都是yes,在搭建集群时,若想从远程连接redis集群,需要将redis node和sentinel的protected-mode修改为no,若只修改redis node,从远程连接sentinel后,依然是无法正常使用的,且sentinel的配置文件中没有protected-mode配置项,需要手工添加。依据redis文档的说明,若protected-mode设置为no后,需要增加密码证或是IP限制等保护机制,否则是极度危险的。)

    3、将此配置文件再复一份,分别是sentinel-26479.conf

   4、分别修改复制配置文件中的端口号

   5、启动哨兵

  ./redis-sentinel ../conf/sentinel.conf
  ./redis-sentinel ../conf/sentinel-26479.conf
  到此哨兵配置就结束了,可以模拟宕机的情况来测试主从切换。

   6、如果以上配置出现了错误,就把redis自动生成的代码删掉,再试试。

      #删掉以下代码,重试
     sentinel myid 82198d08eeae6a1123d935baa4aab0184ff42210
 
# Generated by CONFIG REWRITE
sentinel config-epoch mymaster 3
sentinel leader-epoch mymaster 3
sentinel known-slave mymaster 172.19.246.6 6379
sentinel known-slave mymaster 172.19.246.5 6379
sentinel known-sentinel mymaster 172.19.246.6 26379 fd6559342c1da75344258efc09027693863b61b6
sentinel known-sentinel mymaster 172.19.246.7 26379 82198d08eeae6a1123d935baa4aab0184ff42210

7.客户端连接测试

redis-cli -h 172.16.4.220 -p 46379 info Sentinel
redis-cli -h 172.16.4.220 -p 46379 SENTINEL get-master-addr-by-name mymaster


 

Springboot整合哨兵模式


1、依赖引入

  <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-redis</artifactId>
  </dependency>
 <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.0.1</version>
 </dependency>
  <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.6.2</version>
</dependency>


1、yaml文件的配置

 

spring.redis.sentinel.master=mymaster   #哨兵集群的名称
  spring.redis.sentinel.nodes=192.168.1.112:26379,192.168.1.112:26479,192.168.1.112:26579 #哨兵节点
  #spring.redis.sentinel.password=123456  如果有密码则设置密码
  # 以下配置是org.springframework.boot.autoconfigure.data.redis低版本才有的。。
  spring.redis.pool.max-active=50 #最大连接数
  spring.redis.pool.max-idle=10   #最大等待连接数
  spring.redis.pool.max-wait=10000    #最大等待毫秒数
  spring.redis.pool.min-idle=5    #最小等待连接数
  spring.redis.timeout=0  #超时时间
  # 高版本的连接池的配置,选一个就可以
  #spring.redis.jedis.pool.max-active=50
  #spring.redis.jedis.pool.max-idle=10
  #spring.redis.jedis.pool.max-wait=10000ms
  #spring.redis.jedis.pool.min-idle=5
  #spring.redis.jedis.timeout=0
  spring.redis.lettuce.pool.max-active=50
  spring.redis.lettuce.pool.max-wait=10000ms
  spring.redis.lettuce.pool.max-idle=8
  spring.redis.lettuce.pool.min-idle=5


2、使用spring-data-redis中的RedisTemplate可以完成自动配置,开箱即用

  @Autowired
  private RedisTemplate redisTemplate;

注意redisTemplate必须是这个名,才能自动注入,这是源码中写好的 org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration

  1.  

--------------------- 
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis哨兵模式是一种用于可用性部署的Redis架构。它通过监控Redis节点的状态,并在节点故障时自动将其中一个从节点升级为新的节点,以保证系统的可用性。 要搭建Redis哨兵模式,首先需要准备一组Redis实例,包括一个节点和多个从节点。然后按照以下步骤进行配置: 1. 配置节点:在节点的配置文件(redis.conf)中,设置`port`、`bind`和`daemonize`等参数,并打开`requirepass`选项设置密码保护。重要的是要启用`masterauth`选项并设置与`requirepass`相同的密码。 2. 配置从节点:在每个从节点的配置文件(redis.conf)中,设置`port`、`bind`和`daemonize`等参数,并在配置文件中添加`slaveof`选项,指定节点的IP地址和端口号。另外,也需要设置与节点相同的密码保护。 3. 配置哨兵节点:在一个或多个独立的服务器上,分别配置哨兵节点的配置文件(sentinel.conf)。设置`port`、`bind`、`daemonize`以及至少一个监控的节点的信息,包括IP地址、端口号和密码。例如,使用`sentinel monitor <master-name> <ip> <port> <quorum>`命令添加监控的节点。 4. 启动Redis实例:依次启动节点、从节点和哨兵节点的Redis实例。可以使用`redis-server`命令指定配置文件路径来启动实例。 5. 验证哨兵模式:通过`redis-cli`连接到任意一个哨兵节点,并使用`sentinel master <master-name>`命令查看节点的状态信息。可以使用`sentinel slaves <master-name>`命令查看从节点的状态。 在上述步骤完成后,Redis哨兵模式搭建成功了。如果节点发生故障,哨兵节点会自动将一个从节点升级为新的节点,并通知其他从节点更新配置。这样可以保证系统的可用性和容错性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值