Artículo
Nancy Martínez · Jun 9, 2020 Lectura de 3 min

Configuración manual de Sharding

Para conocer un poco más sobre Sharding decidí crear un conjunto "por mi cuenta".
Para ello, creé 1 Master (Win10) y 2 Shard "slaves" en Ubuntu64.La instalación fue bien y empecé a seguir un curso online, sin tener ningún problema:

> Introducción a Sharding en  InterSystems IRIS
>>> InterSystems: ISC1125 Curso básico de Sharding: Planificación e Implementación
>>>>> 2. Implementación y Uso de Cluster
>>>>>>> IMPLEMENTACIÓN USANDO API

Todo iba bien y según lo descrito.

¡Pero no pude crear una Tabla Shard!
{ I skip all fruitless attempts }

Al realizar un diagnóstico de lo que salió mal:

MASTER>s sc=$SYSTEM.Sharding.ListShards()
Shard   Host            Port    Namespc Mirror  Role    VIP
1       192.168.0.104   51773   SHARD
2       192.168.0.103   51773   SHARD
 
MASTER>zw sc
sc=1

esto aún se ve bien, pero: 

MASTER>s sc=$SYSTEM.Sharding.VerifyShards()
MASTER>do $system.OBJ.DisplayError(sc)
 
ERROR #9355: 2 shards failed verification
ERROR #9354: Shard 1 failed verification
ERROR #5002: ObjectScript error: <SUBSCRIPT>getConnection+28^%SYS.BigData.ECP *() Subscript 1 is ""
ERROR #9354: Shard 2 failed verification
ERROR #5002: ObjectScript error: <SUBSCRIPT>getConnection+28^%SYS.BigData.ECP *() Subscript 1 is ""

primer aprendizaje adicional:

MASTER>s sc=$system.Sharding.SetOption("MASTER","AutoVerify",1)

Ahora la ejecución se verifica directamente después de añadir un Shard.
Esto es muy útil al principio.
Después de que recibí un consejo de @Michael Braam revisé mi red local

Y eso no estaba escrito en ninguna parte (o simplemente no lo encontré):
Los host que se utilizaron y sus hostname deben ser visibles y accesibles desde el MASTER y los servidores Shard.


En lugar de configurar un servidor DNS privado únicamente para este caso, se debe configurar
un archivo hosts file   { on
     Win10 >>>>  C:\Windows\System32\drivers\etc\hosts
    ubuntu >>>> /etc/hosts
    ubuntu >>>> /etc/hostname

}

Ahora se podría añadir Shards con nombres de servidores "reales", lo que podría dar como resultado una configuración que funcione.

MASTER>s sc=$SYSTEM.Sharding.ListShards() zw sc

Shard   Host            Port    Namespc Mirror  Role    VIP
1       ubuntu64c       51773   SHARD
2       ubuntu64d       51773   SHARD
sc=1
MASTER>s sc=$SYSTEM.Sharding.VerifyShards() zw sc
sc=1

Ahora, la creación de Tablas Shard fue así de fácil como se muestra en la formación online.
No investigué si con la configuración del servidor para el Master en Shard sólo habría sido suficiente ya que esto únicamente era una interrupción/más allá de tenerlo para todos los servidores involucrados y ya no sufrir más dolores de cabeza.

00
2 0 0 40
Log in or sign up to continue