Saltar al contenido principal

CLI del nodo

En un nodo de vStack OS, el administrador necesita dos utilidades:

  • la utilidad del clúster vstack-cluster muestra los nodos y los servicios del clúster, habilita y deshabilita nodos, e inicia, detiene y conmuta pools;
  • el script de actualización vStack.update.sh actualiza los paquetes, el sistema base y el kernel del nodo.

Ambas se ejecutan como root en el propio nodo. Las máquinas virtuales, las redes y los VDC los gestiona vStack Center; su interfaz y su API se describen en la documentación de Center.

Utilidad del clúster​

vstack-cluster es el cliente de Cluster Manager (demonio ccrd). Llega al nodo con el paquete vStack-ccrd y se encuentra en /usr/local/bin. La utilidad no tiene estado propio: cada comando se envía a ccrd, y la utilidad muestra su respuesta. Puede ejecutarse en cualquier nodo del clúster.

Formato de invocación:

vstack-cluster <COMMAND> [<ACTION>] {OPTIONS}

El nodo se indica por su número (--id, --dst-id) y el servicio, por su nombre (-s, --service-name). La utilidad no acepta el nombre del nodo en lugar del número. El número de nodo está en el rango 1–63.

Nodos y servicios​

  • Nodo: servidor del clúster. Tiene un número (Node ID) y un nombre con la forma q100u001.<dominio>.
  • Servicio: lo que Cluster Manager coloca en uno de los nodos. Cada pool de almacenamiento zNN está representado por el servicio zpool_zNN. El servicio cluster-management pertenece al propio Cluster Manager: no se inicia, detiene ni conmuta manualmente.

El nodo y el servicio tienen cada uno dos atributos independientes:

AtributoValoresSignificado
statenodo: ONLINE, OFFLINE; servicio: STARTED, STOPPED, STOPPING y otrosestado real en ese momento
[enabled] / [disabled]—si se permite colocar servicios en el nodo; si el servicio participa en la colocación automática y en la conmutación por fallo

Comandos​

ComandoQué hace
statusnodos y servicios que se ejecutan en ellos
node listnúmeros de los nodos
node statusestado de todos los nodos
node disable --id=Ncerrar el nodo a la colocación de servicios
node enable --id=Nvolver a abrir el nodo
service listnombres de los servicios
service statusestado de todos los servicios y nodos en los que se ejecutan
service start -s <servicio> --id=Niniciar el servicio en el nodo N
service stop -s <servicio>detener el servicio
service move -s <servicio> --dst-id=Nconmutar el servicio al nodo N
service enable -s <servicio>devolver el servicio a la colocación automática
service disable -s <servicio>excluir el servicio de la colocación automática
ha disk statusestado de las reservas SCSI/NVMe en los discos del grupo de fencing de HA

El comando node exit retira el nodo del clúster. No se puede deshacer, por lo que no se describe aquí: ejecútelo solo junto con el soporte técnico de vStack.

Opciones generales​

OpciónQué hace
-h, --helpayuda del nivel actual, por ejemplo vstack-cluster service move --help
-v, --versionversión de la utilidad
-c <archivo>, --config=<archivo>otro archivo de configuración. Normalmente no es necesario

status​

Nodos del clúster y servicios en cada uno de ellos. Con --json, la misma información se muestra en JSON.

vstack-cluster status
Node ID: 1; name: q100u001.example.com; state: ONLINE; [ enabled]
Service name: zpool_z02; state: STARTED; [ enabled]

Node ID: 2; name: q100u002.example.com; state: ONLINE; [ enabled]
Service name: cluster-management; state: STARTED; [ enabled]
Service name: zpool_z03; state: STARTED; [ enabled]

Node ID: 3; name: q100u003.example.com; state: ONLINE; [ enabled]

Node ID: 4; name: q100u004.example.com; state: ONLINE; [ enabled]
Service name: zpool_z01; state: STARTED; [ enabled]
Service name: zpool_z04; state: STARTED; [ enabled]

Que un nodo no tenga ningún servicio, como q100u003 en el ejemplo, es normal en un nodo que ha fallado y ha vuelto. Cluster Manager conmuta los pools del nodo caído, pero no los devuelve por sí solo. El pool puede devolverse con el comando service move o desde vStack Center.

