Paragon Insights TSDB(Time Series Database)
Paragon Insights(구 HealthBot)는 다양한 수집 방법을 통해 많은 데이터를 수집합니다. 이 모든 데이터는 일부 맥락에서 시간을 민감하게 합니다. 이것이 Paragon Insights 타임 시리즈 데이터베이스(TSDB)를 사용하여 다양한 네트워크 디바이스에서 수신한 모든 정보를 저장하고 관리하는 이유입니다. 이 주제에서는 TSDB에 대한 개요와 TSDB 관리에 대한 몇 가지 지침을 제공합니다.
기록 컨텍스트
릴리스 3.0.0보다 HealthBot 이전 릴리스에서는 Paragon Insights 단일 노드로 또는 다중 노드(Docker Ccompose) 설치로 실행했는지 여부에 관계없이 하나의 TSDB 인스턴스가 있었습니다. 그림 1 은 이런 모습에 대한 높은 수준의 뷰를 보여줍니다.
이 배열은 TSDB의 확장 또는 중복을 위한 여지가 없었습니다. 이중화 없이는 고가용성(HA)이 없습니다. 장애로 인해 운영을 계속하거나 누락된 데이터를 복원할 방법이 없습니다. 이 토폴로지에 Docker Compose 노드를 추가하면 TSDB 성능을 희생하면서 더 많은 Paragon Insights 처리 기능을 제공할 수 있습니다.
TSDB 개선 사항
이러한 문제를 해결하고 TSDB 고가용성(HA)을 제공하기 위해 HealthBot 릴리스 3.0.0에 다른 Paragon Insights 마이크로서비스용 Paragon Insights 노드*의 클러스터와 함께 3개의 새로운 TSDB 요소가 도입되었습니다.
– TSDB 데이터를 저장하고 Paragon Insights 확장할 수 있는 서버 또는 노드는 몇 개입니까?
– 얼마나 많은 데이터를 보관하시겠습니까?
– TSDB에서 데이터를 어떻게 작성하고 읽는가? 문제가 발생하면 어떻게 되나요?
*Paragon Insights 여러 물리적 또는 가상 서버(노드)에 Docker 기반 마이크로서비스를 클러스터링하기 위해 Kubernetes를 사용합니다. Kubernetes 클러스터는 기본 노드와 여러 작업자 노드로 구성됩니다. healthbot setup
Paragon Insights 다중 모드 설치 부분에서 설치자는 Kubernetes 기본 노드 및 작업자 노드의 IP 주소(또는 호스트 이름)를 요청합니다. TSDB 데이터베이스에 필요한 복제 요소를 기반으로 필요한 만큼의 작업자 노드를 설정에 추가할 수 있습니다. 구축하는 노드 수는 적어도 복제 요소와 동일해야 합니다. 자세한 내용은 다음 섹션을 참조하십시오.
이 논의를 위해 Kubernetes 작업자 노드를 Paragon Insights 노드라고 부릅니다. 이 논의에서는 기본 노드가 고려되지 않습니다.
데이터베이스 Sharding
데이터베이스 sharding은 특정 노드에 데이터를 선택적으로 저장하는 것을 말합니다. 선택한 노드에 데이터를 쓰는 이 방법은 사용 가능한 TSDB 노드 간에 데이터를 배포하고 각 TSDB 인스턴스가 디바이스에서 타임 시리즈 데이터의 일부만 처리하기 때문에 더 큰 확장을 허용합니다.
sharding을 달성하기 위해 Paragon Insights 디바이스 그룹/디바이스 쌍당 하나의 데이터베이스를 생성하고 결과 데이터베이스를 Paragon Insights 노드 중 하나 이상에서 호스팅된 TSDB의 특정 (시스템 결정) 인스턴스에 기록합니다.
예를 들어, 두 개의 디바이스(D1 및 D2)와 두 개의 디바이스 그룹인 G1과 G2가 있다고 가정해 보겠습니다. D1이 그룹 G1 및 G2에 있고 D2가 그룹 G2에만 상주하는 경우, 결국 G1:D1, G2:D1 및 G2:D2의 3가지 데이터베이스가 포함됩니다. 아래 그림 2 와 같이 각 데이터베이스는 별도의 Paragon Insights 노드에 자체 TSDB 인스턴스에 저장됩니다. 새 디바이스가 온보딩되어 디바이스 그룹 내에 배치되면 Paragon Insights 해당 디바이스/디바이스 그룹 데이터를 저장할 TSDB 데이터베이스 인스턴스를 선택합니다.
위의 그림 2는 TSDB 인스턴스 및 기타 Paragon Insights 서비스가 실행되는 3개의 Paragon Insights 노드를 보여줍니다.
모든 주어진 Paragon Insights 노드에서 최대 1개의 TSDB 인스턴스가 허용됩니다. 따라서 Paragon Insights 노드는 언제든지 0개 또는 1개의 TSDB 인스턴스를 가질 수 있습니다.
Paragon Insights 노드는 TSDB 기능만 실행하는 데 전념할 수 있습니다. 이 작업이 완료되면 해당 노드에서 다른 Paragon Insights 기능이 실행되지 않습니다. 이를 통해 다른 Paragon Insights 기능이 TSDB 리소스의 인스턴스를 굶주리지 못하게 합니다.
최상의 성능을 제공하기 위해 노드를 TSDB에 바치는 것이 좋습니다.
Paragon Insights 및 TSDB 노드는 Paragon Insights CLI를 사용하여 실행 중인 시스템에 추가할 수 있습니다.
데이터베이스 복제
다른 데이터베이스 시스템과 마찬가지로 복제는 여러 노드의 여러 인스턴스에 데이터를 저장하는 것을 의미합니다. Paragon Insights 복제 요소를 설정하여 필요한 데이터베이스 복사본 수를 결정합니다.
1의 복제 요소는 한 개의 데이터 사본만 생성하므로 HA를 제공하지 않습니다. 여러 Paragon Insights 노드를 사용할 수 있고 복제 팩터가 1로 설정된 경우, sharding만 달성됩니다.
복제 요소는 필요한 최소 Paragon Insights 노드 수를 결정합니다. 3의 복제 요소는 3개의 데이터 사본을 생성하고, 최소 3개의 Paragon Insights 노드가 필요하며, HA를 제공합니다. 복제 요소가 높을수록 HA가 강해지고 Paragon Insights 노드 측면에서 리소스 요구 사항이 높아질 수 있습니다. 시스템을 더 확장하려면 복제 요소의 정확한 배수 또는 3, 6, 9 등에 Paragon Insights 노드를 추가해야 합니다.
앞서 언급한 디바이스/디바이스 그룹 페어링을 기반으로 Paragon Insights 20개의 데이터베이스를 생성한 예를 생각해 보십시오. 문제의 Paragon Insights 시스템은 2의 복제 팩터를 가지고 있으며 TSDB를 실행하는 노드가 4개 있습니다. 이를 기반으로 두 개의 TSDB 복제 그룹이 생성됩니다. TSDB Group 1 과 TSDB Group 2를 예로 들어 보겠습니다. 아래 그림 3 에서는 데이터베이스 1-10의 데이터가 TSDB 그룹 1의 TSDB 인스턴스 1 및 2에 기록되고 있습니다. 데이터베이스 11-20의 데이터는 TSDB 그룹 2의 TSDB 인스턴스 3 및 4에 기록됩니다. TSDB 인스턴스에 대한 개요는 TSDB 복제 그룹을 나타냅니다. 복제 그룹의 크기는 복제 요소에 의해 결정됩니다.
데이터베이스 읽기 및 쓰기
그림 2와 같이 Paragon Insights 분산 메시징 대기열을 사용할 수 있습니다. 주어진 TSDB 인스턴스 내의 성능 문제 또는 오류의 경우, 이를 통해 데이터베이스에 대한 쓰기가 순차적 방식으로 수행되어 모든 데이터가 적절한 시간 순서로 작성되도록 할 수 있습니다.
모든 Paragon Insights 마이크로서비스는 향후 어떤 시점에서 기본 데이터베이스 시스템이 변경되더라도 사용할 수 있는 표준화된 데이터베이스 쿼리(읽기) 및 쓰기 기능을 사용합니다. 이를 통해 성장과 향후 변화에 유연성을 제공합니다. 데이터베이스 시스템의 다른 읽기 및 쓰기 기능은 다음과 같습니다.
일반적인 작업에서 데이터베이스 쓰기는 TSDB 그룹 내의 모든 TSDB 인스턴스로 전송됩니다.
데이터베이스 쓰기는 TSDB 인스턴스당 최대 1GB를 버퍼링할 수 있으므로 실패한 쓰기는 성공할 때까지 재시도할 수 있습니다.
문제가 지속되고 버퍼가 채워지면 새 데이터를 위해 가장 오래된 데이터가 삭제됩니다.
버퍼링이 활성화되면 데이터베이스 쓰기가 순차적으로 수행되므로 이전 쓰기 시도가 성공할 때까지 새 데이터를 작성할 수 없습니다.
데이터베이스 쿼리(읽기)는 지난 5분 동안 가장 적은 쓰기 오류를 보고한 TSDB 인스턴스로 전송됩니다. 모든 인스턴스가 동일하게 수행되면 필요한 그룹의 임의의 TSDB 인스턴스로 쿼리가 전송됩니다.
Paragon Insights GUI에서 TSDB 설정 관리
Paragon Insights GUI를 사용하여 TSDB(Time Series Database) 설정을 구성할 수 있습니다.
TSDB 설정을 구성하려면 다음을 수행합니다.
TSDB 노드 선택, 삭제 또는 구현은 유지 보수 기간 동안 이루어져야 합니다. 일부 서비스가 다시 시작되고 Paragon Insights GUI가 응답하지 않을 가능성이 높기 때문입니다.
시스템 > 설정을 선택합니다.
시스템 설정 페이지가 표시됩니다.
Time Series 데이터베이스를 클릭합니다.
TSDB 설정 페이지가 표시됩니다.
TSDB 설정 페이지에서 다음을 수행할 수 있습니다.
TSDB 노드로 사용할 하나 이상의 노드( TSDB 노드 목록에서)를 선택합니다.
( TSDB 노드 목록은 TSDB 노드로 선택할 수 있는 Paragon Insights 설치 시 사용 가능한 노드를 표시합니다. 기본적으로 Paragon Insights 하나의 노드를 TSDB 노드로 자동으로 선택합니다.)
복제 요소 텍스트 상자에 값을 입력하거나(또는 화살표를 사용하여 값을 지정함으로써) 복제 요소를 설정합니다.
(복제 요소는 데이터베이스의 필요한 복사본 수를 결정합니다. 복제 요소는 기본적으로 1로 설정됩니다.)
디바이트 토글( Dedicate toggle)을 클릭하여 노드를 TSDB 노드로 바칩니다.
TSDB 노드가 두 개 이상의 마이크로서비스를 실행하고 있을 수 있습니다. 그러나 노드를 TSDB 노드로 바하면 TSDB 마이크로서비스만 실행하고 다른 모든 마이크로서비스 실행을 중단합니다.
참고:노드가 영구 볼륨(클러스터의 스토리지)에 연결되어 있는 경우 해당 노드를 전용 TSDB 노드로 사용할 수 없습니다.
페일 세이프 메커니즘을 통해 모든 Paragon Insights 노드를 TSDB 노드로 바칠 수 없습니다.
시스템 오류를 무시합니다(Paragon Insights 실패한 TSDB 노드를 제거하거나 교체할 때) 포스 토글( Force toggle)을 클릭하여 켭니다.
예를 들어, TSDB 노드가 실패하고 해당 노드의 복제 요소가 하나로 설정되면 해당 노드에 대한 TSDB 데이터가 손실됩니다. 이 시나리오에서는 실패한 TSDB 노드를 Paragon Insights 제거해야 합니다. 그러나 실패한 노드를 새로운 노드로 바꾸려면 복제 요소가 하나로 설정되었으므로 노드의 백업이 시스템 오류로 실패합니다. 노드 교체를 계속하려면 포스 토글( Force Toggle)을 켜야 합니다.
TSDB 노드 이름 옆에 있는 X 를 클릭하여 이전에 TSDB 노드로 할당되었던 노드를 삭제합니다. 새로운 구성 변경 사항을 구축하면 노드가 TSDB 노드로 제거됩니다.
다음 중 하나를 수행합니다.
저장을 클릭하여 TSDB 노드에 변경 사항을 적용하지 않고도 구성 변경 사항만 데이터베이스에 저장합니다.
구성이 나중에 변경되는 것을 커밋(또는 롤백)해야 합니다. 자세한 내용은 Paragon Insights 커밋 또는 롤백 구성 변경을 참조하십시오.
저장 및 구축을 클릭하여 구성 변경 사항을 데이터베이스에 저장하고 TSDB 노드에 변경 사항을 적용합니다.
나타나는 팝업에서 확인을 클릭하여 확인합니다.
TSDB 설정 페이지로 돌아갑니다.
Paragon Insights CLI 구성 옵션
Paragon Insights CLI는 시스템에서 TSDB 노드를 추가 및 삭제하고 결과적으로 복제 요소를 변경할 수 있는 수단을 제공합니다.
TSDB 노드를 추가하여 Paragon Insights
# set healthbot system time-series-database nodes <IP address or hostname> dedicate <true or false>
또는
#set healthbot system time-series-database nodes [ space-separated list of IP addresses or hostnames] dedicate <true or false>
복제 요소 관리
# set healthbot system time-series-database replication-factor <replication-factor>
복제 요소를 시스템에 존재하는 TSDB 노드 수의 배수로 설정합니다. 두 개의 TSDB 노드가 있는 경우 복제 요소를 2, 4, 6 등으로 설정합니다.
Usage Notes
Paragon Insights 핑을 수행하여 새 노드에 도달할 수 있는지 확인합니다. 핑이 실패하면 경고가 표시됩니다.
디바이트 옵션은 TSDB 노드가 TSDB 기능만 수행하는지 여부를 지정합니다.