Redis clúster de clústeres con el cargador de muelle integrado 2

Configure Cluster Cluster Redis

Como se usa en el presente documento, REDIS-5.0.5, REDIS instalado en / blando / REDIS directorio, para ser el directorio / redis / datos nuevo / suave.

instalar rubí

wget https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.tar.gz
alquitrán -zxvf rubí 2.6.3.tar.gz
cd rubí-2.6.3 / 
./configure -prefix = / usr / local / rubí
maquillaje
make install
cd / usr / local / ruby /
cp bin / ruby / usr / local / bin /
bin cp / joya / usr / local / bin locales /
rubí --version

Creación de configuración Redis

cd / suaves / Redis

Vine config / bolígrafos-7000.conf

port 7000
protected-mode no
daemonize yes
dir "/soft/redis/data"
dbfilename "dump-7000.rdb"
logfile "log-7000.log"

cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-require-full-coverage no

configuración detallada
sí habilitado para clúster comienzan cúmulo cúmulo
cúmulo-require-de cobertura total sin un nodo no está disponible, el grupo aún en marcha

La creación de otra configuración de 5 piezas

sed 's / 7000/7001 / g' config / redis-7000.conf> config / redis-7001.conf
sed 's / 7000/7002 / g' config / redis-7000.conf> config / redis-7002.conf
sed 's / 7000/7003 / g' config / redis-7000.conf> config / redis-7003.conf
sed 's / 7000/7004 / g' config / redis-7000.conf> config / redis-7004.conf
sed 's / 7000/7005 / g' config / redis-7000.conf> config / redis-7005.conf

Comenzó seis instancias Redis

redis-server config / redis-7000.conf
redis-server config / redis-7001.conf
redis-server config / redis-7002.conf
redis-server config / redis-7003.conf
redis-server config / redis-7004.conf
Redis-config server / Redis-7005.conf

Creación de un clúster, Redis-v5 versión sin más largos usos Redis-trib.rb para crear un clúster, en lugar de utilizar Redis-CLI --cluster (192.168.4.176 es servidor linux ip)

Redis-CLI --cluster crean réplicas --cluster-1 \
192.168.4.176:7000 192.168.4.176:7001 192.168.4.176:7002 192.168.4.176:7003 192.168.4.176:7004 192.168.4.176:7005

proceso de creación requiere que se introduzca una confirmación sí

Abrir un cliente

redis-CLI -p 7000

Ver cúmulo estado de
información de clúster

Vista desde el nodo de clúster primaria, la asignación de ranura de
nodos de clúster

De hecho, el nuevo grupo de clúster no es el foco de este artículo, hay muchos tutoriales en línea, este racimo racimos y arranque de primavera 2 La integración es el foco de este artículo.

la primavera de arranque integrado 2 cúmulo Redis

configuración pom.xml

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.6.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

其他配置省略不写了
<dependencies>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- cluster集群模式必须使用jedis 2.X,不然无法做到故障迁移 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
        <exclusions>
            <exclusion>
                <groupId>io.lettuce</groupId>
                <artifactId>lettuce-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>2.10.2</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
</dependencies>

de arranque por defecto de primavera 2 como la lechuga núcleos ReDiS el cliente. Empecé a usar conector lechuga-core Redis, cuando mato de un nodo maestro (nodo 7000), Redis desde el servidor para completar la conmutación por error interruptor principal. resorte de arranque 2, pero aún de conexión 7000 nodos, lo que resulta en el otoño de 7000 solicitudes de franjas horarias clave de nodo han sido un error. Se estima que el cliente lechuga núcleos no vuelva a establecer la caché de agrupación de conexiones, por lo que el cliente no puede hacer la conmutación por error. Luego cambiar a la versión 2.x jedis, proyecto de arranque muelle 2 fue hecho de conmutación por error, no se conectan los nodos 7000. Nota jedis 3.X versiones causa resorte de arranque 2 no se puede iniciar.

Configuración application.properties

spring.redis.timeout=2000
spring.redis.jedis.pool.max-active=8
spring.redis.jedis.pool.max-idle=8
spring.redis.jedis.pool.min-idle=0
spring.redis.jedis.pool.max-wait=1000

spring.redis.cluster.nodes=192.168.4.176:7000, 192.168.4.176:7001, 192.168.4.176:7002, 192.168.4.176:7003, 192.168.4.176:7004, 192.168.4.176:7005
# 重定向次数
spring.redis.cluster.max-redirects=5

Donde hay un padre cielo muy, escrito después de application.properties de configuración, sólo es capaz de conectarse al clúster, el cliente no puede hacer la conmutación por error, también tienen que escribir manualmente una clase de configuración JedisConnectionFactory, a continuación, JedisConnectionFactory conjunto de RedisTemplate configuración de fábrica el siguiente es el código.

