페데레이션

개요

페데레이션은 다수의 로그프레소 노드를 묶어서 가용성을 향상시키고 데이터 분석 성능을 높여주는 기능으로, 여러 대의 로그프레소 노드가 서로 데이터를 동기화하거나, 다른 노드에 대해 쿼리를 실행할 수 있는 네트워크라 할 수 있습니다.

설정 > 페데레이션에서 페데레이션 노드를 관리할 수 있습니다.

페데레이션 화면

페데레이션 설정 메뉴는 아래의 항목으로 확인 및 관리됩니다.

  • 상태: 노드의 연결 상태
  • 이름: 노드의 이름
  • 주소: 노드의 주소. 노드를 등록할 때 지정한 주소로, IP 주소, 호스트 이름 등으로 표시될 수 있습니다.
  • 웹서버 포트: 노드의 웹 콘솔 통신 포트
  • 사용자: 페데레이션에 사용하는 계정
  • 암호화 통신: TLS 통신 여부
  • 서버 인증서 검증: 웹서버 인증서의 검증 활성화 여부
  • 접속 타임아웃: 웹 콘솔 접속 타임아웃(단위: 밀리초)
  • 읽기 타임아웃: 웹 콘솔 응답 타임아웃(단위: 밀리초)
주요 특징

페데레이션 환경에서 로그프레소 노드는 다음과 같은 방식으로 동작합니다.

  • 데이터 수집 노드는 보통 2대가 하나의 페데레이션을 구성합니다.
  • 데이터 분석 노드는 모든 데이터 수집 노드와 페데레이션을 구성합니다.
  • 하나의 노드가 다수의 페데레이션에 포함될 수 있습니다.
  • 하나의 페데레이션 안에서 모든 노드는 액티브(active), 스탠바이(standby)의 구분이 없습니다.
  • 하나의 페데레이션 안에서 로거를 이중화할 수 있습니다. 로거는 액티브/스탠바이로 동작합니다.
  • 하나의 페데레이션 안에서 데이터 블록을 복제하는 방식으로 테이블을 동기화할 수 있습니다. 데이터 복제는 액티브/스탠바이로 동작합니다.

페데레이션 구성은 각기 독립적인 로그프레소 서버를 연계하므로 데이터베이스 계정이나 권한은 각 노드 단위로 관리됩니다. 따라서 노드 간 계정 위임 및 가장(impersonation)은 지원되지 않으며, 노드간 통신은 페데레이션 통신에 필요한 계정과 암호로 로그프레소 서버에 로그인하여 원격 쿼리를 실행하게 됩니다.

수집 노드와 분석 노드

수집 노드, 분석 노드는 역할의 구별일 뿐, 기능 상의 차이가 없습니다.

수집 노드는 수집, 테이블 기능을 주로 실행하는 로그프레소 서버들로 원천 데이터를 수집하고 저장하는 역할을 합니다. 분석 노드는 대시보드, 쿼리 기능을 주로 실행하는 로그프레소 서버들로, 분석 노드에 저장된 데이터에 대해 쿼리를 수행하고 그 결과를 사용자가 활용할 수 있게 하는 역할을 합니다.

페데레이션은 로그프레소 서버 노드로 구성되며, 센트리는 페데레이션을 구성하지 않습니다. 센트리로부터 수집된 데이터를 이중화하려면 센트리로부터 데이터를 수집하는 로그프레소 서버 노드의 테이블을 다른 노드와 이중화하십시오.

쿼리와 네임스페이스

페데레이션을 구성하는 각 로그프레소 노드는 각각 고유한 이름 공간(namespace)을 갖고, 각 노드의 테이블을 대상으로 쿼리할 때 콜론(:)으로 구분되는 한정자를 사용할 수 있습니다.

가령, 검색을 전담하는 노드에 n1 이름의 원격 노드를 등록한다면, n1 노드의 weblogs 테이블을 n1:weblogs라는 이름으로 지칭할 수 있습니다. 이름공간에 와일드카드(*)를 사용하면 일치하는 모든 노드에서 검색 및 조회를 수행할 수 있습니다. 가령, table *:weblogs 쿼리를 실행하면 쿼리를 실행하는 로컬 노드를 포함하여 등록된 모든 원격 노드의 weblogs 테이블에서 로그를 조회하게 됩니다.

table 혹은 fulltext 쿼리를 시도할 때 지정된 대상 테이블의 이름공간에 와일드카드(*)가 포함되어 있으면, 분산 쿼리 플래너가 쿼리 실행 계획을 재작성하고 원격 쿼리가 포함된 쿼리 커맨드 파이프라인을 실행합니다. 분산 쿼리 플래너는 eval, search, rex 같은 쿼리 커맨드 뿐 아니라, statstimechart처럼 매개변수에 그룹 함수가 포함된 쿼리 커맨드를 최대한 각 원격 노드에서 병렬로 실행하게 하여 전체 수행 시간이 최소화되도록 실행 계획을 재작성합니다. 또한 원격 노드 쿼리 시 등록된 노드 이름을 _node 필드로 추가하여 노드별 통계 쿼리를 수행할 수 있도록 합니다.

페데레이션 노드를 등록하면 해당 노드에 있는 테이블들을 테이블 화면에서 조회하고 관리할 수 있습니다.

노드 관리

노드 추가

하나의 페데레이션에 속하는 노드는 페데레이션에 속하는 모든 피어 노드를 등록해야 합니다. 노드를 등록하는 방법은 다음과 같습니다.

  1. 설정 > 페데레이션에 있는 도구 모음에서 + 새 노드 등록하기를 누릅니다.

  2. 새 노드 등록하기 창에서 해당 노드 연결에 필요한 정보를 입력하고 생성을 누릅니다.

    페데레이션 - 노드 추가

    • 이름: 노드 식별용 이름
    • 호스트 주소: IP 계층에서 IP 주소로 변환 가능한 호스트의 주소(예: IP 주소, 호스트 이름 등)
    • 포트: 페데레이션 연결에 사용하는 포트(기본값: 없음)
    • 사용자: 페데레이션 연결 계정의 로그인 이름
    • 암호: 노드 계정의 암호
    • 암호화 통신: TLS 암호화 연결이 필요한 경우 선택(기본값: 사용 안 함)
    • 서버 인증서 검증: TLS 암호화 연결을 사용하는 경우, 서버의 인증서 검증 여부(기본값: 사용)
    • 접속 타임아웃: 노드 접속에 적용할 타임아웃(기본값: 10,000 밀리초)
    • 읽기 타임아웃: 노드의 응답에 적용할 타임아웃(기본값: 10,000 밀리초)
노드 수정

등록한 노드의 정보를 수정하는 방법은 다음과 같습니다.

  1. 페데레이션 화면에서 수정할 노드를 선택하고 편집을 누릅니다.

  2. 노드 수정하기 창에서 노드의 정보를 입력하고 수정을 누릅니다.

    페데레이션 - 노드 수정

노드 삭제
  1. 페데레이션 화면에서 삭제할 노드를 선택하고 도구 모음에서 휴지통을 누릅니다

    노드 삭제 - 노드 선택 후 삭제 실행

  2. 노드 삭제 창에서 삭제할 노드를 확인하고 삭제를 누릅니다.

    노드 삭제 - 노드 확인 후 삭제