Настройки платформы для ThingWorx HA
Как и для всех развертываний ThingWorx, для развертывания кластеризации ThingWorx требуется, чтобы файл platform-settings.json существовал в расположении хранилища ThingworxPlatform. Каждый сервер будет иметь свою собственную папку ThingworxPlatform, а файл platform-settings.json для каждого сервера будет иметь небольшие отличия.
Дополнительные сведения о настройках platform-settings.json и пример базового файла platform-settings.json см. в разделе Сведения о конфигурации platform-settings.json.
Для кластерной системы наиболее важные настройки описаны ниже.
Базовые настройки
Основная настройка
По умолчанию
Описание
EnableClusteredMode
false
Определяет, будет ли ThingWorx выполняться как кластер (настройка true) или как автономный сервер (настройка false).
Настройки политики импорта пакета расширений
Настройка политики импорта пакета расширений
По умолчанию
Описание
haCompatibilityImportLevel
WARN
При выполнении ThingWorx в кластерном режиме можно ограничить импорт расширений только теми, для которых для флага haCompatibility в метаданных расширения задано значение true. По умолчанию задана настройка WARN, которая разрешает импорт, но генерирует предупреждение. Можно изменить ее значение на DENY; в этом случае импорт завершается сбоем и генерируется ошибка.
Настройки режима кластеризации
Настройки, специфичные для выполнения ThingWorx в кластерном режиме. Все настройки игнорируются, если описанная выше настройка EnableClusteredMode имеет значение false.
Настройка кластерного режима
По умолчанию
Описание
PlatformId
none
Уникальный идентификатор для каждого узла в кластере. Этот идентификатор будет отображаться в объединенных журналах. Должен быть буквенно-цифровым и не превышать 32 символа. Он должен соответствовать шаблону "^[a-zA-Z0-9]{1,32}$".
CoordinatorHosts
none
Разделенный запятыми список серверов Apache ZooKeeper, используемых для координации выбора ведущего объекта ThingWorx. Шаблон строки: "IP:port". (например, "127.0.0.1:2181, 127.0.0.2:2181").
ZKNamespace
ThingWorx
* 
Для версий ThingWorx 9.3.0 и выше настройка режима кластеризации изменяется на none.
Корневой путь узла, используемый для отслеживания информации в ZooKeeper для кластера. Это требуется при выполнении нескольких кластеров с использованием одного и того же ZooKeeper. Применяются ограничения именования ZooKeeper; см. документ http://zookeeper.apache.org/doc/current/zookeeperProgrammers.html#ch_zkDataModel (на английском языке).
ModelSyncPollInterval
100
Частота синхронизации модели между серверами в кластере в миллисекундах. Каждый сервер будет проверять с этой частотой наличие изменений модели и применять все обнаруженные изменения.
ModelSyncWaitPeriod
3000
При обмене данными через WebSocket трафик направляется на серверы с циклическим обходом. Если изменение модели выполняется через WebSocket, следующий запрос будет ожидать, пока не пройдет указанное время в миллисекундах для синхронизации модели на любом сервере, на который он попадает. Если синхронизация не выполняется до истечения тайм-аута, запрос завершается сбоем с ошибкой тайм-аута.
ModelSyncTimeout
120000
Время ожидания (в миллисекундах) каждой повторной попытки.
ModelSyncMaxDBUnavailableErrors
10
Число разрешенных последовательных сбоев синхронизации из-за потери соединения с базой данных до завершения работы сервера. Интервал времени в миллисекундах приблизительно равен произведению ModelSyncPollInterval на это значение.
ModelSyncMaxCacheUnavailableErrors
10
Число разрешенных последовательных сбоев синхронизации из-за потери соединения с кэшем до завершения работы сервера. Интервал времени в миллисекундах приблизительно равен произведению ModelSyncPollInterval на это значение.
CoordinatorMaxRetries
3
В случае сбоя связи с координатором он будет повторен n раз перед сбоем.
CoordinatorSessionTimeout
90000
Время (в миллисекундах), в течение которого ThingWorx ожидает получения контрольного сигнала от сервиса Apache ZooKeeper, используемого для координации приоритета ThingWorx.
CoordinatorConnectionTimeout
10000
Промежуток времени (в миллисекундах), в течение которого система будет ожидать соединения с координатором.
MetricsCacheFrequency
60000
Метрики отслеживаются по серверам и суммируются для метрик уровня кластера. Это значение представляет частоту (в миллисекундах), с которой обновляются метрики кластера.
IgnoreInactiveInterfaces
true
Необязательная настройка. Если включен режим кластера, предпринимается попытка зарегистрировать сервер ThingWorx как сервис с помощью поставщика обнаружения сервисов. Для этого проводится поиск всех доступных адаптеров и их адресов и предпринимается попытка найти локальный адрес для сайта. Если не найден ни один из них, используется первый найденный адрес, который не является локальным для сайта. Эта настройка влияет на следующую логику. Если эта настройка имеет значение true, неактивные интерфейсы игнорируются.
IgnoreVirtualInterfaces
true
Необязательная настройка. Если эта настройка имеет значение true, виртуальные интерфейсы игнорируются. Дополнительные сведения см. в описании настройки IgnoreInactiveInterfaces выше.
HostAddressFilter
none
Необязательная настройка. Если значение задано, выполняется фильтрация адресов на основе регулярного выражения; иначе фильтр не применяется. Например, укажите “10\\\\..” для отбора адресов, которые начинаются с 10, или “^.:.*$” для отбора адресов, которые содержат :. Дополнительные сведения см. в описании настройки IgnoreInactiveInterfaces выше.
Настройки кэша
В этом разделе доступно несколько конфигураций, но в целом необходимо изменить только следующие параметры, если только не выполняется настройка среды.
Настройка
По умолчанию
Описание
basePath
/services
Ignite создаст папку Ignite в basePath, в которой сохраняются записи узла Ignite для обнаружения сервисов. При использовании одного сервера ZooKeeper для нескольких экземпляров кластера измените значение по умолчанию на /clusterXX/services в конфигурации клиента Ignite и на стороне сервера Ignite. Дополнительные сведения см. в документе Конфигурирование центрального кластера ZooKeeper.
* 
Эта настройка basePath применима только к версиям ThingWorx 9.3.0 и выше.
client-mode
true
Определяет, будет ли встроенный Ignite выполняться как клиент (по умолчанию) или как сервер. В режиме сервера он участвует в хранении данных и будет использовать больше памяти.
connection
none
Для типа address-resolver type опции zookeeper - это разделенный запятыми список серверов Apache Zookeeper, используемых для координирования выбора ведущего сервера ThingWorx. Строковый шаблон - IP:порт (например, 127.0.0.1:2181, 127.0.0.2:2181).
default-cache-mode
none
Можно задать значение REPLICATED или PARTITIONED. Если задано значение PARTITIONED, данные распределяются по кластеру и реплицируются на другие серверы в соответствии с настройкой backups. Если задано значение REPLICATED, все данные из всех кэшей сохраняются на всех серверах в кластере Ignite.
Настройки зависят от требований высокой доступности системы и количества выполняемых серверов Ignite.
default-atomicity-mode
ATOMIC
Режим атомарности кэша определяет, поддерживает ли кэш полную семантику транзакции или более облегченное атомарное поведение. Режим ATOMIC необходимо использовать, если не требуются транзакции и явная блокировка. В режиме ATOMIC кэш будет поддерживать полную согласованность данных во всех узлах кэша.
default-backups
none
Эта настройка применяется только в том случае, если для cache-mode задано значение PARTITIONED. Она определяет число серверов, которые будут сохранять копии данных. Для среды HA необходимо задать значение 1 или выше.
default-read-from-backup
false
При работе во встроенном режиме (client-mode имеет значение false) задайте для default-read-from-backup значение true, чтобы в кэш читались локальные данные и повышалась производительность.При выполнении в распределенном режиме эта настройка не дает преимущества, поскольку всегда требуется переходить в сети к другому узлу. В этом случае необходимо задать для нее значение false.
default-write-sync-mode
PRIMARY_SYNC
Можно изменить эту настройку следующим образом:
FULL_ASYNC
Ignite не будет ждать ответы записи или фиксации из участвующих узлов; поэтому удаленные узлы могут получать обновление своего состояния после завершения методов записи кэша или после завершения метода Transaction.commit().
FULL_SYNC
Ignite должен ждать ответа о записи или фиксации из всех узлов.
PRIMARY_SYNC
Эта настройка предназначена только для режимов CacheMode.PARTITIONED и CacheMode.REPLICATED.
FULL_ASYNC
Не рекомендуется. Предотвращает возможность потери данных при сбое системы, но снижает производительность записи.
provider-type
none
Необходимо задать значение "com.thingworx.cache.ignite.IgniteCacheProvider", которое включает распределенный кэш.
Настройки ThingWorx Flow
Скопируйте раздел OrchestrationSettings в файл platform-settings.json с компьютера установки ThingWorx Flow.
Для настройки QueueHost измените значение localhost на фактическое значение хост-компьютера установки ThingWorx Flow во время установки RabbitMQ. Дополнительные сведения о других настройках ThingWorx Flow см. в разделе Сведения о конфигурации platform_settings.json.
При установке HA на Ubuntu 22.04 или более позднюю версию добавьте параметр “basePath” : “/services” в файл platform-settings.json в блоке:
"cache": {
"provider-type": "com.thingworx.cache.ignite.IgniteCacheProvider",
"ignite": {
Пример
{
"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"
}
}
}
Было ли это полезно?