ThingWorx HA에서 ThingWorx Extension 관리
ThingWorx 클러스터링 구성에서 ThingWorx Extension은 데이터베이스에 저장되고 로컬 파일 시스템에 캐시됩니다. 이는 각 ThingWorx 인스턴스가 데이터베이스에 저장된 최신 확장을 사용하고 있는지 확인하기 위한 것입니다.
시작하는 동안 ThingWorx는 데이터베이스에 확장에 대한 업데이트가 있는지 확인하고 로컬에서 적용합니다. 데이터베이스의 확장과 로컬 ThingworxStorage/extensions 디렉터리의 확장이 불일치할 경우 ThingWorx는 데이터베이스 버전이 최신이고 로컬 ThingworxStorage/extensions 버전이 오래된 것으로 간주합니다.
|
/ThingworxStorage/extensions 폴더는 HA 환경에서 공유되지 않아야 합니다.
|
확장 가져오기 프로세스
확장을 가져올 때 시스템에서는 다음을 수행합니다.
1. 확장 zip 파일에 대해 체크섬을 수행하고 ThingworxStorage/extensions/<확장 이름> 디렉터리에 <확장 이름>.chk 파일로 저장합니다.
2. ThingworxStorage/extensions/<확장 이름> 디렉터리에 zip의 압축을 풉니다.
3. 데이터베이스에 ExtensionPackage 엔티티(및 다른 엔티티)를 만들고 배포하고 지속합니다.
4. zip 파일과 체크섬을 데이터베이스에 지속합니다.
|
위의 단계를 수행하는 동안 시스템이 실패하면 가져오기를 중단하려고 시도합니다. zip 파일은 마지막에 지속됩니다. 이는 확장이 배포되지 않을 경우 데이터베이스에 배포되지 않으며 다른 대기 노드가 이를 선택하여 손상을 유발하는 것을 방지하기 위한 것입니다.
|
5. 모든 서버에서 확장을 동기화 및 설치합니다.
확장에 대한 동기화는 확장을 처음 설치하는 동안에만 수행할 수 있습니다. 클러스터의 각 서버는 개별적으로 동기화되고 최종적으로 일관성이 유지됩니다. 동기화 시간 동안에는 가져온 엔티티를 다른 서버에서 사용할 수 없으며 초기 가져오기가 발생한 서버에서만 사용할 수 있습니다.
동기화하는 데 시간이 오래 걸리는 확장 또는 많은 수의 확장을 가져오는 경우 클러스터를 단일 인스턴스 규모로 줄이고 확장을 설치한 다음 클러스터의 규모를 원래대로 다시 되돌리는 것이 좋습니다. 이렇게 하면 성능이 향상되고, 새 확장이 시작될 때 각 서버에 의해 로드되므로 최종적 일관성 문제를 방지할 수 있습니다.
|
확장 동기화가 실행되는 동안 해당 동기화가 완료될 때까지 다른 동기화가 백업됩니다.
|
확장 제거 프로세스
확장이 삭제되면 다음과 같은 결과가 발생합니다.
1. 확장이 배포 취소됩니다.
2. 데이터베이스에서 zip이 삭제됩니다.
3. 데이터베이스에서 ExtensionPackage 엔티티가 삭제됩니다.
4. 체크섬을 포함하여 ThingworxStorage/extensions/<확장 이름> 디렉터리가 삭제됩니다.
5. 모든 서버에서 확장을 동기화 및 제거합니다.
확장에 대한 동기화는 확장을 처음 삭제하는 동안에만 수행할 수 있습니다. 클러스터의 각 서버는 개별적으로 동기화되고 최종적으로 일관성이 유지됩니다.
동기화하는 데 시간이 오래 걸리는 확장 또는 많은 수의 확장을 가져오는 경우 클러스터를 단일 인스턴스 규모로 줄이고 확장을 삭제한 다음 클러스터의 규모를 원래대로 다시 되돌리는 것이 좋습니다. 이렇게 하면 성능이 향상되고 최종적 일관성 문제를 방지할 수 있습니다.
|
확장 동기화가 실행되는 동안 해당 동기화가 완료될 때까지 다른 동기화가 백업됩니다.
|