Sorprendido, yo era capaz de esta manera de construir Redis segundo racimo?

Autor | faraón

Fuente | comunidad Java china

Anteriormente hablamos de "optimización del rendimiento Redis de los 13 reglamentos militares! " Uno de los

La versión 3.0 es el racimo Racimo Redis Redis Redis programas puestos en marcha, los datos se distribuyen en diferentes áreas de servicio, con el fin de reducir la dependencia de un único sistema, el nodo maestro, y puede mejorar considerablemente el rendimiento de lectura y escritura Redis y servicios.

REDIS todos los datos en 16.384 ranuras (slots), en el que cada nodo es responsable de una parte de la ranura, cuando un grupo Redis conexión de cliente, será una ranura de configuración de cluster, de modo que pueda ser directamente comando de solicitud al nodo de procesamiento correspondiente.

Redis Cluster es el modo sin agente modo descentralizado de la operación, la gran cantidad de comandos enviados por el cliente estará directamente relacionado con el nodo de ejecución, por lo que en la mayoría de los casos no hay necesidad de enviar la orden de petición, sólo para completar la solicitud o remitir el caso a la siguiente en respuesta, el rendimiento sigue siendo único servidor de clúster Redis está muy cerca de un solo nodo, por lo que en teoría, cuando el nodo maestro es equivalente al doble del rendimiento de procesamiento de solicitud de extensión horizontal también se dobla, por lo que es el cúmulo Redis el rendimiento es muy alto.

Redis Cluster Arquitectura figura siguiente:


S construido cúmulo Redis

Hay Redis clústeres para la construcción de dos maneras, una es utilizar la fuente Redis herramienta de creación de cluster proporcionado construir rápidamente entorno de clúster Redis, y la otra forma es crear un archivo de configuración Redis entorno de clúster de forma manual.


1. Rápida estableció Redis Cluster

crear-cluster herramienta en utils / directorio-cluster crear, como se muestra a continuación:

./Create-cluster empezar a utilizar el comando puede crear un clúster rápida Redis, haga lo siguiente:

1$ ./create-cluster start # 创建集群
2Starting 30001
3Starting 30002
4Starting 30003
5Starting 30004
6Starting 30005
7Starting 30006

Lo siguiente que necesitamos para crear más de seis nodos por mandato de creación para formar un clúster, haga lo siguiente:

 1[@iZ2ze0nc5n41zomzyqtksmZ:create-cluster]$ ./create-cluster create # 组建集群
 2>>> Performing hash slots allocation on 6 nodes...
 3Master[0] -> Slots 0 - 5460
 4Master[1] -> Slots 5461 - 10922
 5Master[2] -> Slots 10923 - 16383
 6Adding replica 127.0.0.1:30005 to 127.0.0.1:30001
 7Adding replica 127.0.0.1:30006 to 127.0.0.1:30002
 8Adding replica 127.0.0.1:30004 to 127.0.0.1:30003
 9>>> Trying to optimize slaves allocation for anti-affinity
