Definición del modelo de ThingWorx en Composer > Modelado > Conectores de integración > Requisitos previos de conectores de integración > Configuración inicial del servicio Integration Runtime para conectores de integración
Configuración inicial del servicio Integration Runtime para conectores de integración
Después de instalar ThingWorx, realice los siguientes pasos para descargar y configurar el servicio ThingWorx Runtime. Si se encuentra en un entorno Docker, se puede utilizar un instalador para configurar una configuración básica para los conectores de integración. En el instalador se incluye un fichero de registro en el que se puede modificar parte de la configuración, según se describe a continuación.
Descarga de Integration Runtime
El servicio Integration Runtime está disponible en support.ptc.com en Descargar software > Pedir o descargar actualizaciones de software > ThingWorx Foundation > Versión <versión> > ThingWorx Integration Runtime > Most Recent Datecode > ThingWorx-Integration-Runtime-<versión>.
Configuración de Integration Runtime
* 
No cree una cosa a partir de la plantilla de cosa IntegrationRuntime.
1. Cree una clave de aplicación en ThingWorx para que Integration Runtime la utilice para la comunicación con ThingWorx Platform.
2. Inicie los servicios de integración como proceso Java con una de las siguientes opciones:
* 
No se debe activar la configuración de -Dorg.apache.camel.jmx.createRmiConnector.
fichero de configuración externo en el que se especifiquen parámetros de conexión.
java -DconfigFile=<ruta a la configuración de IntegrationRuntime>-jar <ruta a IntegrationRuntime-x.x.x>.jar, donde x.x.x se reemplaza por la versión que se utiliza.
3. (Opcionalmente) Cree un fichero de configuración personalizada logback y especifique su ruta en la línea de comandos mediante lo siguiente: -Dlogs.includedLogback=<path to logback include>
4. Si se cifran entradas en el fichero de configuración integrationRuntime-settings.json o se cifra todo el fichero de configuración, se debe especificar la ruta a la configuración de codificación security-common en la línea de comandos mediante lo siguiente:
* 
Se requiere -Dencrypted.config.file=true en los siguientes ejemplos si se cifra todo el fichero de configuración y debe apuntar al fichero cifrado de configuración de Integration Runtime. Si solo se cifran entradas del fichero, se debe omitir la configuración o definirla en falso.
java -Dsecret.management.config.file=<ruta para encryption.conf> -Dencrypted.config.file=true -DconfigFile=<ruta para integrationRuntime-settings.json.encrypted cifrado>
A continuación, se proporciona un comando de ejemplo:
java -Dsecret.management.config.file=C:\Integ_runtime\encryption.conf -Dencrypted.config.file=true -DconfigFile=integrationRuntime-settings.json.encrypted -jar C:\Integ_runtime\integration-runtime-x.x.x-bXXX.jar
5. Si se ejecuta la agrupación de alta disponibilidad (HA) de ThingWorx, todas las conexiones de WebSocket se deben rutear a través de una instancia de ThingWorx Connection Server.
El conector de integración utiliza WebSockets para comunicarse con ThingWorx. Un panorama típico de alta disponibilidad utiliza varias instancias de Connection Server con un equilibrador de la carga delante de ellas. En un escenario de alta disponibilidad, Integration Runtime se debe rutear a través del equilibrador de la carga configurado y hacia una instancia de Connection Server.
Fichero de configuración de muestra (integrationRuntime-settings.json)
{
"traceRoutes": "false",
"OutboundTimeout": "1",
"Thingworx": {
"appKey": "1234abcd-xxxx-yyyy-zzzz-5678efgh",
"host": "localhost",
"port": "8443",
"basePath": "/Thingworx",
"sslEnable": "true",
"ignoreSSLErrors": "false"
},
"Performance": {
"minPoolSize":"4",
"maxPoolSize":"10",
"maxThreadLife":"10000",
"maxQueueSize":"1000"
},
"Proxy": {
"host":"localhost",
"port":"8888",
"user":"<proxy username>",
"pass":"<proxy password>"
},
"SSL": {
"verbose": "true",
"Keystore": {
"path": "/usr/security/keystore.jks",
"password": "encrypt.keystore.password"
},
"Truststore": {
"path": "/usr/security/truststore",
"password": "encrypt.truststore.password"
}
},
"RetryPolicy": {
"MaximumRetries": 2,
"RetryDelay": 2000,
"BackoffMultiplier": 1
},
"RedirectPolicy": {
"MaximumRedirects": 3,
"EnableRedirect": true
}
}
Opciones del fichero de configuración
Tal como se ha explicado en las descripciones, se pueden especificar algunas opciones de configuración o sustituir opciones del fichero de configuración por propiedades del sistema Java (por ejemplo, -D<name>=<value>).
Configuración de Integration Runtime
Configuración
Por defecto
Descripción
traceRoutes
false
Permite especificar si la ejecución del direccionador debe registrar los mensajes cuando se invoque cada procesador del direccionador.
ThingWorx
Permite especificar la configuración necesaria para conectarse a ThingWorx Platform (modo de servidor único) o al equilibrador de la carga de Connection Server (modo clúster), formateado como JSON.
SSL
Permite especificar las opciones de Secure Sockets Layer (SSL) en formato JSON.
Configuración de ThingWorx
Configuración
Por defecto
Descripción
appKey
Permite especificar la clave de aplicación desde ThingWorx Platform que se ha configurado para que la utilice esta instancia de Integration Runtime. Esta opción se puede sustituir por una propiedad del sistema Java.
* 
Consulte la siguiente sección para ver los pasos de cifrado.
basePath
/ThingWorx
Permite especificar la ruta base en el URI para ThingWorx Platform (modo de servidor único) o el equilibrador de la carga de Connection Server (modo clúster). Esta opción se puede sustituir por una propiedad del sistema Java.
OutboundTimeout
Tiempo de espera de conexión inactiva de WSCommnucationSubsystem
Permite especificar el tiempo de espera de Integration Runtime para cualquier solicitud de terceros en estado de espera. Si no se especifica ningún valor, Integration Runtime tomará el valor del tiempo de espera de conexión inactiva de WSCommunicationSubsytem.
Cuando se inicia Integration Runtime, se comparará el valor especificado en el fichero integrationRuntime-settings.json y el tiempo de espera de conexión inactiva de WSCommunictaionSubsystem. El valor inferior de estos dos valores se pasará a Integration Runtime.
El valor por defecto es 30 y se puede definir según sea necesario.
host
localhost
Permite especificar el host en el URI para ThingWorx Platform (modo de servidor único) o el equilibrador de la carga de Connection Server (modo clúster). Esta opción se puede sustituir por una propiedad del sistema Java.
port
443
Permite especificar el puerto en el URI para ThingWorx Platform (modo de servidor único) o el equilibrador de la carga de Connection Server (modo clúster). Esta opción se puede sustituir por una propiedad del sistema Java.
sslEnable
true
Permite especificar si se debe utilizar SSL para la conexión con ThingWorx Platform mediante WebSocket. Si es verdadero, se utiliza el protocolo "wss" para el URI. De lo contrario, se utiliza el protocolo "ws".
ignoreSSLErrors
false
Permite especificar si se deben desestimar los errores SSL. Este valor no se debe definir en verdadero en un entorno de producción.
Configuración de rendimiento
Configuración
Por defecto
Descripción
minPoolSize
4
El número mínimo de subprocesos asignados a una agrupación de procesamiento de eventos.
maxPoolSize
10
El número máximo de subprocesos asignados a una agrupación de procesamiento de eventos.
maxThreadLife
10000
Tiempo máximo de espera de respuesta para un subproceso.
maxQueueSize
1000
Número máximo de entradas en la cola antes de añadir un nuevo subproceso de trabajo.
[Opcional] Configuración de proxy
Configuración
Por defecto
Descripción
host
N/D
El nombre del host Proxy.
port
N/D
El número de puerto del host Proxy.
User
N/D
El nombre de usuario del host Proxy.
Pass
N/D
La contraseña del host Proxy.
Configuración de SSL
Configuración
Por defecto
Descripción
verbose
false
Permite especificar si el protocolo de sincronización inicial de Java generará mensajes detallados. Si es verdadero, la propiedad del sistema Java javax.net.debug se define en ssl:handshake:verbose.
Keystore
Permite especificar las opciones de keystore de SSL en formato JSON.
Truststore
Permite especificar las opciones de truststore de SSL en formato JSON.
Configuración de keystore
Configuración
Descripción
path
Permite especificar la ruta para el fichero keystore de SSL. El uso de esta opción es equivalente a definir la propiedad del sistema Java javax.net.ssl.keyStore.
password
Permite especificar la contraseña para el fichero keystore de SSL. El uso de esta opción es equivalente a definir la propiedad del sistema Java javax.net.ssl.keyStorePassword. Para evitar el almacenamiento de la contraseña como texto sin formato, utilice el valor encrypt.keystore.password. Consulte la sección Configuración de la codificación de contraseñas.
Configuración de truststore
Configuración
Descripción
path
Permite especificar la ruta del fichero truststore de SSL. El uso de esta opción es equivalente a definir la propiedad del sistema Java javax.net.ssl.trustStore.
password
Permite especificar la contraseña del fichero truststore de SSL. El uso de esta opción es equivalente a definir la propiedad del sistema Java javax.net.ssl.trustStorePassword. Para evitar el almacenamiento de la contraseña como texto sin formato, utilice el valor encrypt.truststore.password. Consulte la sección Configuración de la codificación de contraseñas.
Configuración de directiva de reintento
Configuración
Por defecto
Descripción
MaximumRetries
2
Permite especificar el número de veces que se debe reintentar una solicitud después de que haya fallado debido a la disponibilidad del sistema.
En el caso de solicitudes HTTP, se producen reintentos con una respuesta 503 del servidor.
RetryDelay
1000
Cuando una solicitud falla, pero se puede reintentar, RetryDelay representa cuánto tiempo (en milisegundos) se debe esperar antes del reintento. RetryDelay se utilizará junto con BackoffMultiplier al determinar los reintentos posteriores.
BackoffMultiplier
1
Permite especificar cuánto tiempo se debe multiplicar RetryDelay en intentos posteriores. Por ejemplo, si BackoffMultiplier se ha definido en 2 y MaximumRetries se ha definido en 3, el primer reintento se producirá en 1 segundo; el segundo reintento se producirá 2 segundos después del primero; el tercero se producirá 4 segundos después, etcétera.
UnauthorizedRetries
2
Permite especificar el número de veces que se debe reintentar una solicitud que ha fallado debido a una solicitud sin autorización. Esta opción se aplica a una solicitud HTTP con una respuesta 401 del servidor.
Configuración de directiva de redirección
Configuración
Por defecto
Descripción
MaximumRedirects
3
Permite especificar el número de veces que se debe reintentar una redirección.
EnableRedirect
true
Permite especificar si se activa la redirección para las solicitudes cuyo resultado es un código de estado 3xx de redirección.
Cifrado del fichero de configuración
Para proporcionar mayor seguridad, se puede cifrar todo el fichero de configuración y, opcionalmente, valores individuales del fichero. Esta función se proporciona en la versión 8.0.4 o posteriores de Integration Runtime. En la instalación de Integration Runtime se incluye la biblioteca security-common. El fichero JAR de esta biblioteca se incluye en la instalación de Integration Runtime. En él se proporciona la herramienta back-end que realiza el cifrado y descifrado del fichero de configuración.
Está disponible una interfaz de línea de comandos (CLI) para interactuar con la biblioteca de seguridad, que incluye el cifrado del fichero de configuración. Para obtener información completa sobre esta CLI, consulte Herramienta de gestión de seguridad. En este tema se explica dónde se puede obtener la herramienta y cómo utilizarla. Para la comodidad del usuario, en las siguientes secciones se proporcionan los pasos específicos de Integration Runtime. La CLI se puede descargar del sitio de soporte de PTC.
1. La biblioteca security-common requiere su propio fichero de configuración. Mediante un editor de texto, cree el siguiente fichero y guárdelo como encryption.conf:
{
security {
secret-provider = "com.thingworx.security.provider.keystore.KeyStoreProvider"
default-encryption-key-length = 128
keystore {
password-file-path = "/ThingworxPlatform"
password-file-name = "keystore-password"
path = "/ThingworxStorage"
name = "keystore"
}
}
}
2. Cree los directorios password-file-path y path especificados en el fichero encryption.conf. En el ejemplo anterior, el directorio password-file-path es /ThingworxPlatform (Linux). En un ordenador Windows, sería C:\\ThingworxPlatform.
* 
El fichero de configuración cifrado se puede almacenar en cualquier lugar. Asegúrese de que el fichero de configuración de codificación y las variables de entorno apunten a la ruta correcta.
3. Suponiendo que se haya descargado y extraído la distribución de CLI, se puede cifrar el fichero de configuración. Abra un símbolo del sistema o shell y navegue hasta el directorio securitycommon-cli-x.x.x.xx/bin, donde x.x.x.xx representa la versión de la herramienta.
4. Ejecute la CLI, según corresponda al sistema operativo:
Linux: security-common-cli
Windows: security-common-cli.bat
5. Cuando se le solicite, introduzca el nombre del fichero de configuración de seguridad que se debe inicializar. A continuación, se muestra un ejemplo de la secuencia para Linux:
../security-common-cli-1.x.x.xx/bin$ ./security-common-cli
Not initialized, use 'init <config-file>' to initialize
> init [pathTo]encryption.conf
Loading config from file encryption.conf
Secret Provider: com.thingworx.security.provider.keystore.KeyStoreProvider
KeyStore
Path: /ThingworxPlatform/keystore
Password File: /ThingworxStorage/keystore-password
Keystore Password: 336974503775017XXXX
>
6. En la CLI de seguridad, se puede cifrar el fichero de configuración de Integration Runtime. En este ejemplo, es integrationRuntime-settings.json con el comando encryptFile, tal como se muestra a continuación:
encryptFile C:\Integ_runtime\integrationRuntime-settings.json C:\Integ_runtime\integrationRuntime-settings.json.encrypted
integrationRuntime-settings.json.encrypted es el fichero de configuración cifrado.
7. Verifique que la codificación se ha realizado correctamente con el comando decryptFile:decryptFile C:\Integ_runtime\integrationRuntime-settings.json.encrypted C:\Integ_runtime\integrationRuntime-settings.json.decrypted
* 
El contenido de integrationRuntime-settings.json.decrypted debe coincidir con el contenido del fichero integrationRuntime-settings.json original.
* 
Quite las versiones sin cifrar del fichero.
8. Para cerrar la CLI, escriba exit en el símbolo del sistema.
Cifrado de entradas en el fichero de configuración
Las contraseñas u otras entradas del fichero de configuración se pueden cifrar en Integration Runtime 8.0.4 o versiones posteriores. Utilice el mismo mecanismo de cifrado para ThingWorx Platform que el que se utiliza para cifrar la contraseña de base de datos PostgreSQL.
Siga las instrucciones del tema Cifrado de contraseñas, pero utilice los valores encrypt.app.key en lugar de encrypt.db.password o encrypt.licensing.password, y utilice integrationRuntime-settings.json en lugar de platform-settings.json. Si el sistema ThingWorx ya utiliza la codificación para la contraseña de base de datos PostgreSQL, las nuevas contraseñas se añaden al mismo fichero keystore. De lo contrario, se crea un nuevo fichero keystore.
Migración de keystore y la contraseña de keystore
Si se ha utilizado un keystore para cifrar valores y ahora se está realizando una migración, realice los siguientes pasos en los ficheros de keystore y contraseña:
1. Si Integration Runtime sigue utilizando twx/config y /ThingworxStorage/keyStore como ficheros de keystore, realice lo siguiente:
Copie /twx/config en /ThingworxPlatform/keystore-password
Copie /ThingworxStorage/keyStore en /ThingworxStorage/keystore.jks
2. A partir de ThingWorx 8.5, el formato de keystore ha cambiado de .jks a .pfx. Es necesario migrar el keystore. Para obtener más información, consulte "Cambios en ThingWorx 8.5" del tema Herramienta de gestión de seguridad.
3. Este paso varía en función de si Integration Runtime comparte ficheros keystore con el Keystore del servidor ThingWorx 8.5 o versiones posteriores:
Si comparte ficheros keystore con el Keystore de ThingWorx Platform 8.5 o versiones posteriores, siga el manual Upgrading ThingWorx para que el servidor ThingWorx migre automáticamente el fichero keystore del formato ".jks" anterior al nuevo formato ".pfx".
Si no comparte ficheros keystore con la plataforma, siga estos pasos:
a. Descargue la versión más reciente de security-common-cli. Para obtener ayuda, consulte la sección "Uso" del tema Herramienta de gestión de seguridad.
b. Inicie la CLI y el keystore se migrará automáticamente. Por ejemplo:

