본문 바로가기

전체 글

(24)
[Elasticsearch] Splitbrain이란? 클러스터 마스터 노드가 홀수개면 좋은 이유 Elasticsearch 뿐만 아니라 클러스터로 작동하는 모든 서비스들은 공통적으로 마스터 후보 노드를 홀수개로, 그리고 최소 살아있어야 하는 노드 수를 n/2+1로 설정하라고 권장한다.(살아있어야 하는 노드 수의 경우 최근에는 자동으로 설정되는 경우가 많은 것 같다.) 사실 클러스터를 구성하는 노드 수에 맞게 자동으로 살아있어야 하는 노드 수가 조절되는 경우 만약 노드가 시간 간격을 두고 하나씩 차례로 다운되는 것은 전혀 문제가 되지 않는다. 마스터 노드를 홀수개로, 최소 살아있어야 하는 노드 수 설정 등은 모두 splitbrain 상황을 대비하여 설정하는 것이다. splitbrain이란 간단하게 여러 개의 노드가 동시에 클러스터에서 떨어져나오는 현상이라고 생각하면 된다. (실제 동시에 다운된 것일 수..
[ElasticSearch] Rolling Restart 방법 ElasticSearch를 운영하다보면 Rolling Restart를 해야 될 상황이 발생한다. Rolling Restart란 클러스터를 구성하는 노드 중 하나씩 리스타트를 해나가는 것이다. 최근에 클러스터 디스크 사이즈가 부족하여 증설을 해야하는 케이스가 발생하였는데, 노드가 추가되는 것이 아닌 data path만 늘려주는 것이라서 rolling restart를 해야했다. rolling restart 방법은 다음과 같다. 1. rebalancing 기능 disable rebalancing이란 노드가 삭제되거나 추가되었을때 클러스터를 균형적으로 유지하기 위해 구현되어 있는 기능인데, 노드를 삭제하거나 추가하면 자동으로 rebalancing을 했을 때와 안했을 때의 효율성 지표를 계산하여 rebalanci..
[Algorithm] DFS란? 개념 및 푸는 방법(프로그래머스 타겟 넘버) / golang 코딩테스트에서 가장 많이 나오는 문제가 바로 DFS이다. (BFS보다 더 많이 나옴) DFS 개념: 깊이 우선 탐색으로 인접한 노드 중 하나를 골라서 탐색을 하고, 또 그 노드의 인접한 노드 중 하나를 골라서 탐색해나감. 1 2 3 4 5 이런식으로 그래프가 있으면 1->2->4->5->3 순서로 탐색이 진행된다. 이 때, 1의 인접 노드는 2와 3이 있는데 이 순서는 문제에 주어진 기준에 따라 변경할 수 있다. 푸는 방법: 앞에서 DFS 개념을 설명할 때 인접한 노드 중 하나를 골라서 탐색하고, 또 그 노드 중 하나를 골라서 탐색해 나가는 방법이라고 했는데, 사실 이 개념 설명에 힌트가 있다. 바로 문장 자체가 반복된다는 점인데, 이 반복에서 재귀를 떠올릴 수 있다. 재귀는 stack이 기반이므로 당연..
[Network] NAT vs Portforwarding 개념 및 차이점 서버와 클라이언트 관계에서 내 컴퓨터는 서버 or 클라이언트 중에 하나의 역할을 수행한다. 서버 개발자가 아닌 일반 사용자의 경우 대부분 사용자의 컴퓨터는 클라이언트 역할을 수행하게 되는데, 이 때 필요한 것이 NAT. 서버를 운용하기 위해서 필요한 것이 Portforwarding이다. 간단하게, 내 컴퓨터에서 request를 보낸다면 NAT, 내 컴퓨터가 request를 받는다면 Portforwarding이 필요. NAT의 경우 라우터에 이미 해당 기능이 구현되어 내가 클라이언트로 사용할 때는 해당 기술에 대해 전혀 모르고 사용할 수 있지만, Portforwarding은 내가 서버를 제공하기 위해서는 따로 설정해주는 작업이 필요하다. NAT vs Portforwarding 공통점 두 가지 기술은 모두 ..