10[WARNING] Some slaves are in the same host as their master
11M: 445f2a86fe36d397613839d8cc1ae6702c976593 127.0.0.1:30001
12   slots:[0-5460] (5461 slots) master
13M: 63bb14023c0bf58926738cbf857ea304bff8eb50 127.0.0.1:30002
14   slots:[5461-10922] (5462 slots) master
15M: 864d4dfe32e3e0b81a64cec8b393bbd26a65cbcc 127.0.0.1:30003
16   slots:[10923-16383] (5461 slots) master
17S: 64828ab44566fc5ad656e831fd33de87be1387a0 127.0.0.1:30004
18   replicates 445f2a86fe36d397613839d8cc1ae6702c976593
19S: 0b17b00542706343583aa73149ec5ff63419f140 127.0.0.1:30005
20   replicates 63bb14023c0bf58926738cbf857ea304bff8eb50
21S: e35f06ca9b700073472d72001a39ea4dfcb541cd 127.0.0.1:30006
22   replicates 864d4dfe32e3e0b81a64cec8b393bbd26a65cbcc
23Can I set the above configuration? (type 'yes' to accept): yes
24>>> Nodes configuration updated
25>>> Assign a different config epoch to each node
26>>> Sending CLUSTER MEET messages to join the cluster
27Waiting for the cluster to join
28.
29>>> Performing Cluster Check (using node 127.0.0.1:30001)
30M: 445f2a86fe36d397613839d8cc1ae6702c976593 127.0.0.1:30001
31   slots:[0-5460] (5461 slots) master
32   1 additional replica(s)
33M: 864d4dfe32e3e0b81a64cec8b393bbd26a65cbcc 127.0.0.1:30003
34   slots:[10923-16383] (5461 slots) master
35   1 additional replica(s)
36S: e35f06ca9b700073472d72001a39ea4dfcb541cd 127.0.0.1:30006
37   slots: (0 slots) slave
38   replicates 864d4dfe32e3e0b81a64cec8b393bbd26a65cbcc
39S: 0b17b00542706343583aa73149ec5ff63419f140 127.0.0.1:30005
40   slots: (0 slots) slave
41   replicates 63bb14023c0bf58926738cbf857ea304bff8eb50
42M: 63bb14023c0bf58926738cbf857ea304bff8eb50 127.0.0.1:30002
43   slots:[5461-10922] (5462 slots) master
44   1 additional replica(s)
45S: 64828ab44566fc5ad656e831fd33de87be1387a0 127.0.0.1:30004
46   slots: (0 slots) slave
47   replicates 445f2a86fe36d397613839d8cc1ae6702c976593
48[OK] All nodes agree about slots configuration.
49>>> Check for open slots...
50>>> Check slots coverage...
51[OK] All 16384 slots covered.



En el proceso de aplicación le preguntará por 30001,30002,30003 como un nodo maestro, el 30004,30005,30006 como su nodo esclavo, entre Yes realiza completa.

En primer lugar, podemos utilizar Redis-CLI para conectarse a un clúster, el comando es la siguiente:



1$ redis-cli -c -p 30001



En la información del nodo utilizando el comando para ver los nodos de clúster, el comando es el siguiente:



1127.0.0.1:30001> cluster nodes
2864d4dfe32e3e0b81a64cec8b393bbd26a65cbcc 127.0.0.1:30003@40003 master - 0 1585125835078 3 connected 10923-16383
3e35f06ca9b700073472d72001a39ea4dfcb541cd 127.0.0.1:30006@40006 slave 864d4dfe32e3e0b81a64cec8b393bbd26a65cbcc 0 1585125835078 6 connected
40b17b00542706343583aa73149ec5ff63419f140 127.0.0.1:30005@40005 slave 63bb14023c0bf58926738cbf857ea304bff8eb50 0 1585125835078 5 connected
563bb14023c0bf58926738cbf857ea304bff8eb50 127.0.0.1:30002@40002 master - 0 1585125834175 2 connected 5461-10922
6445f2a86fe36d397613839d8cc1ae6702c976593 127.0.0.1:30001@40001 myself,master - 0 1585125835000 1 connected 0-5460
764828ab44566fc5ad656e831fd33de87be1387a0 127.0.0.1:30004@40004 slave 445f2a86fe36d397613839d8cc1ae6702c976593 0 1585125835000 4 connected



可以看出 30001、30002、30003 都为主节点,30001 对应的槽位是 0-5460,30002 对应的槽位是 5461-10922,30003 对应的槽位是 10923-16383,总共有槽位 16384 个 (0 ~ 16383)。

30002 correspondiente ranura correspondiente a la ranura es 5461-10922,30003 10923 a 16383, es decir, un total de 16.384 ranuras (de 0 a 16.383).

crear-cluster enfoque, aunque construido rápidamente, pero el modo principal del clúster construir a partir de un número fijo de nodos y un patrón de asignación de intervalos es fijo, y se montan en el mismo servidor, que se utiliza sólo para un entorno de prueba.

Después de la prueba se ha completado, se puede utilizar el siguiente comando para cerrar y limpiar el clúster:



1$ ./create-cluster stop # 关闭集群
2Stopping 30001
3Stopping 30002
4Stopping 30003
5Stopping 30004
6Stopping 30005
7Stopping 30006
8$ ./create-cluster clean # 清理集群



2. Manualmente configurar Redis Cluster

