최신 글 👾
-
[KRaft 파헤치기] Raft 알고리즘 톺아보기카프카 2023.02.25 12:19
들어가며 KIP-500을 통해 제안된 카프카의 주키퍼 독립 선언(?)에는 카프카의 메타데이터가 앞으로 Raft 알고리즘을 통해 관리될 것으로 나와있습니다. Raft 알고리즘은 쿠버네티스의 etcd에서 사용되는, 분산 합의 알고리즘인데요. 이번 글은 Raft 알고리즘이 어떤 방식으로 분산 환경에서 합의를 만드는지 살펴봅니다. Raft 알고리즘 톺아보기 분산 합의? 분산 시스템은 2개 이상의 컴퓨팅 노드에서 동일한 목적을 위해 구성된 시스템을 말합니다. 그렇기 때문에 분산 시스템의 모든 노드는 동일한 상태(State)를 가져야 합니다. 그리고 이렇게 동일한 상태를 가지는 것을 합의(Consensus;컨센서스)라고 합니다. 예를 들어, 카프카도 컨트롤러가 몇 번 브로커인지 혹은 어떤 토픽의 몇 번 파티션이 어..
-
레플리카의 상태와 세가지 궁금증카프카 2022.10.29 13:44
들어가며 파티션의 레플리카는 그 상황에 따라 특정한 상태가 됩니다. 이번 글은 레플리카의 상태들에 대해 살펴봅니다. 나아가 3가지 궁금증에 대해 살펴보겠습니다. 레플리카의 상태 레플리카는 그 생애 주기에 따라 아래와 같이 7가지 상태를 가집니다. NewReplica : 컨트롤러가 파티션 재할당 과정에서 레플리카를 생성했을 때, 이 상태가 됩니다. 이 상태에선 팔로워 레플리카가 되라는 요청만 받을 수 있습니다. OnlineReplica : 할당된 레플리카(assign replicas)에 속하게 되면 이 상태가 됩니다. 이 상태에선 리더, 팔로워 레플리카가 되라는 요청을 받을 수 있습니다. OfflineReplica : 레플리카가 불능이면 이 상태가 됩니다. 일반적으로 레플리카가 속해있는 브로커가 종료되었을..
-
파티션 재할당(Reassignment) 로직 찍먹하기카프카 2022.10.24 23:38
들어가며 이번엔 KafkaController 클래스에서 onPartitionReassignment 메서드 주석을 통해 파티션 재할당하는 로직을 알아봅니다. 대상 버전은 현재 가장 최신 버전인 3.3.0 버전입니다. 본문 중 Reassignment은 파티션 재할당 작업과 동일한 의미입니다. 파티션 재할당 로직 찍먹하기 onPartitionReassignment 메서드가 실행되는 시점 AlterPartitionReassignments API 가 호출되었을 때, Reassignment 정보를 저장하는 주키퍼 znode 경로에 znode가 생성되었을 때, 진행 중이던 reassignment 작업이 종료되었을 때, (파티션의 ISR znode 변경으로 감지됨) 진행 중이던 reassignment 작업의 대상 브로..
-
[Ansible] AWS EC2 인스턴스의 태그 일괄 관리하기개발자 라이프 2021.11.21 22:55
들어가며 AWS의 EC2는 태그 기능을 제공하며, 그것을 통해 그 인스턴스의 상태, 목적 등을 표현할 수 있습니다. 그래서 앤서블을 이용하여 EC2 인스턴스를 일괄적으로 관리할 때 태그 기능을 사용하면, 동작 목적에 따른 인스턴스들을 쉽게 분리할 수 있습니다. 이번 글은 앤서블의 AWS 컬렉션에 포함된 태그 관련 모듈을 이용하여 EC2 태그를 관리하는 방법과 스크립트를 구성할 때의 팁에 대해 알아봅니다. AWS EC2 인스턴스의 태그 일괄 관리하기 태그 관리를 위한 환경 구성과 예제 살펴보기 AWS는 앤서블 스크립트 내에서 AWS의 자원을 관리할 수 있도록 컬렉션을 제공하고 있습니다. 물론 앤서블 커뮤니티에서도 비슷한 기능을 하는 컬렉션을 제공하고 있지만, 이번 글에서 다루는 컬렉션은 AWS에서 관리하는..
-
[Ansible] Docker 관련 모듈을 이용한 컨테이너 관리하기개발자 라이프 2021.11.07 21:58
들어가며 앤서블은 다수의 컴퓨팅 장비에 요청을 보내어 동시에 제어 관리하기에 용이한 시스템입니다. 이번 글은 앤서블을 이용하여 AWS 환경에서 여러 EC2 인스턴스를 대상으로 도커 컨테이너를 배포하거나, 수정, 조회, 삭제 등 관리하는 방법을 -매우- 간단한 예제 시나리오를 통해 알아봅니다. 관련한 예제 코드는 깃헙을 통해서 확인하실 수 있습니다. 참고로 현재 저는 앤서블을 공부하고 있는 중이라 구성된 앤서블 스크립트의 구조가 최적화된 상태는 아닙니다. PR로 고쳐주시면 감사히 배우겠습니다. Docker 모듈을 이용한 컨테이너 관리하기 1. 예제 환경 구성하기 1.1. EC2 구성 예제 환경은 아마존 EC2 환경을 바탕으로 합니다. 따라서 아래와 같은 EC2 인스턴스가 필요합니다. 컨트롤러 노드 인스턴스..