本文共 5748 字,大约阅读时间需要 19 分钟。
====================================================================
port 26370 #
bind 0.0.0.0 # 禁止保护模式 protected-mode no # 配置监听的主服务器,这里sentinel monitor代表监控,mymaster代表服务器的名称,可以自定义,192.168.11.128代表监控的主服务器,6379代表端口,2代表只有两个或两个以上的哨兵认为主服务器不可用的时候,才会进行failover操作。 sentinel myid 4bb87fdc9adb28a64463d734ef7afee092fad9bb # sentinel author-pass定义服务的密码,mymaster是服务名称,123456是Redis服务器密码 # sentinel auth-pass <master-name> <password> sentinel monitor mymaster 127.0.0.1 6380 2 sentinel down-after-milliseconds mymaster 7000 # Generated by CONFIG REWRITE sentinel failover-timeout mymaster 15000 sentinel auth-pass mymaster root123456abc sentinel known-slave mymaster 127.0.0.1 6379 sentinel known-slave mymaster 127.0.0.1 6370daemonize yes #守护进程
=======================================================================================
配置好后。如果启动。关掉其中主服务。有的不会自动切换。在redis.conf和sentinel.con 修改bind 0.0.0.0 和protected-mode no
spring:
redis: host: localhost # Redis服务器地址 database: 0 # Redis数据库索引(默认为0) port: 6379 # Redis服务器连接端口 password: root123456abc # Redis服务器连接密码(默认为空) jedis: pool: max-active: 8 # 连接池最大连接数(使用负值表示没有限制) max-wait: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制) max-idle: 8 # 连接池中的最大空闲连接 min-idle: 0 # 连接池中的最小空闲连接 timeout: 10000 sentinel: master: mymaster nodes: localhost:26379,localhost:26380,localhost:26370
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.cache.annotation.CachingConfigurerSupport;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.connection.RedisConnectionFactory;import org.springframework.data.redis.connection.RedisNode;import org.springframework.data.redis.connection.RedisSentinelConfiguration;import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.core.StringRedisTemplate;import org.springframework.data.redis.serializer.StringRedisSerializer;import redis.clients.jedis.JedisPoolConfig;import java.net.UnknownHostException;@Configurationpublic class RedisSentinelConfig extends CachingConfigurerSupport { @Value("${spring.redis.host}") private String host; @Value("${spring.redis.port}") private int port; @Value("${spring.redis.timeout}") private int timeout; @Value("${spring.redis.database}") private int database; @Value("${spring.redis.password}") private String password; @Value("${spring.redis.sentinel.nodes}") private String redisNodes; @Value("${spring.redis.sentinel.master}") private String master; //redis哨兵配置 @Bean public RedisSentinelConfiguration redisSentinelConfiguration(){ RedisSentinelConfiguration configuration = new RedisSentinelConfiguration(); String[] host = redisNodes.split(","); for(String redisHost : host){ String[] item = redisHost.split(":"); String ip = item[0]; String port = item[1]; configuration.addSentinel(new RedisNode(ip, Integer.parseInt(port))); } configuration.setMaster(master); configuration.setPassword("root123456abc"); return configuration; } @Bean @ConfigurationProperties(prefix = "redis.jedis") public JedisPoolConfig jedisPoolConfig1(){ JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setTestOnBorrow(true); return jedisPoolConfig; } //连接redis的工厂类 @Autowired private JedisPoolConfig jedisPoolConfig; @Autowired private RedisSentinelConfiguration redisSentinelConfiguration; @Bean public JedisConnectionFactory jedisConnectionFactory() { JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(redisSentinelConfiguration, jedisPoolConfig); return jedisConnectionFactory; } //配置RedisTemplate,设置添加序列化器,key 使用string序列化器,value 使用Json序列化器,还有一种简答的设置方式,改变defaultSerializer对象的实现。 @Autowired private JedisConnectionFactory jedisConnectionFactory; @Bean public RedisTemplate
这样就大功告成了。实现了高可用。
转载地址:http://elvbi.baihongyu.com/