Debido a las restricciones Create-propio clúster, en el entorno de producción real, tenemos que añadir manualmente manera Redis para construir una configuración de clúster, para lo cual primero ponemos Redis copiar los archivos de instalación en el nodo 1 al paquete Nodo6, porque queremos instalar seis nodos, 3 desde el maestro 3, como se muestra a continuación:

A continuación configurar e iniciar el cluster Redis.


① configurar un perfil

Redis.conf tenemos que modificar los archivos dentro de cada nodo, establecer el cúmulo sí habilitado para clúster representa el modo de apertura, y modificar sus respectivos puertos, seguimos utilizando Dao 30001 30006, 3000X conjunto por el puerto.

② para comenzar cada nodo

Después de configurar redis.conf, podemos empezar a todos los nodos, el comando es el siguiente:



1cd /usr/local/soft/mycluster/node1
2./src/redis-server redis.conf



③ crear un clúster y asignar ranuras

Hemos puesto en marcha previamente seis nodos, pero estos no están interconectados los nodos dentro de sus grupos de, por lo que entonces tenemos que conectar estos nodos a un clúster y especificar la ranura correspondiente para ellos, ejecute el siguiente comando :



1redis-cli --cluster create 127.0.0.1:30001 127.0.0.1:30002 127.0.0.1:30003 127.0.0.1:30004 127.0.0.1:30005 127.0.0.1:30006 --cluster-replicas 1



Donde la pluralidad de nodos con más tarde Crear, estos nodos como un nodo representa todo el clúster, el clúster-réplicas representan un nodo maestro designado en el cluster a partir del número de nodos, cada uno representado como un nodo maestro de un conjunto de nodos.

Después de ejecutar el comando CREATE, el sistema asignará las funciones y los hitos del cronograma de asignación de turnos para nosotros, de la siguiente manera:



 1>>> Performing hash slots allocation on 6 nodes...
 2Master[0] -> Slots 0 - 5460
 3Master[1] -> Slots 5461 - 10922
 4Master[2] -> Slots 10923 - 16383
 5Adding replica 127.0.0.1:30005 to 127.0.0.1:30001
 6Adding replica 127.0.0.1:30006 to 127.0.0.1:30002
 7Adding replica 127.0.0.1:30004 to 127.0.0.1:30003
 8>>> Trying to optimize slaves allocation for anti-affinity
 9[WARNING] Some slaves are in the same host as their master
10M: bdd1c913f87eacbdfeabc71befd0d06c913c891c 127.0.0.1:30001
11   slots:[0-5460] (5461 slots) master
12M: bdd1c913f87eacbdfeabc71befd0d06c913c891c 127.0.0.1:30002
13   slots:[5461-10922] (5462 slots) master
14M: bdd1c913f87eacbdfeabc71befd0d06c913c891c 127.0.0.1:30003
15   slots:[10923-16383] (5461 slots) master
16S: bdd1c913f87eacbdfeabc71befd0d06c913c891c 127.0.0.1:30004
17   replicates bdd1c913f87eacbdfeabc71befd0d06c913c891c
18S: bdd1c913f87eacbdfeabc71befd0d06c913c891c 127.0.0.1:30005
19   replicates bdd1c913f87eacbdfeabc71befd0d06c913c891c
20S: bdd1c913f87eacbdfeabc71befd0d06c913c891c 127.0.0.1:30006
21   replicates bdd1c913f87eacbdfeabc71befd0d06c913c891c
22Can I set the above configuration? (type 'yes' to accept):



Como puede verse a partir de la información anterior, la Redis 30001,30002,30003 tiene la intención de establecer el nodo maestro, y la ranura se asigna a ellos, la ranura correspondiente es 0-5460,30002 30001 correspondiente a la ranura correspondiente es 5461-10922,30003 ranura es 10.923 a 16.383, 30.005 y 30.001 se proporciona desde el nodo, 30006 a 30002 del nodo, el nodo se establece en 30.004, sólo tenemos que confirmar la entrada y realiza la asignación de sí 30003, de la siguiente manera:

 1Can I set the above configuration? (type 'yes' to accept): yes
 2>>> Nodes configuration updated
 3>>> Assign a different config epoch to each node
 4>>> Sending CLUSTER MEET messages to join the cluster
 5Waiting for the cluster to join
 6....
 7>>> Performing Cluster Check (using node 127.0.0.1:30001)
 8M: 887397e6fefe8ad19ea7569e99f5eb8a803e3785 127.0.0.1:30001
 9   slots:[0-5460] (5461 slots) master
