Administración de un dispositivo Azure Stack Edge Pro con FPGA mediante Windows PowerShell
Importante
Los dispositivos de Azure Stack Edge Pro FPGA llegarán al final de la vida útil en febrero de 2024. Si está pensando en nuevas implementaciones, se recomienda explorar los dispositivos de Azure Stack Edge Pro 2 o Azure Stack Edge Pro GPU para las cargas de trabajo.
La solución Azure Stack Edge Pro FPGA permite procesar datos y enviarlos a través de la red a Azure. En este artículo se describen algunas de las tareas de configuración y administración del dispositivo Azure Stack Edge Pro FPGA. Puede usar Azure Portal, la interfaz de usuario web local o la interfaz de Windows PowerShell para administrar su dispositivo.
Este artículo se centra en las tareas que realizará mediante la interfaz de PowerShell.
Este artículo incluye los siguientes procedimientos:
- Conectarse a la interfaz de PowerShell
- Crear un paquete de soporte
- Carga del certificado
- Restablecer el dispositivo
- Ver la información del dispositivo
- Obtener los registros de proceso
- Supervisar y solucionar problemas de los módulos de proceso
Conectarse a la interfaz de PowerShell
Dependiendo del sistema operativo del cliente, los procedimientos para conectarse de forma remota al dispositivo son diferentes.
Conexión de forma remota desde un cliente de Windows
Antes de comenzar, asegúrese de que el cliente de Windows ejecuta Windows PowerShell 5.0 o posterior.
Siga estos pasos para conectarse de forma remota desde un cliente de Windows.
Ejecute una sesión de Windows PowerShell como administrador.
Asegúrese de que el servicio Administración remota de Windows se ejecuta en el cliente. En el símbolo del sistema, escriba:
winrm quickconfig
Para más información, vea Instalación y configuración de Administración remota de Windows.
Asigne una variable a la dirección IP del dispositivo.
$ip = "<device_ip>"
Reemplace
<device_ip>
por la dirección IP de su dispositivo.Para agregar la dirección IP del dispositivo a la lista de hosts de confianza del cliente, escriba el siguiente comando:
Set-Item WSMan:\localhost\Client\TrustedHosts $ip -Concatenate -Force
Inicie una sesión de Windows PowerShell en el dispositivo:
Enter-PSSession -ComputerName $ip -Credential $ip\EdgeUser -ConfigurationName Minishell
Proporcione la contraseña cuando se le solicite. Use la misma contraseña que se emplea para iniciar sesión en la interfaz de usuario web local. La contraseña de la interfaz de usuario web local predeterminada es Password1. Cuando se conecte correctamente al dispositivo mediante PowerShell remoto, verá la siguiente salida de ejemplo:
Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. PS C:\WINDOWS\system32> winrm quickconfig WinRM service is already running on this machine. PS C:\WINDOWS\system32> $ip = "10.100.10.10" PS C:\WINDOWS\system32> Set-Item WSMan:\localhost\Client\TrustedHosts $ip -Concatenate -Force PS C:\WINDOWS\system32> Enter-PSSession -ComputerName $ip -Credential $ip\EdgeUser -ConfigurationName Minishell WARNING: The Windows PowerShell interface of your device is intended to be used only for the initial network configuration. Please engage Microsoft Support if you need to access this interface to troubleshoot any potential issues you may be experiencing. Changes made through this interface without involving Microsoft Support could result in an unsupported configuration. [10.100.10.10]: PS>
Conexión de forma remota desde un cliente de Linux
En el cliente de Linux que usará para conectarse:
- Instale la versión más reciente de PowerShell Core para Linux desde GitHub para obtener la característica de comunicación remota SSH.
- Instale solo el paquete
gss-ntlmssp
desde el módulo NTLM. Para los clientes de Ubuntu, use el siguiente comando:sudo apt-get install gss-ntlmssp
Para más información, vaya a Comunicación remota de PowerShell a través de SSH.
Siga estos pasos para conectarse de forma remota desde un cliente NFS.
Para abrir la sesión de PowerShell, escriba:
pwsh
Para conectarse mediante el cliente remoto, escriba:
Enter-PSSession -ComputerName $ip -Authentication Negotiate -ConfigurationName Minishell -Credential ~\EdgeUser
Cuando se le solicite, proporcione la contraseña usada para iniciar sesión en el dispositivo.
Nota:
Este procedimiento no funciona en Mac OS.
Crear un paquete de soporte
Si experimenta problemas con el dispositivo, puede crear un paquete de soporte técnico de los registros del sistema. El servicio de soporte técnico de Microsoft usa este paquete para solucionar los problemas. Siga estos pasos para crear un paquete de soporte técnico:
Conéctese a la interfaz de PowerShell del dispositivo.
Use el comando
Get-HcsNodeSupportPackage
para crear un paquete de soporte técnico. El uso del cmdlet es de esta manera:Get-HcsNodeSupportPackage [-Path] <string> [-Zip] [-ZipFileName <string>] [-Include {None | RegistryKeys | EtwLogs | PeriodicEtwLogs | LogFiles | DumpLog | Platform | FullDumps | MiniDumps | ClusterManagementLog | ClusterLog | UpdateLogs | CbsLogs | StorageCmdlets | ClusterCmdlets | ConfigurationCmdlets | KernelDump | RollbackLogs | Symbols | NetworkCmdlets | NetworkCmds | Fltmc | ClusterStorageLogs | UTElement | UTFlag | SmbWmiProvider | TimeCmds | LocalUILogs | ClusterHealthLogs | BcdeditCommand | BitLockerCommand | DirStats | ComputeRolesLogs | ComputeCmdlets | DeviceGuard | Manifests | MeasuredBootLogs | Stats | PeriodicStatLogs | MigrationLogs | RollbackSupportPackage | ArchivedLogs | Default}] [-MinimumTimestamp <datetime>] [-MaximumTimestamp <datetime>] [-IncludeArchived] [-IncludePeriodicStats] [-Credential <pscredential>] [<CommonParameters>]
El cmdlet recopila registros de su dispositivo y copia esos registros en una red o un recurso compartido local especificados.
Los parámetros usados son los siguientes:
-Path
: especifica la red o la ruta de acceso local donde copiar el paquete de soporte técnico. (requerido)-Credential
: especifica las credenciales para acceder a la ruta de acceso protegida.-Zip
: especifica que se genere un archivo ZIP.-Include
: especifica los componentes que se incluirán en el paquete de soporte técnico. Si no se especifica, se da por hecho el valorDefault
.-IncludeArchived
: especifica que se incluyan los registros archivados en el paquete de soporte técnico.-IncludePeriodicStats
: especifica que se incluyan registros estadísticos periódicos en el paquete de soporte técnico.
Carga del certificado
Un certificado SSL correcto garantiza que envía la información cifrada al servidor correcto. Además del cifrado, el certificado también permite la autenticación. Puede cargar su propio certificado SSL de confianza mediante la interfaz de PowerShell del dispositivo.
Use el cmdlet
Set-HcsCertificate
para cargar el certificado. Cuando se le solicite, proporcione los siguientes parámetros:CertificateFilePath
: ruta de acceso al recurso compartido que contiene el archivo de certificado en formato .pfx.CertificatePassword
: contraseña usada para proteger el certificado.Credentials
: nombre de usuario para acceder al recurso compartido que contiene el certificado. Proporcione la contraseña para el recurso compartido de red cuando se le solicite.En el ejemplo siguiente se muestra el uso de este cmdlet:
Set-HcsCertificate -Scope LocalWebUI -CertificateFilePath "\\myfileshare\certificates\mycert.pfx" -CertificatePassword "mypassword" -Credential "Username"
También puede cargar certificados de IoT Edge para habilitar una conexión segura entre el dispositivo IoT Edge y los dispositivos de nivel inferior que pueden conectarse a él. Hay tres archivos (formato .pem) que debe instalar:
- Certificado de entidad de certificación raíz o el propietario de la entidad de certificación
- Certificado de entidad de certificación de dispositivo
- Clave privada de dispositivo
En el siguiente ejemplo se muestra el uso de este cmdlet para instalar certificados de IoT Edge:
Set-HcsCertificate -Scope IotEdge -RootCACertificateFilePath "\\hcfs\root-ca-cert.pem" -DeviceCertificateFilePath "\\hcfs\device-ca-cert.pem\" -DeviceKeyFilePath "\\hcfs\device-private-key.pem" -Credential "username"
Cuando ejecute este cmdlet, se le solicitará que proporcione la contraseña para el recurso compartido de red.
Para obtener más información sobre los certificados, vaya a Certificados de Azure IoT Edge o a Instalación de los certificados en la puerta de enlace.
Ver la información del dispositivo
Use
Get-HcsApplianceInfo
para obtener la información del dispositivo.En el ejemplo siguiente se muestra el uso de este cmdlet:
[10.100.10.10]: PS>Get-HcsApplianceInfo Id : b2044bdb-56fd-4561-a90b-407b2a67bdfc FriendlyName : DBE-NBSVFQR94S6 Name : DBE-NBSVFQR94S6 SerialNumber : HCS-NBSVFQR94S6 DeviceId : 40d7288d-cd28-481d-a1ea-87ba9e71ca6b Model : Virtual FriendlySoftwareVersion : Data Box Gateway 1902 HcsVersion : 1.4.771.324 IsClustered : False IsVirtual : True LocalCapacityInMb : 1964992 SystemState : Initialized SystemStatus : Normal Type : DataBoxGateway CloudReadRateBytesPerSec : 0 CloudWriteRateBytesPerSec : 0 IsInitialPasswordSet : True FriendlySoftwareVersionNumber : 1902 UploadPolicy : All DataDiskResiliencySettingName : Simple ApplianceTypeFriendlyName : Data Box Gateway IsRegistered : False
Esta es una tabla que resume alguna de la información importante del dispositivo:
Parámetro Descripción FriendlyName El nombre descriptivo del dispositivo, tal y como se configuró mediante la interfaz de usuario web local durante la implementación del dispositivo. El nombre descriptivo predeterminado es el número de serie del dispositivo. SerialNumber El número de serie del dispositivo es un número único asignado en la fábrica. Modelo El modelo del dispositivo Azure Stack Edge o Data Box Gateway. El modelo es físico para Azure Stack Edge y virtual para Data Box Gateway. FriendlySoftwareVersion La cadena descriptiva que corresponde a la versión de software del dispositivo. Para un sistema que ejecuta la versión preliminar, la versión de software descriptiva sería Data Box Edge 1902. HcsVersion La versión de software HCS que se ejecuta en el dispositivo. Por ejemplo, la versión de software HCS correspondiente a Data Box Edge 1902 es 1.4.771.324. LocalCapacityInMb La capacidad total local del dispositivo en megabits. IsRegistered Este valor indica si el dispositivo se activa con el servicio.
Restablecer el dispositivo
Para restablecer el dispositivo, debe borrar de forma segura todos los datos del disco de datos y del disco de arranque del dispositivo.
Utilice el cmdlet Reset-HcsAppliance
para borrar tanto los discos de datos como el disco de arranque o solo los discos de datos. Los conmutadores SecureWipeBootDisk
y SecureWipeDataDisks
le permiten borrar el disco de arranque y los discos de datos, respectivamente.
El identificador SecureWipeBootDisk
borra el disco de arranque, lo que hace que el dispositivo no se pueda usar. Solo se debería usar cuando el dispositivo necesite devolverse a Microsoft. Para más información, consulte Devolución o sustitución del dispositivo Azure Data Box Edge.
Si utiliza el restablecimiento del dispositivo en la interfaz de usuario web local, solo los discos de datos se borran de forma segura, pero el disco de arranque se mantiene intacto. El disco de arranque contiene la configuración del dispositivo.
En el símbolo del sistema, escriba:
Reset-HcsAppliance -SecureWipeBootDisk -SecureWipeDataDisks
En el ejemplo siguiente se muestra cómo utilizar este cmdlet:
[10.128.24.33]: PS>Reset-HcsAppliance -SecureWipeBootDisk -SecureWipeDataDisks Confirm Are you sure you want to perform this action? Performing the operation "Reset-HcsAppliance" on target "ShouldProcess appliance". [Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"): N
Obtener los registros de proceso
Si el rol de proceso está configurado en su dispositivo, también puede obtener los registros del proceso gracias a la interfaz de PowerShell.
Use
Get-AzureDataBoxEdgeComputeRoleLogs
para obtener los registros del proceso del dispositivo.En el ejemplo siguiente se muestra el uso de este cmdlet:
Get-AzureDataBoxEdgeComputeRoleLogs -Path "\\hcsfs\logs\myacct" -Credential "username" -FullLogCollection
Aquí tiene hay una descripción de los parámetros que se usan en el cmdlet:
Path
: proporcione una ruta de acceso de red al recurso compartido en el que quiere crear el paquete de registros del proceso.Credential
: proporcione el nombre de usuario del recurso compartido de red. Cuando ejecute este cmdlet, deberá proporcionar la contraseña del recurso compartido.FullLogCollection
: este parámetro garantiza que el paquete de registros contendrá todos los registros del proceso. De forma predeterminada, el paquete de registros contiene solo un subconjunto de registros.
Supervisar y solucionar problemas de los módulos de proceso
En un dispositivo Azure Stack Edge que tenga configurado el rol de proceso, puede solucionar problemas o supervisar el dispositivo con dos conjuntos diferentes de comandos.
- Uso de comandos de
iotedge
Estos comandos están disponibles para las operaciones básicas del dispositivo. - Uso de comandos de
dkrdbe
Estos comandos están disponibles para un amplio conjunto de operaciones para el dispositivo.
Para ejecutar cualquiera de los comandos anteriores, debe conectarse a la interfaz de PowerShell.
Usar comandos iotedge
Para ver una lista de comandos disponibles, conéctese a la interfaz de PowerShell y utilice la función iotedge
.
[10.100.10.10]: PS>iotedge -? Usage: iotedge COMMAND
Commands:
check
list
logs
restart
[10.100.10.10]: PS>
En la tabla siguiente se proporciona una breve descripción de los comandos disponibles para iotedge
:
comando | Descripción |
---|---|
check |
Realiza comprobaciones automatizadas de problemas comunes de configuración y conectividad. |
list |
Enumere los módulos |
logs |
Captura los registros de un módulo. |
restart |
Detiene y reinicia un módulo. |
Usar comandos dkrdbe
Para ver una lista de comandos disponibles, conéctese a la interfaz de PowerShell y utilice la función dkrdbe
.
[10.100.10.10]: PS>dkrdbe -?
Usage: dkrdbe COMMAND
Commands:
image [prune]
images
inspect
login
logout
logs
port
ps
pull
start
stats
stop
system [df]
top
[10.100.10.10]: PS>
En la tabla siguiente se proporciona una breve descripción de los comandos disponibles para dkrdbe
:
comando | Descripción |
---|---|
image |
Administrar imágenes. Para quitar imágenes sin usar, utilice: dkrdbe image prune -a -f |
images |
Lista de imágenes |
inspect |
Devolver información de bajo nivel sobre los objetos de Docker |
login |
Iniciar sesión en un registro de Docker |
logout |
Cerrar sesión de un registro de Docker |
logs |
Capturar los registros de un contenedor |
port |
Enumerar asignaciones de puerto o una asignación específica para el contenedor |
ps |
Enumerar contenedores |
pull |
Extraer una imagen o un repositorio de un registro |
start |
Iniciar uno o varios contenedores detenidos |
stats |
Mostrar streaming en vivo de estadísticas de uso de recursos de los contenedores |
stop |
Detener uno o varios contenedores en ejecución |
system |
Administrar Docker |
top |
Mostrar los procesos en ejecución de un contenedor |
Para obtener ayuda sobre cualquier comando disponible, use dkrdbe <command-name> --help
.
Por ejemplo, para comprender el uso del comando port
, escriba:
[10.100.10.10]: P> dkrdbe port --help
Usage: dkr port CONTAINER [PRIVATE_PORT[/PROTO]]
List port mappings or a specific mapping for the container
[10.100.10.10]: P> dkrdbe login --help
Usage: docker login [OPTIONS] [SERVER]
Log in to a Docker registry.
If no server is specified, the default is defined by the daemon.
Options:
-p, --password string Password
--password-stdin Take the password from stdin
-u, --username string Username
[10.100.10.10]: PS>
Los comandos disponibles para la función dkrdbe
utilizan los mismos parámetros que los que se utilizan para los comandos de Docker normales. Para las opciones y los parámetros utilizados con el comando de Docker, vaya a Uso de la línea de comandos de Docker.
Comprobación de si el módulo se ha implementado correctamente
Los módulos de proceso son contenedores que tienen una lógica de negocios implementada. Para comprobar si un módulo de proceso se ha implementado correctamente, ejecute el comando ps
y compruebe si el contenedor (correspondiente al módulo de proceso) se ejecuta.
Para obtener la lista de todos los contenedores (incluidos aquellos que están en pausa), ejecute el comando ps -a
.
[10.100.10.10]: P> dkrdbe ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d99e2f91d9a8 edgecompute.azurecr.io/filemovemodule2:0.0.1-amd64 "dotnet FileMoveModu…" 2 days ago Up 2 days movefile
0a06f6d605e9 edgecompute.azurecr.io/filemovemodule2:0.0.1-amd64 "dotnet FileMoveModu…" 2 days ago Up 2 days filemove
2f8a36e629db mcr.microsoft.com/azureiotedge-hub:1.0 "/bin/sh -c 'echo \"$…" 2 days ago Up 2 days 0.0.0.0:443->443/tcp, 0.0.0.0:5671->5671/tcp, 0.0.0.0:8883->8883/tcp edgeHub
acce59f70d60 mcr.microsoft.com/azureiotedge-agent:1.0 "/bin/sh -c 'echo \"$…" 2 days ago Up 2 days edgeAgent
[10.100.10.10]: PS>
Si se ha producido un error al crear la imagen de contenedor o durante la extracción de la imagen, ejecute logs edgeAgent
. EdgeAgent
es el contenedor de tiempo de ejecución de IoT Edge, que es responsable del aprovisionamiento de otros contenedores.
Dado que logs edgeAgent
hace un volcado de todos los registros, una buena forma de ver los errores recientes consiste en usar la opción --tail 20
.
[10.100.10.10]: PS>dkrdbe logs edgeAgent --tail 20
2019-02-28 23:38:23.464 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Util.Uds.HttpUdsMessageHandler] - Connected socket /var/run/iotedge/mgmt.sock
2019-02-28 23:38:23.464 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Util.Uds.HttpUdsMessageHandler] - Sending request http://mgmt.sock/modules?api-version=2018-06-28
2019-02-28 23:38:23.464 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Agent.Core.Agent] - Getting edge agent config...
2019-02-28 23:38:23.464 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Agent.Core.Agent] - Obtained edge agent config
2019-02-28 23:38:23.469 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Agent.Edgelet.ModuleManagementHttpClient] - Received a valid Http response from unix:///var/run/iotedge/mgmt.soc
k for List modules
--------------------CUT---------------------
--------------------CUT---------------------
08:28.1007774+00:00","restartCount":0,"lastRestartTimeUtc":"2019-02-26T20:08:28.1007774+00:00","runtimeStatus":"running","version":"1.0","status":"running","restartPolicy":"always
","type":"docker","settings":{"image":"edgecompute.azurecr.io/filemovemodule2:0.0.1-amd64","imageHash":"sha256:47778be0602fb077d7bc2aaae9b0760fbfc7c058bf4df192f207ad6cbb96f7cc","c
reateOptions":"{\"HostConfig\":{\"Binds\":[\"/home/hcsshares/share4-dl460:/home/input\",\"/home/hcsshares/share4-iot:/home/output\"]}}"},"env":{}}
2019-02-28 23:38:28.480 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Agent.Core.Planners.HealthRestartPlanner] - HealthRestartPlanner created Plan, with 0 command(s).
Para obtener registros de contenedores
Para obtener los registros de un contenedor específico, primero enumere el contenedor y después obtenga los registros del contenedor en el que está interesado.
Para obtener la lista de contenedores en ejecución, ejecute el comando
ps
.[10.100.10.10]: P> dkrdbe ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d99e2f91d9a8 edgecompute.azurecr.io/filemovemodule2:0.0.1-amd64 "dotnet FileMoveModu…" 2 days ago Up 2 days movefile 0a06f6d605e9 edgecompute.azurecr.io/filemovemodule2:0.0.1-amd64 "dotnet FileMoveModu…" 2 days ago Up 2 days filemove 2f8a36e629db mcr.microsoft.com/azureiotedge-hub:1.0 "/bin/sh -c 'echo \"$…" 2 days ago Up 2 days 0.0.0.0:443->443/tcp, 0.0.0.0:5671->5671/tcp, 0.0.0.0:8883->8883/tcp edgeHub acce59f70d60 mcr.microsoft.com/azureiotedge-agent:1.0 "/bin/sh -c 'echo \"$…" 2 days ago Up 2 days edgeAgent
Anote el identificador del contenedor para el que necesita los registros.
Para obtener los registros de un contenedor específico, ejecute el comando
logs
proporcionando el identificador del contenedor.[10.100.10.10]: PS>dkrdbe logs d99e2f91d9a8 02/26/2019 18:21:45: Info: Opening module client connection. 02/26/2019 18:21:46: Info: Initializing with input: /home/input, output: /home/output. 02/26/2019 18:21:46: Info: IoT Hub module client initialized. 02/26/2019 18:22:24: Info: Received message: 1, SequenceNumber: 0 CorrelationId: , MessageId: 081886a07e694c4c8f245a80b96a252a Body: [{"ChangeType":"Created","ShareRelativeFilePath":"\\__Microsoft Data Box Edge__\\Upload\\Errors.xml","ShareName":"share4-dl460"}] 02/26/2019 18:22:24: Info: Moving input file: /home/input/__Microsoft Data Box Edge__/Upload/Errors.xml to /home/output/__Microsoft Data Box Edge__/Upload/Errors.xml 02/26/2019 18:22:24: Info: Processed event. 02/26/2019 18:23:38: Info: Received message: 2, SequenceNumber: 0 CorrelationId: , MessageId: 30714d005eb048e7a4e7e3c22048cf20 Body: [{"ChangeType":"Created","ShareRelativeFilePath":"\\f [10]","ShareName":"share4-dl460"}] 02/26/2019 18:23:38: Info: Moving input file: /home/input/f [10] to /home/output/f [10] 02/26/2019 18:23:38: Info: Processed event.
Supervisión de las estadísticas de uso del dispositivo
Para supervisar la memoria, el uso de CPU y la E/S en el dispositivo, use el comando stats
.
Ejecute el comando
stats
para deshabilitar el streaming en vivo y extraer solo el primer resultado.dkrdbe stats --no-stream
En el ejemplo siguiente se muestra el uso de este cmdlet:
[10.100.10.10]: P> dkrdbe stats --no-stream CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS d99e2f91d9a8 movefile 0.0 24.4MiB / 62.89GiB 0.04% 751kB / 497kB 299kB / 0B 14 0a06f6d605e9 filemove 0.00% 24.11MiB / 62.89GiB 0.04% 679kB / 481kB 49.5MB / 0B 14 2f8a36e629db edgeHub 0.18% 173.8MiB / 62.89GiB 0.27% 4.58MB / 5.49MB 25.7MB / 2.19MB 241 acce59f70d60 edgeAgent 0.00% 35.55MiB / 62.89GiB 0.06% 2.23MB / 2.31MB 55.7MB / 332kB 14 [10.100.10.10]: PS>
Salir de la sesión remota
Para salir de la sesión remota de PowerShell, cierre la ventana de PowerShell.
Pasos siguientes
- Implemente Azure Stack Edge Pro FPGA en Azure Portal.