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 6379 2   
  •   sentinel monitor s2 6379 2   # 这里是主节点的配置,如果有多个master节点,则配置多行,2代表选举的时候新的leader需要获得2票
  •   protected-mode no
  • 注意:

此处的不要写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、依赖引入

  
     org.springframework.boot
     spring-boot-starter-data-redis
  
 
            redis.clients
            jedis
            3.0.1
 
  
            org.apache.commons
            commons-pool2
            2.6.2


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.  

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

你可能感兴趣的:(Redis高可用哨兵模式搭建 一主一从二哨兵模式)