10   1 additional replica(s)
11S: abec9f98f9c01208ba77346959bc35e8e274b6a3 127.0.0.1:30005
12   slots: (0 slots) slave
13   replicates 887397e6fefe8ad19ea7569e99f5eb8a803e3785
14S: 1a324d828430f61be6eaca7eb2a90728dd5049de 127.0.0.1:30004
15   slots: (0 slots) slave
16   replicates f5958382af41d4e1f5b0217c1413fe19f390b55f
17S: dc0702625743c48c75ea935c87813c4060547cef 127.0.0.1:30006
18   slots: (0 slots) slave
19   replicates 3da35c40c43b457a113b539259f17e7ed616d13d
20M: 3da35c40c43b457a113b539259f17e7ed616d13d 127.0.0.1:30002
21   slots:[5461-10922] (5462 slots) master
22   1 additional replica(s)
23M: f5958382af41d4e1f5b0217c1413fe19f390b55f 127.0.0.1:30003
24   slots:[10923-16383] (5461 slots) master
25   1 additional replica(s)
26[OK] All nodes agree about slots configuration.
27>>> Check for open slots...
28>>> Check slots coverage...
29[OK] All 16384 slots covered.



Aceptar pantalla representa todo el clúster se ha lanzado con éxito.

A continuación, utilizar Redis-CLI para conectar y comprobar el estado de funcionamiento de la agrupación, de la siguiente manera:



 1$ redis-cli -c -p 30001 # 连接到集群
 2127.0.0.1:30001> cluster info # 查看集群信息
 3cluster_state:ok # 状态正常
 4cluster_slots_assigned:16384 # 槽位数
 5cluster_slots_ok:16384 # 正常的槽位数
 6cluster_slots_pfail:0
 7cluster_slots_fail:0
 8cluster_known_nodes:6 # 集群的节点数
 9cluster_size:3 # 集群主节点数
10cluster_current_epoch:6
11cluster_my_epoch:1
12cluster_stats_messages_ping_sent:130
13cluster_stats_messages_pong_sent:127
14cluster_stats_messages_sent:257
15cluster_stats_messages_ping_received:122
16cluster_stats_messages_pong_received:130
17cluster_stats_messages_meet_received:5
18cluster_stats_messages_received:257



Descripción de los campos relacionados se han identificado en el código anterior, y no lo repita aquí.


adiciones de nodos dinámicos y deleciones

En algunos casos, se necesita en función de la situación real del negocio, el grupo ya se está ejecutando dinámicamente agregar o nodos de borrado, entonces tenemos que hacer lo siguiente.


1. Aumentar el nodo maestro

Añadir una manera: la agrupación se reúnen

El uso del clúster se encuentran ip: comando de puerto puede ser añadido a un nodo de clúster, ejecute el siguiente comando:



 1127.0.0.1:30001> cluster meet 127.0.0.1 30007
 2OK
 3127.0.0.1:30001> cluster nodes
 4dc0702625743c48c75ea935c87813c4060547cef 127.0.0.1:30006@40006 slave 3da35c40c43b457a113b539259f17e7ed616d13d 0 1585142916000 6 connected
 5df0190853a53d8e078205d0e2fa56046f20362a7 127.0.0.1:30007@40007 master - 0 1585142917740 0 connected
 6f5958382af41d4e1f5b0217c1413fe19f390b55f 127.0.0.1:30003@40003 master - 0 1585142916738 3 connected 10923-16383
 73da35c40c43b457a113b539259f17e7ed616d13d 127.0.0.1:30002@40002 master - 0 1585142913000 2 connected 5461-10922
 8abec9f98f9c01208ba77346959bc35e8e274b6a3 127.0.0.1:30005@40005 slave 887397e6fefe8ad19ea7569e99f5eb8a803e3785 0 1585142917000 5 connected
 9887397e6fefe8ad19ea7569e99f5eb8a803e3785 127.0.0.1:30001@40001 myself,master - 0 1585142915000 1 connected 0-5460
101a324d828430f61be6eaca7eb2a90728dd5049de 127.0.0.1:30004@40004 slave f5958382af41d4e1f5b0217c1413fe19f390b55f 0 1585142916000 4 connected



