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.