Uso de dcli para ejecutar comandos en un cluster

Utilice la utilidad dcli para ejecutar comandos en un grupo de nodos de un cluster de Big Data Service y devolver la salida. Puede utilizar dcli para reinstalar o volver a configurar el software en el cluster.

Visualización de la ayuda de dcli

Para ver la página de ayuda de dcli, introduzca el comando dcli con las opciones -h o --help. Puede ver una descripción de los comandos introduciendo el comando dcli sin opciones.

Identificación de los nodos de destino

Puede identificar los nodos donde desee que se ejecuten los comandos en la línea de comandos o en un archivo. Para obtener una lista de nodos de destino por defecto, utilice la opción -t. Para cambiar los nodos de destino del comando actual, utilice las opciones -c o -g.

Puede crear manualmente archivos con grupos de nodos para gestionarlos conjuntamente. Por ejemplo, puede gestionar conjuntamente los nodos del 5 al 18, ya que estos no tienen funciones especiales como los nodos del 1 al 4.

Especificación de comandos

Normalmente, se especifica un comando para la ejecución en los nodos de destino en la línea de comandos. Sin embargo, también puede crear un archivo de comandos para una serie de comandos que utilice a menudo de manera conjunta, o para comandos con una sintaxis compleja. Consulte la opción -x en la siguiente tabla.

También puede copiar archivos en los nodos de destino sin ejecutarlos mediante la opción -f.

Control de los niveles de salida

Puede solicitar más información con la opción -v o menos información con la opción -n. También puede limitar el número de líneas devueltas con la opción --maxlines o sustituir las cadenas coincidentes con la opción -r.

A continuación, se muestran ejemplos de varios niveles de salida con un ejemplo sencillo: el comando de fecha de Linux.

Nota

Se muestra la salida de un solo nodo (node07). La sintaxis de estos ejemplos ejecuta el comando date en todos los nodos.

Esta es la salida por defecto, que muestra el nodo seguido de la fecha.

# dcli date 
bda1node07-adm.example.com: Tue Feb 14 10:22:31 PST 2016

La salida mínima devuelve OK para la ejecución completada:

# dcli -n date 
OK: ['bda1node07.example.com']

La salida detallada proporciona amplia información sobre la configuración con la que se ha ejecutado el comando:

dcli -v dateoptions.nodes: Noneoptions.destfile: Noneoptions.file: Noneoptions.group: dcserversoptions.maxLines: 100000options.listNegatives: Falseoptions.pushKey: Falseoptions.regexp: Noneoptions.sshOptions: Noneoptions.scpOptions: Noneoptions.dropKey: Falseoptions.serializeOps: Falseoptions.userID: rootoptions.verbosity 1options.vmstatOps Noneoptions.execfile: Noneargv: ['/opt/oracle/bda/bin/dcli', '-g', 'dcservers', '-v', 'date']Success connecting to nodes: ['bda1node07.example.com']...entering thread for bda1node07.example.com:execute: /usr/bin/ssh -l root bda1node07.example.com ' date' ...exiting thread for bda1node07.example.com status: 0bda1node07.example.com: Tue Feb 14 10:24:43 PST 2012]

Sintaxis de dcli

dcli [option] [command]
[opción]

Las opciones disponibles se describen en la siguiente tabla. Puede omitir todas las opciones para ejecutar un comando en todos los nodos del cluster.

Opción Descripción
-c NODES Especifica una lista separada por comas de nodos de Big Data Service donde se ejecuta el comando.
-C Utiliza el archivo de hosts de cluster /opt/oracle/bda/cluster-hosts-infiniband como destino.
-d DESTFILE Especifica un nombre de archivo o directorio de destino para la opción -f.
-f FILE Especifica los archivos que se van a copiar en el directorio raíz del usuario en los nodos de destino. Los archivos no se ejecutan. Consulte la opción -l.
-g GROUPFILE Especifica un archivo que contiene una lista de nodos de Big Data Service donde se ejecuta el comando. Puede utilizar nombres de nodo o direcciones IP en el archivo.
-h, --help Muestra una descripción de los comandos.
-k Transfiere la clave ssh al archivo /root/.ssh/authorized_keys de cada nodo.
-l USERID Identifica el identificador de usuario para conectarse a otro nodo. El identificador por defecto es root.
--maxlines=MAXLINES Identifica las líneas máximas de salida que se muestran de un comando ejecutado en varios nodos. El valor por defecto es 10 000 líneas.
-n

Abrevia la salida de los mensajes que no son de error. Solo se muestra el nombre del nodo cuando un nodo devuelve una salida normal (código de retorno 0).

No es posible utilizar las opciones -n y -r de forma conjunta.

-r REGEXP Sustituye la salida por el nombre de nodo para las líneas que coinciden con la expresión regular especificada.
-s SSHOPTIONS Especifica una cadena de opciones que se transfieren a SSH.
--scp=SCPOPTIONS Especifica una cadena de opciones que se transfieren a copia segura (SCP) cuando estas opciones son diferentes de sshoptions.
--serial Serializa la ejecución en los nodos. El valor por defecto es la ejecución en paralelo.
-t Muestra los nodos de destino.
--unkey Borra las claves de los archivos authorized_key en los nodos de destino.
-v Muestra la versión detallada de todos los mensajes.
--version Muestra el número de versión de dcli.
--vmstat=VMSTATOPS

Muestra la sintaxis de la utilidad de estadísticas de memoria virtual de Linux (vmstat). Este comando devuelve información del proceso, la memoria virtual, el disco, la captura y la actividad de CPU.

Para introducir un comando vmstat, incluya sus opciones entre comillas. Por ejemplo:

--vmstat="-a 3 5"

Consulte la documentación de Linux para obtener más información sobre vmstat.

-x EXECFILE Especifica un archivo de comandos que se copiará en el directorio raíz del usuario y se ejecutará en los nodos de destino. Consulte la opción -l .
[comando]

Cualquier comando que se ejecute desde el indicador del sistema operativo. Si el comando contiene signos de puntuación o caracteres especiales, incluya el comando entre comillas dobles.

La barra invertida (\) es el carácter de escape. Anteponga una barra invertida a los siguientes caracteres especiales en la línea de comandos para evitar la interpretación por parte del shell. La barra invertida no es necesaria en un archivo de comandos. Consulte la opción -x para obtener información sobre los archivos de comandos.

  • $ (signo de dólar)

  • ' (comillas)

  • < (menor que)

  • > (mayor que)

  • ( ) (paréntesis)

Valores devueltos por dcli

  • 0: el comando se ha ejecutado correctamente en todos los nodos.

  • 1: uno o más nodos son inaccesibles o la ejecución remota ha devuelto un valor distinto de cero. Un mensaje muestra los nodos que no responden. La ejecución continúa en los otros nodos.

  • 2: un error local ha evitado que el comando se ejecute.

Si interrumpe el proceso de dcli local, los comandos remotos pueden continuar sin devolver su salida o estado.

Ejemplo de dcli

A continuación se incluye un ejemplo de la utilidad dcli.

Este ejemplo devuelve la lista por defecto de nodos de destino:

# dcli -t
Target nodes: ['bda1node01-adm.example.com', 'bda1node02-adm.example.com', 'bda1node03-adm.example.com', 'bda1node04-adm.example.com', 'bda1node05-adm.example.com', 'bda1node06-adm.example.com', 'bda1node07-adm.example.com', 'bda1node08-adm.example.com', 'bda1node09-adm.example.com']