Puede verse puerto 30007 y se añade a los nodos de la agrupación, y se ha convertido en el nodo maestro se proporciona.


Añadir Segunda forma: complemento nodo

Uso Redis-cli --cluster complemento nodo de añadir un nodo IP: puerto de un nodo de clúster ip: puerto también se puede añadir un nodo al clúster, ejecute el siguiente comando:

 1$ redis-cli --cluster add-node 127.0.0.1:30008 127.0.0.1:30001
 2>>> Adding node 127.0.0.1:30008 to cluster 127.0.0.1:30001
 3>>> Performing Cluster Check (using node 127.0.0.1:30001)
 4M: 887397e6fefe8ad19ea7569e99f5eb8a803e3785 127.0.0.1:30001
 5   slots:[0-5460] (5461 slots) master
 6   1 additional replica(s)
 7S: dc0702625743c48c75ea935c87813c4060547cef 127.0.0.1:30006
 8   slots: (0 slots) slave
 9   replicates 3da35c40c43b457a113b539259f17e7ed616d13d
10M: df0190853a53d8e078205d0e2fa56046f20362a7 127.0.0.1:30007
11   slots: (0 slots) master
12M: f5958382af41d4e1f5b0217c1413fe19f390b55f 127.0.0.1:30003
13   slots:[10923-16383] (5461 slots) master
14   1 additional replica(s)
15M: 1d09d26fd755298709efe60278457eaa09cefc26 127.0.0.1:30008
16   slots: (0 slots) master
17M: 3da35c40c43b457a113b539259f17e7ed616d13d 127.0.0.1:30002
18   slots:[5461-10922] (5462 slots) master
19   1 additional replica(s)
20S: abec9f98f9c01208ba77346959bc35e8e274b6a3 127.0.0.1:30005
21   slots: (0 slots) slave
22   replicates 887397e6fefe8ad19ea7569e99f5eb8a803e3785
23S: 1a324d828430f61be6eaca7eb2a90728dd5049de 127.0.0.1:30004
24   slots: (0 slots) slave
25   replicates f5958382af41d4e1f5b0217c1413fe19f390b55f
26[OK] All nodes agree about slots configuration.
27>>> Check for open slots...
28>>> Check slots coverage...
29[OK] All 16384 slots covered.
30[ERR] Node 127.0.0.1:30008 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.



30008 Como puede verse por los resultados anteriores también han establecido al nodo nodo maestro.


2. Añadir el nodo

Uso grupo de mando de duplicados NODEID se puede establecer como el nodo actual al nodo objetivo desde el nodo, ejecute el comando siguiente:

 1127.0.0.1:30008> cluster replicate df0190853a53d8e078205d0e2fa56046f20362a7
 2OK
 3127.0.0.1:30008> cluster nodes
 4df0190853a53d8e078205d0e2fa56046f20362a7 127.0.0.1:30007@40007 master - 0 1585147827000 0 connected
 5abec9f98f9c01208ba77346959bc35e8e274b6a3 127.0.0.1:30005@40005 slave 887397e6fefe8ad19ea7569e99f5eb8a803e3785 0 1585147827000 1 connected
 61a324d828430f61be6eaca7eb2a90728dd5049de 127.0.0.1:30004@40004 slave f5958382af41d4e1f5b0217c1413fe19f390b55f 0 1585147823000 3 connected
 7887397e6fefe8ad19ea7569e99f5eb8a803e3785 127.0.0.1:30001@40001 master - 0 1585147826000 1 connected 0-5460
 8dc0702625743c48c75ea935c87813c4060547cef 127.0.0.1:30006@40006 slave 3da35c40c43b457a113b539259f17e7ed616d13d 0 1585147826930 2 connected
 9f5958382af41d4e1f5b0217c1413fe19f390b55f 127.0.0.1:30003@40003 master - 0 1585147826000 3 connected 10923-16383
101d09d26fd755298709efe60278457eaa09cefc26 127.0.0.1:30008@40008 myself,slave df0190853a53d8e078205d0e2fa56046f20362a7 0 1585147823000 7 connected
113da35c40c43b457a113b539259f17e7ed616d13d 127.0.0.1:30002@40002 master - 0 1585147827933 2 connected 5461-10922