@Configuration
public class RedisConfigJedis {

    @Value("${spring.redis.timeout}")
    private Integer redisTimeout;
    @Value("${spring.redis.jedis.pool.max-active}")
    private Integer poolMaxActive;
    @Value("${spring.redis.jedis.pool.max-idle}")
    private Integer poolMaxIdle;
    @Value("${spring.redis.jedis.pool.min-idle}")
    private Integer poolMinIdle;
    @Value("${spring.redis.jedis.pool.max-wait}")
    private Integer poolMaxWait;
    @Value("${spring.redis.cluster.nodes}")
    private List<String> clusterNodes;
    @Value("${spring.redis.cluster.max-redirects}")
    private Integer clusterMaxRedirects;

    @Bean
    public RedisConnectionFactory redisConnectionFactory() {
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        poolConfig.setMaxTotal(poolMaxActive);
        poolConfig.setMaxIdle(poolMaxIdle);
        poolConfig.setMinIdle(poolMinIdle);
        poolConfig.setMaxWaitMillis(poolMaxWait);
        JedisClientConfiguration clientConfig = JedisClientConfiguration.builder()
                .usePooling().poolConfig(poolConfig).and().readTimeout(Duration.ofMillis(redisTimeout)).build();

        // cluster模式
        RedisClusterConfiguration redisConfig = new RedisClusterConfiguration();
        redisConfig.setMaxRedirects(clusterMaxRedirects);
        for (String ipPort :clusterNodes){
            String[] ipPortArr = ipPort.split(":");
            redisConfig.clusterNode(ipPortArr[0], Integer.parseInt(ipPortArr[1]));
        }

        return new JedisConnectionFactory(redisConfig, clientConfig);
    }

    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate template = new RedisTemplate();
        template.setConnectionFactory(redisConnectionFactory);

        //key使用StringRedisSerializer
        StringRedisSerializer strSerializer = new StringRedisSerializer();
        template.setKeySerializer(strSerializer);
        template.setHashKeySerializer(strSerializer);

        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);

        //value使用Jackson2JsonRedisSerializer
        template.setValueSerializer(jackson2JsonRedisSerializer);
        template.setHashValueSerializer(jackson2JsonRedisSerializer);

        return template;
    }
}

Bajo resumen, cuando Redis matan a un nodo principal del clúster (nodo 7000), el nodo principal de un nodo ascendido a 7003, la línea nodo 7000. Redis clúster de conmutación ningún problema, pero proyecto de arranque de primavera en este momento para limpiar conexión antigua Redis grupo de caché, caché de restablecer la agrupación de conexiones, con el fin de poner 7.000 nodos de agrupación de conexiones que ya no es válida eliminado, ya no está conectado al nodo 7000. de inicio de primavera 2 versiones hacen de conmutación por error, prestar atención a los siguientes puntos.

1, pom.xml jedis versión 2.X dependencias introducidas. jedis versión 3.x no funciona.

2, la configuración Application.properties JedisConnectionFactory de nuevo a la configuración, RedisTemplate JedisConnectionFactory utiliza como la fábrica de conexiones.

Por supuesto, puede estar donde he cometido un error, damos la bienvenida al mensaje de discusión.

A continuación, escribir una prueba de clase Redis llamada ciclo

@RunWith(SpringRunner.class)
@SpringBootTest
public class Test01 {

    @Autowired
    RedisTemplate redisTemplate;

    @Test
    public void test001(){
        while (true){
            try {
                String key = "test:" + new Date().getTime();
                redisTemplate.opsForValue().set(key, new Date().getTime());
                TimeUnit.MILLISECONDS.sleep(100L);
                System.out.println(redisTemplate.opsForValue().get(key));
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
}

Ejecutar la clase de prueba

Abrir una Redis-cli

redis-CLI -p 7002

Ver configuración nodo de clúster

nodos de clúster

7001 es el nodo maestro, el nodo 7005 es de 7,001

Proceso matan el nodo maestro 7001

ps -ef | grep servidor Redis

kill -9 maestro proceso ID

En serán reportados anormal de este proyecto de arranque de primavera, después de un corto período de tiempo, el proyecto está funcionando normalmente.

Ver ReDiS nuevo nodo de clúster

7005 fue ascendido a maestro, 7001 la línea de montaje.

7001 nodo comienza de nuevo, 7001 se convertirá en 7005 desde el nodo.

Cuando 7001,7005 par de nodos maestro y esclavo están fuera de línea debido a la responsabilidad de los nodos finales 5491-10933 ranura están abajo, consiga, la solicitud se ajustará a este lado de la ranura de error.

 

Publicado 51 artículos originales · elogios ganado 14 · Vistas a 40000 +

Supongo que te gusta

Origin blog.csdn.net/u010606397/article/details/94613553
Recomendado
Clasificación