./security-common-cli encryption.conf
c. En el fichero encryption.conf, cambie todas las referencias a keystore.jks por keystore. No incluya la extensión de fichero .pfx.
d. Realice una copia de seguridad del fichero keystore.jks anterior en una ubicación segura y quítelo del directorio ThingworxStorage.
Configuración para SSL
Por defecto, Integration Runtime se conecta a ThingWorx mediante SSL. En la siguiente tabla se describen las configuraciones de ThingWorx Platform y las opciones de configuración de Integration Runtime asociadas que son necesarias para conectarse correctamente. Las opciones de keystore no son necesarias para conectarse a ThingWorx Platform; proporcionan un certificado de cliente de Integration Runtime en una negociación bidireccional SSL.
Configuración de ThingWorx
Configuración de Integration Runtime
ThingWorx no está configurado para SSL.
Especifique thingworxUri mediante una propiedad del sistema Java y utilice el protocolo ws o especifique sslEnable=false en las opciones de SSL.
ThingWorx se ha configurado para SSL mediante un certificado autofirmado.
Especifique el elemento sslEnable=true y el elemento ignoreSSLErrors=true en la configuración de SSL.
ThingWorx se ha configurado para SSL con un certificado autofirmado y el certificado es de confianza.
ThingWorx se ha configurado para SSL con un certificado firmado por una entidad de certificación (CA) y no se ha configurado para proporcionar toda la cadena del certificado de CA.
Exporte el certificado del fichero keystore e impórtelo a un fichero truststore.
Especifique el elemento enable=true y el elemento Trustore en la configuración de SSL.
La contraseña de truststore se puede codificar.
Como alternativa, añada el certificado al fichero truststore por defecto de JVM de Integration Runtime (ubicado normalmente aquí: $JAVA_HOME/lib/security/cacerts). En este caso, no es necesario especificar explícitamente Truststore en las opciones de SSL.
ThingWorx se ha configurado para SSL con un certificado firmado por una entidad de certificación (CA) y se ha configurado para proporcionar toda la cadena del certificado de CA.
Especifique enable=true en las opciones de SSL. Esta es la configuración por defecto.
Ejemplo de configuración de SSL: configuración de no producción
Si ThingWorx se ha configurado para SSL mediante un certificado autofirmado, utilice el siguiente fichero integrationRuntime-settings.json.
{
"Thingworx": {
"appKey": "1234abcd-xxxx-yyyy-zzzz-5678efgh",
"host": "localhost",
"port": "8443",
"sslEnable": "true",
"ignoreSSLErrors": "true"
}
}
Ejemplo de configuración de SSL: configuración de producción
Si ThingWorx se ha configurado para SSL mediante un certificado autofirmado, realice los siguientes pasos para crear un truststore:
1. Extraiga el certificado autofirmado del servidor. Se utiliza en el paso siguiente para forzar que Integration Runtime confíe en él.
Si el certificado no está almacenado localmente, esta es una manera de adquirir el certificado autofirmado de ThingWorx Platform.
openssl s_client -connect your-ThingWorx-platform:8443< /dev/null| sed -ne'/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'twx-platform-public.crt
2. Cree una copia local del truststore que Integration Runtime utilizará para confiar en el certificado autofirmado del servidor.
En lugar de añadir el certificado que falta directamente al truststore de material de JVM, primero guarde una copia y luego añada el certificado que falta a la copia.
cp $JAVA_HOME/jre/lib/security/cacerts /etc/opt/java/security/cacerts-customized
$JAVA_HOME/bin/keytool -importcert -alias somealias -keystore /etc/opt/java/security/cacerts-customized -file twx-platform-public.crt
3. Cambie la contraseña el truststore.
La contraseña por defecto para el fichero cacerts de JVM es changeit. De manera similar al cambio de contraseña de cualquier otro keystore, se podría cambiar la contraseña de cacerts-customized emitiendo lo siguiente:
keytool storepasswd keystore /etc/opt/java/security/cacerts-customized
Enter keystore password: changeit
New keystore password: new-password
Re-enter new keystore password: new-password
4. Utilice lo siguiente integrationRuntime-settings.json.
{
"Thingworx": {
"appKey": "1234abcd-xxxx-yyyy-zzzz-5678efgh",
"host": "localhost",
"port": "8443",
"sslEnable": "true",
"ignoreSSLErrors": "false"
}
"SSL": {
"Truststore": {
"path": "/etc/opt/java/security/cacerts-customized",
"password": "new-password"
}
}
}
Ejemplo de fichero de configuración del registro (integrationRuntime-logback.xml)
<?xml version="1.0"?>
<included>
<property name="logs.dir" value="/ThingworxStorage/IRlogs" />
<property name="logs.uniqueId" value="${processId}" />
<property name="logs.maxFileSize" value="1MB" />
<property name="logs.maxIndex" value="5" />
<logger name="com.twx.integration" level="DEBUG" />
<logger name="org.apache.camel" level="DEBUG" />
</included>
Opciones del fichero de configuración del registro
El fichero de configuración estándar logback.xml se incluye en el fichero IntegrationRuntime.jar. Para obtener más información sobre la configuración de logback, consulte Logback Project. En este fichero se configura el registrador raíz con el registro en la consola y un fichero de registro de sustitución incremental. Se puede especificar un fichero de inclusión opcional mediante esta propiedad del sistema Java: logs.includedLogback. Utilice el fichero de inclusión para activar otros registradores y especificar propiedades. El fichero de registro de sustitución incremental se configura con una ventana fija y directivas de activación basadas en el tamaño. Se puede personalizar definiendo las siguientes propiedades:
Configuración
Por defecto
Descripción
logs.dir
Permite especificar la ubicación donde se generarán los ficheros de registro. El valor por defecto es el directorio de trabajo actual.
logs.maxFileSize
5 MB
Permite especificar el tamaño máximo de fichero de registro que activa la sustitución incremental para un nuevo fichero de registro.
logs.maxIndex
9
Permite especificar el índice máximo de la ventana de sustitución incremental de tamaño fijo. El índice inicial empieza en 1.
logs.timestampPattern
aaaa-dd-MM HH:mm:ss.SSS
Permite especificar el patrón de fecha y hora que se va a utilizar para cada evento de registro.
logs.uniqueId
<processId>
Permite especificar un valor que se incorpora al nombre de fichero de registro. Se utiliza para generar nombres de fichero únicos. El valor por defecto se obtiene mediante una llamada Java para devolver el ID de proceso de JVM.
¿Fue esto útil?