vstack-cluster status --json
{
"cluster": {
"nodes": [
{ "enabled": true, "id": 1, "name": "q100u001.example.com", "state": "ONLINE" }
],
"services": [
{ "enabled": true, "name": "zpool_z02", "nodeId": 1, "state": "STARTED" }
]
}
}

services[].nodeId es el número del nodo en el que se ejecuta el servicio.

node list, node status​

node list muestra solo los números de los nodos; node status, los números, los nombres y el estado.

vstack-cluster node status
Node ID: 1; name: q100u001.example.com; state: ONLINE; [ enabled]
Node ID: 2; name: q100u002.example.com; state: ONLINE; [ enabled]

node disable, node enable​

disable cierra el nodo a la colocación de servicios; enable lo vuelve a abrir.

vstack-cluster node disable --id=2
vstack-cluster node enable --id=2
precaución

Después de disable, los servicios permanecen en el nodo y parece que el comando no hace nada. Pero en el siguiente cambio de composición del clúster, por ejemplo después del reinicio de cualquier nodo, Cluster Manager recalcula la colocación y retira los servicios de todos los nodos cerrados. Si solo queda un nodo abierto, todos los pools del clúster se conmutarán a él.

No cierre más de un nodo a la vez y vuelva a abrirlo en cuanto termine los trabajos. Para conmutar un pool, utilice service move, no node disable.

service list, service status​

service list muestra solo los nombres de los servicios. service status muestra el estado de cada uno y el número del nodo en el que se ejecuta.

vstack-cluster service status
Service name: cluster-management; state: STARTED at node: 2; [ enabled]
Service name: zpool_z01; state: STARTED at node: 4; [ enabled]
Service name: zpool_z02; state: STARTED at node: 1; [ enabled]

En status no se puede seleccionar un único servicio ni un único nodo; filtre la salida, por ejemplo vstack-cluster service status | grep zpool_z01.

service start, service stop​

stop detiene el servicio en el nodo en el que se ejecuta. start inicia un servicio detenido en el nodo indicado.

vstack-cluster service stop -s zpool_z03
vstack-cluster service start -s zpool_z03 --id=3

Detener un servicio de pool significa exportar el pool: las VM de ese pool se detienen y se interrumpe el aprovisionamiento de sus volúmenes.

service move​

Conmuta el servicio a otro nodo. No es necesario indicar el nodo de origen.

vstack-cluster service move -s zpool_z01 --dst-id=2
OpciónObligatoriaQué define
-s, --service-namesínombre del servicio
--dst-idsínúmero del nodo de destino, 1–63

El nodo de destino debe estar en ONLINE y abierto (enabled). Durante la conmutación se interrumpen las VM del pool y el aprovisionamiento de sus volúmenes. El pool en el que se ejecuta la VM de gestión (vStack Center) solo se conmuta con este comando: desde la interfaz de Center no es posible conmutarlo. El procedimiento se describe en la sección «Conmutación del pool con la VM de gestión».

Si el servicio se ha detenido pero no se ha iniciado en el nuevo nodo, la utilidad no lo devuelve al nodo original. Compruebe el estado con el comando service status y, mientras el servicio no esté en STARTED, póngase en contacto con el soporte técnico.

service enable, service disable​

enable devuelve el servicio a la colocación automática; disable lo excluye de ella.

vstack-cluster service enable -s zpool_z03

Después de enable, Cluster Manager recalcula la colocación y puede iniciar el servicio por sí mismo de inmediato.

Códigos de salida​

CódigoSignificado
0comando ejecutado
12comando desconocido, opción desconocida o falta una opción obligatoria. La utilidad muestra el motivo y la ayuda

ccrd_cli​

Junto con ccrd, se instala en el nodo ccrd_cli. Sin argumentos, muestra lo mismo que vstack-cluster status. Para trabajar con el clúster, utilice vstack-cluster.

vStack.update.sh​

Script de actualización del nodo. Se encuentra en /root/bin/vStack.update.sh y actualiza los paquetes desde el repositorio de vStack: los controladores, el sistema base y el kernel. El procedimiento de actualización, las comprobaciones y la reversión se describen en la página «Actualización del nodo a 3.2».

