ThingWorx a disponibilità elevata > Configurazione di ThingWorx Foundation per il clustering > Impostazioni di piattaforma per ThingWorx a disponibilità elevata
Impostazioni di piattaforma per ThingWorx a disponibilità elevata
Come per tutte le distribuzioni di ThingWorx, una distribuzione di clustering ThingWorx richiede che il file platform-settings.json sia presente nella posizione di archiviazione ThingworxPlatform. Ogni server disporrà della propria cartella ThingworxPlatform e il file platform-settings.json di ogni server presenterà differenze minori.
Per ulteriori informazioni sulle impostazioni del file platform-settings.json e per visualizzare un esempio di file platform-settings.json generico, vedere Dettagli di configurazione di platform-settings.json.
Di seguito sono descritte le impostazioni più rilevanti per un sistema cluster.
Impostazioni di base
Impostazione di base
Default
Descrizione
EnableClusteredMode
false
Determina se ThingWorx verrà eseguito come cluster (l'impostazione è true) o server indipendente (l'impostazione è false).
Impostazioni della regola di importazione di package di estensioni
Impostazione della regola di importazione di package di estensioni
Default
Descrizione
haCompatibilityImportLevel
WARN
Quando si esegue ThingWorx in modalità cluster, è possibile limitare l'importazione delle estensioni solo a quelle il cui flag haCompatibility è impostato su true nei metadati dell'estensione. L'impostazione di default è WARN, che consente l'importazione ma genera un messaggio di avvertenza. È possibile modificare l'impostazione in DENY. In questo caso, l'importazione ha esito negativo e viene generato un errore.
Impostazioni della modalità cluster
Impostazioni specifiche dell'esecuzione di ThingWorx nella modalità cluster. Tutte le impostazioni vengono ignorate se l'impostazione EnableClusteredMode precedente è impostata su false.
Impostazione modalità cluster
Default
Descrizione
PlatformId
none
Identificatore univoco per ogni nodo nel cluster. Questo ID viene visualizzato nei log aggregati. Deve essere un valore alfanumerico e non può superare 32 caratteri. Deve coincidere con lo schema "^[a-zA-Z0-9]{1,32}$".
CoordinatorHosts
none
Elenco delimitato da virgole dei server Apache ZooKeeper utilizzato per coordinare l'elezione della priorità di ThingWorx. Lo schema della stringa è IP:porta (ad esempio "127.0.0.1:2181, 127.0.0.2:2181").
ZKNamespace
ThingWorx
* 
Per ThingWorx 9.3.0 e versioni successive, l'impostazione della modalità cluster cambia in none.
Percorso del nodo radice utilizzato per monitorare le informazioni in ZooKeeper per il cluster. È necessario quando si eseguono più cluster con lo stesso ZooKeeper. Sono applicabili le limitazioni di denominazione di ZooKeeper. Vedere http://zookeeper.apache.org/doc/current/zookeeperProgrammers.html#ch_zkDataModel.
ModelSyncPollInterval
100
Frequenza di sincronizzazione, in millisecondi, del modello tra i server nel cluster. Ogni server verificherà le modifiche apportate al modello a questa frequenza e applicherà quelle rilevate.
ModelSyncWaitPeriod
3000
Quando si comunica tramite i WebSocket, il traffico viene instradato attraverso i server nella modalità round-robin. Se si apporta una modifica a un modello tramite i WebSocket, la richiesta successiva attende che trascorra il tempo specificato in millisecondi affinché il modello si sincronizzi sul server su cui viene eseguito. Se non si verifica alcuna sincronizzazione prima del timeout, la richiesta ha esito negativo e viene restituito un errore di timeout.
ModelSyncTimeout
120000
Intervallo di attesa (in millisecondi) per ogni nuovo tentativo.
ModelSyncMaxDBUnavailableErrors
10
Numero di errori di sincronizzazione consecutivi della connettività con il database persa che sono consentiti prima dell'arresto del server. L'intervallo di tempo in millisecondi è di circa ModelSyncPollInterval * questo valore.
ModelSyncMaxCacheUnavailableErrors
10
Numero di errori di sincronizzazione consecutivi della connettività con la cache persa che sono consentiti prima dell'arresto del server. L'intervallo di tempo in millisecondi è di circa ModelSyncPollInterval * questo valore.
CoordinatorMaxRetries
3
Nel caso in cui non sia possibile comunicare con il coordinatore, vengono effettuati n tentativi prima che venga restituito un esito negativo.
CoordinatorSessionTimeout
90000
Tempo (in millisecondi) che ThingWorx attende senza ricevere un "heartbeat" dal servizio Apache ZooKeeper utilizzato per coordinare la priorità di ThingWorx.
CoordinatorConnectionTimeout
10000
Quantità di tempo (in millisecondi) che il sistema attende affinché venga stabilita una connessione con il coordinatore.
MetricsCacheFrequency
60000
Le metriche vengono monitorate per ogni server e aggregate per le metriche a livello di cluster. Questo valore è la frequenza (in millisecondi) di aggiornamento delle metriche del cluster.
IgnoreInactiveInterfaces
true
Facoltativo. Quando la modalità cluster è attivata, viene effettuato il tentativo di registrare il server ThingWorx come servizio con un provider di individuazione dei servizi. A tale scopo, vengono esaminati tutti gli adattatori disponibili e i relativi indirizzi e si tenta di trovare un indirizzo locale rispetto al sito. Se non è possibile trovarlo, viene utilizzato il primo indirizzo non locale rispetto al sito che viene rilevato. Questa impostazione ha un impatto su questa logica. Quando questa impostazione è true, le interfacce inattive vengono ignorate.
IgnoreVirtualInterfaces
true
Facoltativo. Quando questa impostazione è true, le interfacce virtuali vengono ignorate. Per ulteriori informazioni, vedere la descrizione di IgnoreInactiveInterfaces sopra.
HostAddressFilter
none
Facoltativo. Se specificato, gli indirizzi vengono filtrati in base all'espressione regolare. In caso contrario, non viene applicato alcun filtro. Ad esempio, specificare “10\\\\..” per filtrare gli indirizzi che iniziano con 10 oppure “^.:.*$” per filtrare gli indirizzi che contengono :. Per ulteriori informazioni, vedere la descrizione di IgnoreInactiveInterfaces sopra.
Impostazioni della cache
In questa sezione sono disponibili più configurazioni, ma in genere è necessario modificare solo le opzioni riportate di seguito, a meno che non si desideri procedere all'ottimizzazione per un ambiente.
Impostazione
Default
Descrizione
basePath
/services
Ignite crea una cartella Ignite in basePath, cui vengono memorizzate le voci del nodo Ignite per l'individuazione dei servizi. Se si utilizza un solo ZooKeeper per più istanze cluster, modificare il valore di default su /clusterXX/services nella configurazione client e sul lato server di Ignite. Per ulteriori informazioni, vedere Configurazione di un cluster ZooKeeper centrale.
* 
L'impostazione basePath è applicabile solo a ThingWorx 9.3.0 e versioni successive.
client-mode
true
Determina se Ignite incorporato viene eseguito come client (impostazione di default) o server. Nella modalità server partecipa alla memorizzazione dei dati e utilizza più memoria.
connection
none
Per address-resolver type di zookeeper si tratta di un elenco separato da virgole dei server Apache ZooKeeper utilizzati per coordinare l'elezione del leader ThingWorx. La serie di stringhe è IP:porta (ad esempio, 127.0.0.1:2181, 127.0.0.2:2181).
default-cache-mode
none
Può essere impostato su REPLICATED o PARTITIONED. Se impostato su PARTITIONED, i dati vengono distribuiti nel cluster e replicati in altri server in base all'impostazione backups. Se impostato su REPLICATED, tutti i dati di tutte le cache vengono memorizzati in tutti i server del cluster Ignite.
Le impostazioni variano a seconda dei requisiti di disponibilità elevata del sistema e del numero di server Ignite in esecuzione.
default-atomicity-mode
ATOMIC
La modalità di atomicità della cache determina se la cache mantiene la semantica transazionale completa o un comportamento atomico più leggero. La modalità ATOMIC deve essere utilizzata quando le transazioni e il blocco esplicito non sono necessari. In modalità ATOMIC, la cache mantiene la congruenza completa dei dati in tutti i nodi della cache.
default-backups
none
Questa impostazione è applicabile solo se l'opzione cache-mode è impostata su PARTITIONED. Definisce il numero di server che manterranno una copia dei dati. Per un ambiente a disponibilità elevata, deve essere impostata su 1 o un valore superiore.
default-read-from-backup
false
Quando si opera in modalità incorporata (client-mode è impostata su false), impostare default-read-from-backup su true in modo che la cache legga localmente e che aumentino le prestazioni.Quando si opera in modalità distribuita, questa impostazione non ha alcun vantaggio in quanto è sempre necessario passare per la rete per raggiungere un altro nodo. In tal caso, deve essere impostata su false.
default-write-sync-mode
PRIMARY_SYNC
È possibile modificare questa impostazione come indicato di seguito.
FULL_ASYNC
Ignite non attende risposte di scrittura o commit dai nodi partecipanti, pertanto lo stato dei nodi remoti potrebbe essere aggiornato dopo il completamento dei metodi di scrittura della cache o del metodo Transaction.commit().
FULL_SYNC
Ignite deve attendere le risposte di scrittura o commit da tutti i nodi.
PRIMARY_SYNC
Questa impostazione è valida solo per le modalità CacheMode.PARTITIONED e CacheMode.REPLICATED.
FULL_ASYNC
Non consigliata. Garantisce che non si verifichino perdite di dati in caso di errore del sistema, ma rallenta le prestazioni di scrittura.
provider-type
none
Deve essere impostata su "com.thingworx.cache.ignite.IgniteCacheProvider", che attiva la cache distribuita.
Impostazioni di ThingWorx Flow
Copiare la sezione OrchestrationSettings nel file platform-settings.json dal computer di installazione ThingWorx Flow.
Per l'impostazione QueueHost, sostituire il valore localhost con il valore host effettivo dell'installazione di ThingWorx Flow durante la quale è stato installato RabbitMQ. Per informazioni su altre impostazioni ThingWorx Flow, vedere Dettagli di configurazione di platform_settings.json.
Se si installa la disponibilità elevata in Ubuntu 22.04 o versioni successive, aggiungere il parametro “basePath” : “/services” al file platform-settings.json nel blocco:
"cache": {
"provider-type": "com.thingworx.cache.ignite.IgniteCacheProvider",
"ignite": {
Esempio
{
"PlatformSettingsConfig": {
"BasicSettings": {
"BackupStorage": "/ThingworxBackupStorage",
"EnableBackup": false,
"EnableClusteredMode": true,
"EnableSystemLogging": true,
"Storage": "/ThingworxStorage"
},
"ExtensionPackageImportPolicy": {
"importEnabled": true,
"allowJarResources": true,
"allowJavascriptResources": true,
"allowCSSResources": true,
"allowJSONResources": true,
"allowWebAppResources": true,
"allowEntities": true,
"allowExtensibleEntities": true
"haCompatibilityImportLevel":"WARN"
},
"OrchestrationSettings": {
"EnableOrchestration": true,
"QueueHost": "<RabbitMQ_Host>",
"QueuePort": 5672,
"QueueName": "256mb",
"QueueUsername": "flowuser",
"QueuePassword": "encrypt.queue.password",
"QueueVHost": "orchestration"
"TurnOffScopesApprovalPopup": true
},
"ClusteredModeSettings": {
"PlatformId": "platform1",
"CoordinatorHosts": "localhost:2181",
"ModelSyncPollInterval": 100
},
"AdministratorUserSettings": {
"InitialPassword": "YOU MUST SET A DEFAULT PASSWORD"
}
},
"PersistenceProviderPackageConfigs": {
"PostgresPersistenceProviderPackage": {
"ConnectionInformation": {
"jdbcUrl": "jdbc:postgresql://localhost:5432/thingworx",
"password": "thingworx",
"username": "thingworx"
}
}
},
"cache": {
"provider-type": "com.thingworx.cache.ignite.IgniteCacheProvider",
"ignite": {
"instance-name": "twx-core-server",
"default-cache-mode": "PARTITIONED",
"default-atomicity-mode": "ATOMIC", // never change
"default-backups": 1, // set based on failure tolerance
"default-write-sync-mode": "PRIMARY_SYNC", // never change
"default-read-from-backup": false, // only change to true if running 2 node embedded
"client-mode": true, // only false for embedded mode
"metrics-log-frequency": 0,
"address-resolver" : {
"type": "zookeeper",
"connection": "localhost:2181"
},
"ssl-active": "true",
"igniteKeyStoreFilePath": "/certs/ignite.pfx",
"igniteKeyStorePassword": "mykeystorepassword"
}
}
}
È stato utile?