SpringBoot centro proveedor real de electricidad elemento (30k + estrella) Dirección: github.com/macrozheng / ...
resumen
Con el fin de aumentar la capacidad de almacenamiento y velocidad de respuesta Redis, a veces tenemos que construir cúmulo Redis. Este documento describe los pasos para construir entorno de clúster Redis y la forma de integrar el uso de SpringBoot agrupación en Redis.
Configuración Redis Cluster
Aquí se utiliza la forma más conveniente de instalar, utilizar acoplable Componer para construir sobre los amigos del estibador de redacción no entienden puede hacer referencia a la "Uso de la aplicación del estibador Componer implementar SpringBoot" . Vamos a construir un 6-nodo de clúster Redis, incluyendo tres nodo maestro y tres nodos esclavos.
-
Antes del racimo del edificio Redis, tenemos que modificar el archivo de configuración, en Redis
redis.conf
, descargue el archivo: github.com/antirez/red ... -
Necesidad de modificar las propiedades, modificado principalmente algunos configuración de clúster y el funcionamiento del puerto, el número de puerto necesita ser modificado para exigir 6.391 hasta 6396:
# 开启集群功能
cluster-enabled yes
# 设置运行端口
port 6391
# 设置节点超时时间,单位毫秒
cluster-node-timeout 15000
# 集群内部配置文件
cluster-config-file "nodes-6391.conf"
复制代码
- A continuación, tenemos que escribir un archivo de diseño de ventana acoplable-compose.yml Redis seis contenedores, el papel de los atributos específicos se puede referir a la siguiente notación;
version: "3"
services:
redis-master1:
image: redis:5.0 # 基础镜像
container_name: redis-master1 # 容器名称
working_dir: /config # 切换工作目录
environment: # 环境变量
- PORT=6391 # 会使用config/nodes-${PORT}.conf这个配置文件
ports: # 映射端口,对外提供服务
- 6391:6391 # redis的服务端口
- 16391:16391 # redis集群监控端口
stdin_open: true # 标准输入打开
tty: true # 后台运行不退出
network_mode: host # 使用host模式
privileged: true # 拥有容器内命令执行的权限
volumes:
- /mydata/redis-cluster/config:/config #配置文件目录映射到宿主机
entrypoint: # 设置服务默认的启动程序
- /bin/bash
- redis.sh
redis-master2:
image: redis:5.0
working_dir: /config
container_name: redis-master2
environment:
- PORT=6392
ports:
- 6392:6392
- 16392:16392
stdin_open: true
network_mode: host
tty: true
privileged: true
volumes:
- /mydata/redis-cluster/config:/config
entrypoint:
- /bin/bash
- redis.sh
redis-master3:
image: redis:5.0
container_name: redis-master3
working_dir: /config
environment:
- PORT=6393
ports:
- 6393:6393
- 16393:16393
stdin_open: true
network_mode: host
tty: true
privileged: true
volumes:
- /mydata/redis-cluster/config:/config
entrypoint:
- /bin/bash
- redis.sh
redis-slave1:
image: redis:5.0
container_name: redis-slave1
working_dir: /config
environment:
- PORT=6394
ports:
- 6394:6394
- 16394:16394
stdin_open: true
network_mode: host
tty: true
privileged: true
volumes:
- /mydata/redis-cluster/config:/config
entrypoint:
- /bin/bash
- redis.sh
redis-slave2:
image: redis:5.0
working_dir: /config
container_name: redis-slave2
environment:
- PORT=6395
ports:
- 6395:6395
- 16395:16395
stdin_open: true
network_mode: host
tty: true
privileged: true
volumes:
- /mydata/redis-cluster/config:/config
entrypoint:
- /bin/bash
- redis.sh
redis-slave3:
image: redis:5.0
container_name: redis-slave3
working_dir: /config
environment:
- PORT=6396
ports:
- 6396:6396
- 16396:16396
stdin_open: true
network_mode: host
tty: true
privileged: true
volumes:
- /mydata/redis-cluster/config:/config
entrypoint:
- /bin/bash
- redis.sh
复制代码
-
Podemos ver en los archivos ventana acoplable-compose.yml, corremos en cada contenedor Redis 6391 ~ 6396 seis puertos en el recipiente
/config
se asigna al directorio de configuración de host del/mydata/redis-cluster/config
directorio, y también a laredis.sh
escritura como el contenedor el script de inicio; -
redis.sh
variable de entorno entorno basado en la acción scriptPORT
atributos para especificar el perfil de empezar contenedor Redis;
redis-server /config/nodes-${PORT}.conf
复制代码
- A continuación necesitamos fichero de configuración Redis y
redis.sh
cargado en el servidor Linux/mydata/redis-cluster/config
directorio;
- A continuación, nuestros docker-compose.yml subir archivos al servidor de comandos de Linux y el uso de composición del cargador de muelle para iniciar todos los contenedores;
docker-compose up -d
复制代码
- Durante el inicio salidas de la siguiente información;
- En el que un momento de entrar en el recipiente Redis, Redis inicializa racimos;
# 进入Redis容器
docker exec -it redis-master1 /bin/bash
# 初始化Redis集群命令
redis-cli --cluster create \
192.168.6.139:6391 192.168.6.139:6392 192.168.6.139:6393 \
192.168.6.139:6394 192.168.6.139:6395 192.168.6.139:6396 \
--cluster-replicas 1
复制代码
- Crear el proceso de configuración de clúster le permitirá confirmar, introduzca la
yes
confirman;
- Redis cúmulo emite la siguiente información se crea correctamente;
- Una vez creado, podemos utilizar el
redis-cli
comando para conectarse a uno de los servicios Redis;
# 单机模式启动
redis-cli -h 127.0.0.1 -p 6391
# 集群模式启动
redis-cli -c -h 127.0.0.1 -p 6391
复制代码
- Después de pasar a través de
cluster nodes
vista puede comando información del nodo, que se encuentra en línea con las expectativas de la original 3 principal 3.
SpringBoot uso del clúster Redis
Somos mejores prácticas "Primavera de datos Redis! " Se describe cómo utilizar Redis en SpringBoot, el uso de un único nodo de servicio Redis, la próxima vez que hablemos sobre cómo utilizar el servicio de Cluster Redis.
- Transformamos sobre la base del código original, modificar application.yml archivo de configuración, añadimos configuración de clúster Redis;
spring:
redis:
# host: 192.168.6.139 # Redis服务器地址
# database: 0 # Redis数据库索引(默认为0)
# port: 6379 # Redis服务器连接端口
password: # Redis服务器连接密码(默认为空)
timeout: 3000ms # 连接超时时间
lettuce:
pool:
max-active: 8 # 连接池最大连接数
max-idle: 8 # 连接池最大空闲连接数
min-idle: 0 # 连接池最小空闲连接数
max-wait: -1ms # 连接池最大阻塞等待时间,负值表示没有限制
cluster:
nodes:
- 192.168.6.139:6391
- 192.168.6.139:6392
- 192.168.6.139:6393
- 192.168.6.139:6394
- 192.168.6.139:6395
- 192.168.6.139:6396
复制代码
-
En este punto llamamos para obtener detalles de la marca interfaz de nuevo, pondrá el mensaje de marca a la caché Redis en el clúster de ir;
-
Desde contenedor Redis
redis-master1
yredis-slave2
mutua maestro-esclavo, por lo que hay cachés de los mismos datos de la información de marca.
dirección del perfil
Proyecto Dirección de origen
sin pública
centro proyectar un tutorial completo serializado en número de la preocupación del público por primera vez de obtener.