vStack.update.sh {--controllers | --base} [OPTIONS]
Ejemplo​
/root/bin/vStack.update.sh --controllers --base --source release --version 3.2.0 --dry-run

Qué actualizar​

Se necesita al menos una de las dos opciones; de lo contrario, el script terminará con el código 1.

OpciónQué actualiza
--controllerslos paquetes del nodo, excepto el sistema base
--baseel sistema base y el kernel, y de paso también los controladores. Después hay que reiniciar el nodo

De dónde obtener los paquetes​

OpciónValorQué define
--sourcereleaserepositorio de versiones de vStack. Para los nodos del cliente es la fuente estándar. Requiere --version
--sourcelocalrepositorio local en el nodo, file:///local/repos/vstack/...
--versionX.Y.Z o X.Y.Z-rcNversión de la distribución, por ejemplo 3.2.0
--repo-urlURLotra dirección del repositorio, por ejemplo un espejo interno

El acceso al repositorio de versiones se concede según una lista de direcciones autorizadas. Envíe las direcciones de los nodos para esta lista al soporte técnico de vStack.

Cómo actualizar​

OpciónQué hace
--dry-runmuestra el plan sin modificar nada
--no-restartno reinicia los servicios después de la actualización. Resulta útil si a continuación viene un reinicio
--rebootreinicia el nodo después de actualizar el sistema base y el kernel. Se ignora con los códigos 6 y 7
--log PATHruta del registro. Por defecto, /var/log/vstack-os-update-<ts>.log
-h, --helpayuda

Protección de arranque​

Por defecto, el script guarda el kernel anterior en <directorio del kernel>_prev, arranca una vez el nuevo con reversión automática al anterior y actualiza el cargador de arranque en la partición EFI. El cargador se copia solo en la partición EFI desde la que ha arrancado el nodo actualmente; no llega al segundo disco del sistema.

Las opciones siguientes desactivan estas protecciones. No las utilice sin indicación del soporte.

OpciónQué desactiva
--no-kernel-backupla copia del kernel anterior. Sin ella, el script no se detendrá si no hay espacio suficiente para la copia
--no-fallbackel arranque único del nuevo kernel con reversión automática
--no-espla actualización del cargador de arranque en la partición EFI

Cambio entre versiones mayores​

Solo es necesario al migrar de la línea 2.x a la 3.x y se realiza junto con el soporte técnico de vStack.

OpciónQué hace
--allow-major-upgradepermite el cambio entre versiones mayores. Sin ella, el script rechaza dicho cambio con el código 2. No es necesaria en una actualización normal dentro de la misma línea
--install-missinginstala todos los paquetes de la versión de destino que faltan en el nodo
--rename-map PATHmapa de paquetes renombrados. Por defecto se toma de la distribución

Códigos de salida​

CódigoSignificado
0actualización completada
1error en los argumentos
2la fuente o la versión no están disponibles, no se ha obtenido la clave de firma o se ha solicitado un cambio de versión mayor sin --allow-major-upgrade
3error de pkg o de la comprobación del nuevo kernel. No habrá reinicio
4no se ha podido guardar o restaurar la configuración: /etc, /usr/local/etc, vstack-env.conf, archivos de arranque en /boot
5un servicio instalado no se ha reiniciado
6actualización completada, pero el shell de root no es ejecutable. Corregir antes del reinicio; de lo contrario, root no podrá iniciar sesión por ssh
7actualización completada, pero la escritura en /boot no se ha confirmado. No reiniciar hasta analizarlo

Archivos​

RutaContenido
/var/backups/etc-<ts>/copia de /etc; en los subdirectorios usr-local-etc y boot, copias de /usr/local/etc y de los archivos loader.conf, loader.conf.local, device.hints. Se conservan las cinco últimas
/var/backups/vstack-env-<ts>.confcopia de vstack-env.conf
/var/backups/update-summary-<ts>.txtresumen final de la ejecución
/var/log/vstack-os-update-<ts>.logregistro completo
/boot/nextboot.conf, /boot/loader.conf.d/zz-vstack-fallback.confarranque único del nuevo kernel y reversión. Tras un arranque correcto, el nodo los elimina por sí mismo