본문 바로가기

분류 전체보기92

[PostgreSQL] Replication Slot 과거에는 복제 슬롯(Replication Slot)이 없을 때, 스트리밍 복제에서 원본(Master)은 복제(Slave)의 상태를 알지 못하였고, 이에 따라 WAL 세그먼트를 관리하는 것은 어려운 일이었다. 그로 인하여 아래와 같은 문제점이 발생하게 되었다. [예시] 마스터 서버에서 큰 트랜잭션이 일어나고 있고, 복제 서버가 정지 상태(시스템 패키지 업그레이드, 하드웨어 업그레이드 등의 이유) 일 때, 해당 복제 서버의 상태와 관계없이 마스터 서버에서는 트랜잭션을 마치고 체크포인트를 통과하면 트랜잭션 로그(WAL 세그먼트)를 제거를 하게 되는데, 정지된 복제 서버에서는, 복제본의 유지 관리가 중단되었기 때문에, 복제 지연이 크게 발생하여 재기동을 할 때, 아래 에러가 발생된다. LOG: started s.. 2024. 2. 16.
[Kubernetes] 쿠버네티스의 컴퓨터 자원(CPU/Memory) 관리 및 제한 - 1 쿠버네티스는 Namespace와 Cgroup을 통해 컨테이너의 격리된 환경을 구축하고 배포한다. 컨테이너를 생성할 때, 컴퓨터 자원의 할당의 제한이 선언되면 쿠버네티스의 Scheduler는 컨테이너가 생성되기에 알맞은 노드(컴퓨터 자원이 충족되는)를 선택한다. ※ 컨테이너는 CPU, Memory, Disk(FileSystem)와 네트워크, 프로세스 ID, GPU 등의 컴퓨터 리소스를 소비할 수 있다. 과거에는 쿠버네티스에서 Cgroups v1을 기반으로 컴퓨터 자원을 격리했는데, 쿠버네티스 1.22 버전을 시작으로 Cgroups v2를 이용하여 더 효율적으로 컴퓨터 자원에 대한 관리를 할 수 있게 되었다. https://kubernetes.io/blog/2021/11/26/qos-memory-resour.. 2024. 2. 5.
[ELK] Elasticsearch 1. 엘라스틱 서치(Elasticsearch) : 아파치 루씬(Apache Lucene)을 기반으로 Java로 개발된 엘라스틱 서치는 분산형 RESTful 검색 및 분석 엔진으로 Elastic 재단에서 개발한 엘라스틱 스택(Elastic Stack)의 핵심적인 역할을 맡고 있다. 엘라스틱 스택 : 엘라스틱 재단에서 개발한 데이터의 대규모 수집, 분석, 검색 및 시각화에 최적화된 솔루션을 일컫는 스택을 의미하는데 대표적으로 아래 3가지 스택을 가지고 ELK 스택이라고도 한다. 엘라스틱 서치(Elasticsearch) : 데이터 저장, 검색 및 분석 등의 역할을 수행 로그 스태시(Logstash) : 데이터 수집 및 전처리 등의 역할을 수행 키바나(Kibana) : 수집한 데이터의 시각화와 데이터에 관한 정.. 2024. 1. 14.
[Network] NAT / SNAT / DNAT 일반적으로 가정에서 공유기에 연결된 PC는 사설 IP(Private IP)를 공유기로부터 배정받고, 외부로 패킷이 나갈 때는 공인 IP(Public IP)로 나가게 되어 통신을 하게 되는데, 이러한 IP 변환 과정에는 라우터의 NAT를 사용하게 된다. 통신의 흐름을 보면 아래 사진과 같이 볼 수 있다. 예시 : PC(Private IP) -> 공유기(NAT) -> 구글(Public IP) -> 공유기(NAT) -> PC(Private IP) NAT(Network Address Translator) : NAT는 패킷이 라우터를 지나갈 때 패킷의 IP 헤더에 있는 네트워크 주소 정보를 수정하여 IP 주소를 다른 IP 주소로 매핑하는 방법이다. NAT는 다양한 장점이 존재한다. IPv4는 2 ** 32(40억.. 2023. 12. 21.
[Fluent-Bit] Too many open files 사내 프로젝트로 Fluent-Bit을 K8S환경 내 Side-car방식으로 Elasticsearch에 로그 적재를 할 때, 발생했던 문제에 관하여 다루는 자료이다. 개요 : 프로젝트 내 Microservice의 개수만큼 Deployment를 생성했었는데, 해당 Deployment에는 하나의 애플리케이션 서버 컨테이너와, 해당 애플리케이션 로그를 수집하는 Fluent-Bit 컨테이너(총 2개의 컨테이너)가 하나의 파드 안에 배포되는 형식으로 생성하였다. Fluent-Bit : https://docs.fluentbit.io/manual/about/what-is-fluent-bit What is Fluent Bit? - Fluent Bit: Official Manual Rather than serving as.. 2023. 11. 30.
[Kubernetes] calico-node PodInitializing 대기 현상 해결 쿠버네티스 클러스터 환경에서 모든 노드의 서버를 재시작하면서 발생한 현상이다. calico-node의 daemonset의 Init-Container가 실행되지 않고, 해당 컨테이너가 실행되는 것을 무한 대기하는 현상이 발생한 것이다. 위와 같은 현상을 겪은 Github Issue도 찾아서 확인하였고, iptables에 관하여 언급한 사람이 있어서 초기에 쿠버네티스 설정했던 네트워크 설정이 초기화가 된 것으로 추측하였다. https://github.com/projectcalico/calico/issues/6256 Kubernetes cluster fails bringing up calico node · Issue #6256 · projectcalico/calico Our kubernetes clusters.. 2023. 11. 6.