전체 글 102

Zookeeper 여러 기능 알아보기 및 설치

Zookeeper의 여러 기능들 Data model zookeeper는 파일 시스템처럼 '/'로 구분하여 경로를 표기하고 데이터를 저장한다. zookeeper는 중간 경로 예를들면 위의 이미지에서 app1이나 app2, root 도 데이터를 가질 수 있다. 그리고 자식 노드들의 데이터도 접근 가능하다. 그렇기에 수bytes ~ KB 이하로 유지하는 것이 좋다. 보통은 설정 정보나, 작은 메타데이터 정보 등의 빠른 동기화 용도 위주로 사용된다. Versioning Znode는 데이터나 ACL 변경할 때 versioning이 되며, version number를 갖고있다 client에게 응답할 때 이 버전 번호도 항상 같이 전달한다. ACL은 엑세스 제어 목록으로 read할 때는 연결된 모든 데이터를 가져오고..

Zookeeper 소개와 작동 프로세스

Zookeeper 란 분산 어플리케이션을 위한 분산 코디네이션 서비스이다. 분산 어플리케이션을 만들기 위해서 필요한 동기화나 설정 등 다양한 기능의 API 제공해준다. 그리고 무엇보다 높은 수준의 구현이 필요한 coordination 기능을 제공해줘서 더 쉽게 분산 어플리케이션을 구현할 수 있다. Zookeeper 주요 기능 & 특징 ZNodes 주키퍼는 shared hierachical namespace를 통해 분산 프로세스가 서로 상호작용한다. 이 namespace는 znodes라고 불리는 데이터 레지스터로 구성되어 있다. 이 znode로 메모리에서 데이터를 처리하기 때문에 높은 throughput과 낮은 latency를 제공한다. 높은 performance 높은 available strcitly o..

분산 시스템 이해하기 - BASE 원칙, CAP, PACELC

분산 시스템 개요 데이터 엔지니어링하면 분산 시스템은 항상 나오는 주제이다. 그만큼 많은 소프트웨어에서 분산 시스템이 필요하다는 것인데, 그렇다면 분산 시스템이 필요한 이유는 무엇일까? 그것은 하드웨어 성능의 발전 속도로부터 나온다. '무어의 법칙'은 하드웨어 성능의 발전은 선형적이라는 것이다. 하지만 컴퓨터에서의 트래픽과 데이터는 기하 급수적으로 늘어났다. 이에 하드웨어를 scale-up이 아닌 scale-out 전략을 생각하게 된다. 상태를 공유하지 않으면 scale out이 쉽게 가능했지만 Database가 중요해지면서 대량의 데이터가 공유 가능해야했다. 따라서 Database를 중심으로 상태와 데이터가 공유 가능하면서 scale-out하여 많은 데이터와 트래픽이 처리 가능한 소프트웨어가 필요해졌다..

[Observability] - 5. 자신의 Application Monitoring 해보기!!

이전에는 node의 모니터링을 했다면 이번에는 자신이 만든 앱의 모니터링을 해보았다. 아래와 같은 구조로 진행해볼 예정이다. App은 Spring boot로 매우 간단하게 만들었으며, Prometheus Simple Client java로 Prometheus 형식의 메트릭을 노출한다. 여기서 Prometheus Simple Client란 Prometheus는 각 언어별로 client library를 제공한다. Prometheus 포맷으로 노출할 수 있는 설정, 각 언어별로 기본 모니터링 시스템을 이용해 메트릭 정보를 추출, custom metric을 남기는 기능 등을 할 수 있다. 한마디로 Prometheus가 알아들을 수 있도록 데이터를 남길 수 있도록 해주는 라이브러리이다. Java App 생성 우선..

[Observability] - 4. Node Monitoring 해보기!!

우선 여기서 말하는 노드란, 컴퓨터 네트워크를 구성하는 하나의 기기를 의미한다. 흔히 컴퓨터 1대가 노드가 될 수 있다. Node 정보를 가져오기 위해서는 Node Exporter가 필요하다. Node Exporter 설치하기 링크 wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz tar xvfz node_exporter-1.5.0.linux-amd64.tar.gz mv node_exporter-1.5.0.linux-amd64 node_exporter cd node_exporter/ export NODE_EXPORTER_HOME=$(pwd) echo $N..

Prometheus active:Failed 상태 해결하기

Node exporter 설치 후 prometheus에 node exporter 연결을 위해 설정을 업데이트하였다. 그리고 다시 systemctl을 멈추고 시작하려하니까 올라가지를 않았다. sudo systemctl status prometheus.service 이걸로 상태를 확인해보았다. 왜 그러니... reboot도 해보고 프로세스들도 계속 확인해보고 새롭게 작성한 코드들에 문제가 있는지도 확인해보았다. 문제가 없는것 같아서 일단 프로메테우스 동작이라도 하는 지 확인하자는 마음에 ./prometheus --config.file=prometheus.yml 이것도 동작을 안해서 에러메세지를 확인하니 yml 형식에 맞지 않는다고 한다. 그제서야.... yml 파일도 수정을 했었다는 것을 깨달았다. 다시 들..

TroubleShooting 2023.12.30