ThingWorx 고가용성 > ThingWorx HA에서 ThingWorx Extension 관리
ThingWorx HA에서 ThingWorx Extension 관리
ThingWorx HA 구성에서 ThingWorx Extension은 데이터베이스에 저장되고 로컬 파일 시스템에 캐시됩니다. 이는 새 ThingWorx 리더가 데이터베이스에 저장된 최신 확장을 사용하여 작업을 다시 시작할 수 있게 하기 위한 것입니다.
시작하는 동안 ThingWorx 리더는 데이터베이스에 확장에 대한 업데이트가 있는지 확인하고 로컬에서 적용합니다. 데이터베이스의 확장과 로컬 ThingworxStorage/extensions 디렉터리의 확장이 불일치할 경우 ThingWorx는 데이터베이스 버전이 최신이고 로컬 ThingworxStorage/extensions 버전이 오래된 것으로 간주합니다.
확장 가져오기 프로세스
확장을 가져올 때 시스템에서는 다음을 수행합니다.
1. 확장 zip 파일에 대해 체크섬을 수행하고 ThingworxStorage/extensions/<확장 이름> 디렉터리에 <확장 이름>.chk 파일로 저장합니다.
2. ThingworxStorage/extensions/<확장 이름> 디렉터리에 zip의 압축을 풉니다.
3. 데이터베이스에 ExtensionPackage 엔티티(및 다른 엔티티)를 만들고 배포하고 지속합니다.
4. zip 파일과 체크섬을 데이터베이스에 지속합니다.
이러한 단계를 수행하는 동안 시스템이 실패하면 가져오기를 중단하려고 시도합니다. zip은 마지막까지 지속되어 확장을 배포하는 데 실패하면 다른 대기 노드가 선택할 수 있도록 확장이 데이터베이스에 배포되지 않으므로 손상이 야기됩니다.
ThingWorx 리더 확장 검토 프로세스
ThingWorx 리더가 시작되면 각 확장에 대해 다음 단계가 수행됩니다.
1. 확장이 배포 취소됩니다.
2. 해당 체크섬 값이 ThingworxStorage/extensions/<확장 이름>/<확장 이름>.chk라는 체크섬 파일에서 읽힙니다.
3. 확장의 체크섬 값은 지속성 레이어에서 읽습니다.
4. 이 두 체크섬 값이 비교됩니다.
a. 체크섬 값이 동일할 경우
a. ThingWorx에서는 데이터베이스와 로컬 확장이 일치하는 것으로 간주합니다.
b. 변경이 수행되지 않습니다.
b. 체크섬 값이 일치하지 않을 경우
a. 확장의 zip 복사본을 지속성 레이어에서 읽습니다.
b. 복사본이 ThingworxStorage/extensions/temp/<확장 이름><임의>과 같은 임시 디렉터리에 추출됩니다.
c. 확장의 이전 버전이 ThingworxStorage/extensions/<확장 이름>에서 삭제됩니다.
d. 추출된 zip의 복사본이 이전 확장 디렉터리 ThingworxStorage/extensions/<확장 이름>에 복사됩니다.
e. 새 체크섬 파일이 확장 디렉터리 ThingworxStorage/extensions/<확장 이름>/<확장 이름>.chk에 작성됩니다.
f. 확장이 배포됩니다.
위의 단계 중 시스템이 실패하면 정리할 수 있는 항목을 정리하려고 합니다. 확장의 이전 복사본을 지속성 레이어의 복사본과 바꿀 수 없는 경우 이전 복사본이 로드됩니다.
확장 제거 프로세스
확장이 삭제되면 다음과 같은 결과가 발생합니다.
1. 확장이 배포 취소됩니다.
2. 데이터베이스에서 zip이 삭제됩니다.
3. 데이터베이스에서 ExtensionPackage 엔티티가 삭제됩니다.
4. 체크섬을 포함하여 ThingworxStorage/extensions/<확장 이름> 디렉터리가 삭제됩니다.