Se puede observar que se ha pasado de 30008 a 30007 del nodo.


3. Eliminar nodo

El uso de racimo se olvide de comandos NODEID puede eliminar un nodo de clúster. Esta orden es una orden y se reúnen de tiempo diferente, los nodos de borrado necesitan utilizar nodos Id fueron retirados, se puede pedir a través de los nodos del clúster para ver información de identificación para todos los nodos, donde la combinación de 40 cartas y el frente de cada fila de la matriz es el nodo Id, como se muestra a continuación:

Ejecute el siguiente comando:



1127.0.0.1:30001> cluster forget df0190853a53d8e078205d0e2fa56046f20362a7
2OK



En este caso utilizamos los nodos del clúster del sistema para ver la información en todos los nodos del clúster:



1127.0.0.1:30001> cluster nodes
2dc0702625743c48c75ea935c87813c4060547cef 127.0.0.1:30006@40006 slave 3da35c40c43b457a113b539259f17e7ed616d13d 0 1585143789940 6 connected
3f5958382af41d4e1f5b0217c1413fe19f390b55f 127.0.0.1:30003@40003 master - 0 1585143791000 3 connected 10923-16383
43da35c40c43b457a113b539259f17e7ed616d13d 127.0.0.1:30002@40002 master - 0 1585143789000 2 connected 5461-10922
5abec9f98f9c01208ba77346959bc35e8e274b6a3 127.0.0.1:30005@40005 slave 887397e6fefe8ad19ea7569e99f5eb8a803e3785 0 1585143789000 5 connected
6887397e6fefe8ad19ea7569e99f5eb8a803e3785 127.0.0.1:30001@40001 myself,master - 0 1585143786000 1 connected 0-5460
71a324d828430f61be6eaca7eb2a90728dd5049de 127.0.0.1:30004@40004 slave f5958382af41d4e1f5b0217c1413fe19f390b55f 0 1585143791945 4 connected



Antes de que el puerto puede ser visto como 30007 nodos se han eliminado para nuestro éxito.


resumen

En este artículo se habla grupo conjunto Redis dos maneras: crear-cluster de inicio y crear clúster, el primer enfoque, mientras más rápido, pero sólo puede crear un número fijo de nodos maestro y esclavo, y todos los nodos en el mismo servidor, que sólo se puede utilizar para entornos de prueba. También hablamos de Redis principal del clúster agregar de forma dinámica, y los nodos de eliminación de cualquier función de nodo.

Espero que esta ayuda que, con las manos arriba que ~

【Fin】

prevención de epidemias, la forma de volver a trabajar en paralelo? Tianyun lanzó artificial programa de monitoreo de datos de inteligencia! Al final de cómo hacer avanzar la prevención, en lugar de después de los hechos? 20:00 Jueves , el día de la nube de datos VP Yong para revelar la respuesta! Escaneado del siguiente Fanger Wei inscripción gratuita código de ~

lectura recomendada 

respuesta Ali "para luchar contra una gran cantidad de la cuenta personal de Taobao estaba cerrada"; carta micro enfrentan conjuntamente nuevo virus corona libro de hackers Maratón; Kubernetes 1,18 liberación | Geeks titulares

Siri automáticamente diales 911, Google construyó sitio de detección, los medicamentos de prueba de IBM, la lucha internacional contra el SARS en acción!

La vida es corta, no sólo a usar Python, sino también en su uso en VSCode

estudiantes de la escuela secundaria rural contraatacar mente: certificados de tamaño natural, recibida fabricantes Ali, Tencent, gotas invitados entrevistas

aplicaciones ¿Por qué la IO en la industria del petróleo y el gas? Los ocho escenarios de la IO puede decirle qué hacer en la industria del petróleo y el gas

contrato de propiedad digital de cómo la descentralización? Cómo utilizar el sistema de scripting para convertir contratación de la operación inteligente programable? Las mentiras de respuesta en este artículo!

Nos fijamos en cada punto, en serio como favorito

Haga clic para leer el texto original, inscribirse para participar

Liberadas 1883 artículos originales · ganado elogios 40000 + · Vistas 17,120,000 +

Supongo que te gusta

Origin blog.csdn.net/csdnnews/article/details/105132349
Recomendado
Clasificación