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.
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.
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.
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
.
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.
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]
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 No es posible utilizar las opciones |
-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 ( Para introducir un comando
Consulte la documentación de Linux para obtener más información sobre |
-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 . |
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']