CLI del nodo
En un nodo de vStack OS, el administrador necesita dos utilidades:
- la utilidad del clúster
vstack-clustermuestra 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.shactualiza 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 formaq100u001.<dominio>. - Servicio: lo que Cluster Manager coloca en uno de los nodos. Cada
pool de almacenamiento
zNNestá representado por el serviciozpool_zNN. El serviciocluster-managementpertenece al propio Cluster Manager: no se inicia, detiene ni conmuta manualmente.
El nodo y el servicio tienen cada uno dos atributos independientes:
| Atributo | Valores | Significado |
|---|---|---|
state | nodo: ONLINE, OFFLINE; servicio: STARTED, STOPPED, STOPPING y otros | estado 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
| Comando | Qué hace |
|---|---|
status | nodos y servicios que se ejecutan en ellos |
node list | números de los nodos |
node status | estado de todos los nodos |
node disable --id=N | cerrar el nodo a la colocación de servicios |
node enable --id=N | volver a abrir el nodo |
service list | nombres de los servicios |
service status | estado de todos los servicios y nodos en los que se ejecutan |
service start -s <servicio> --id=N | iniciar el servicio en el nodo N |
service stop -s <servicio> | detener el servicio |
service move -s <servicio> --dst-id=N | conmutar 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 status | estado 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ón | Qué hace |
|---|---|
-h, --help | ayuda del nivel actual, por ejemplo vstack-cluster service move --help |
-v, --version | versió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
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ón | Obligatoria | Qué define |
|---|---|---|
-s, --service-name | sí | nombre del servicio |
--dst-id | sí | 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ódigo | Significado |
|---|---|
0 | comando ejecutado |
12 | comando 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ón | Qué actualiza |
|---|---|
--controllers | los paquetes del nodo, excepto el sistema base |
--base | el 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ón | Valor | Qué define |
|---|---|---|
--source | release | repositorio de versiones de vStack. Para los nodos del cliente es la fuente estándar. Requiere --version |
--source | local | repositorio local en el nodo, file:///local/repos/vstack/... |
--version | X.Y.Z o X.Y.Z-rcN | versión de la distribución, por ejemplo 3.2.0 |
--repo-url | URL | otra 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ón | Qué hace |
|---|---|
--dry-run | muestra el plan sin modificar nada |
--no-restart | no reinicia los servicios después de la actualización. Resulta útil si a continuación viene un reinicio |
--reboot | reinicia el nodo después de actualizar el sistema base y el kernel. Se ignora con los códigos 6 y 7 |
--log PATH | ruta del registro. Por defecto, /var/log/vstack-os-update-<ts>.log |
-h, --help | ayuda |
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ón | Qué desactiva |
|---|---|
--no-kernel-backup | la copia del kernel anterior. Sin ella, el script no se detendrá si no hay espacio suficiente para la copia |
--no-fallback | el arranque único del nuevo kernel con reversión automática |
--no-esp | la 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ón | Qué hace |
|---|---|
--allow-major-upgrade | permite 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-missing | instala todos los paquetes de la versión de destino que faltan en el nodo |
--rename-map PATH | mapa de paquetes renombrados. Por defecto se toma de la distribución |
Códigos de salida
| Código | Significado |
|---|---|
0 | actualización completada |
1 | error en los argumentos |
2 | la 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 |
3 | error de pkg o de la comprobación del nuevo kernel. No habrá reinicio |
4 | no se ha podido guardar o restaurar la configuración: /etc, /usr/local/etc, vstack-env.conf, archivos de arranque en /boot |
5 | un servicio instalado no se ha reiniciado |
6 | actualizació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 |
7 | actualización completada, pero la escritura en /boot no se ha confirmado. No reiniciar hasta analizarlo |
Archivos
| Ruta | Contenido |
|---|---|
/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>.conf | copia de vstack-env.conf |
/var/backups/update-summary-<ts>.txt | resumen final de la ejecución |
/var/log/vstack-os-update-<ts>.log | registro completo |
/boot/nextboot.conf, /boot/loader.conf.d/zz-vstack-fallback.conf | arranque único del nuevo kernel y reversión. Tras un arranque correcto, el nodo los elimina por sí mismo |