반응형

https://doc.akka.io/docs/akka/current/typed/cluster-membership.html


https://getakka.net/articles/clustering/cluster-overview.html

 

Akka.Cluster Overview | Akka.NET Documentation

Akka.Cluster Overview What Is a "Cluster"? A cluster represents a fault-tolerant, elastic, decentralized peer-to-peer network of Akka.NET applications with no single point of failure or bottleneck. Akka.Cluster is the module that gives you the ability to c

getakka.net

 


Akka 클러스터 형성 과정은 클러스터가 올바르게 초기화되고 유지되도록 보장하기 위해 여러 주요 구성 요소와 단계를 포함한다. 다음은 클러스터가 형성되는 방법, 노드의 다양한 유형의 역할, 그리고 노드 상태 및 클러스터 무결성 관리 메커니즘에 대한 설명이다.

1. 시드 노드와 비시드 노드

  • 시드 노드(Seed Nodes): 잘 알려진 IP 주소/포트 조합을 가진 노드로, 클러스터 구성에서 미리 정의된다. 다른 노드가 클러스터에 가입할 때 초기 연락 점 역할을 한다.
  • 비시드 노드(Non-seed Nodes): 초기에는 주소가 알려지지 않은 노드로, 클러스터를 형성하기 위해 시드 노드에 연락해야 한다.

2. 초기 클러스터 형성

  • 클러스터는 시드 노드가 서로를 알고 있는 상태에서 시작한다. 예를 들어, A와 B 두 시드 노드가 있으면, 이 노드들은 서로의 존재를 인식하고 설정된다.
  • 비시드 노드(C, D, E와 같은)는 적어도 하나의 시드 노드에 연락할 수 있도록 구성된다.
  • 구성에서 첫 번째로 나열된 시드 노드는 반드시 작동 중이어야 한다.. 그렇지 않으면 클러스터가 형성되지 않는다. 이는 초기 시작 시 분산 브레인(scenarios) 같은 문제를 방지하기 위한 것이다.

3. 연결 설정

  • 비시드 노드는 지정된 시드 노드에 연결을 시도한다. 예를 들어, C와 D 노드는 A에, E 노드는 B에 연결하도록 설정될 수 있다.
  • 모든 노드는 클러스터 형성 과정을 시작하기 위해 시드 노드에 연결을 시도한다.

4. 리더 선출

  • 노드가 클러스터에 합류함에 따라 리더가 선출된다.. 리더는 일반적으로 시드 노드 중 하나이며, 클러스터 상태를 관리하는 책임이 있다.
  • 리더는 직접 통신할 수 있는 노드부터 시작하여 알고 있는 노드들을 활성 상태로 표시하기 시작한다.

5. 가십 프로토콜

  • 클러스터 멤버십에 대한 가십(gossip) 정보가 모든 노드에 퍼지기 시작한다. 이 정보에는 어떤 노드들이 활성화되어 있고 그들의 연결 상태가 포함된다.
  • 노드들은 지속적으로 통신을 하며, 각 노드가 다른 모든 노드와 연결된 메시 네트워크를 형성한다.

6. 클러스터 무결성 및 관리

  • 클러스터가 운영되는 동안, 노드들은 서로에게 지속적으로 하트비트를 보내 가용성을 확인한다. 하트비트를 충분히 보내지 못하면 노드는 동료들에 의해 접근 불가능하다고 표시된다.
  • 리더는 접근 불가능한 노드가 다시 접근 가능해지거나 공식적으로 클러스터에서 제거될 때까지 클러스터 결정을 중단한다. 클러스터의 상태가 일관되지 않은 경우 리더는 자신의 업무를 수행할 수 없다고 표시한다.

7. 노드 고장 및 퇴출 처리

  • 노드가 접근 불가능해지면 설정된 타임아웃(auto-down-unreachable-after)을 사용하여 노드를 영구적으로 제거(다운)하기로 결정할 수 있다.
  • 노드는 클러스터에서 우아하게 퇴출될 수도 있으며, 이는 노드가 접근 불가능하게 표시되는 것을 방지한다.

8. 조정된 종료

  • 노드가 클러스터에서 우아하게 종료할 수 있도록 조정된 종료 프로세스를 제공한다.

 

 

 

반응형

'개발관련 > ETC..' 카테고리의 다른 글

Git 커밋된 계정 기록 변경하기  (0) 2024.04.28
MMF(Memory Mapping File)  (0) 2024.03.18
Https 적용하기  (0) 2024.03.11
aws ec2 프리티어 메모리 부족  (0) 2023.09.22
Linux에 서비스 등록  (0) 2023.01.10
반응형

daemon.json 등록

sudo vi /etc/docker/daemon.json

 

호스트 입력

{
 "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
}

 

서비스를 확인한다.

sudo vi /lib/systemd/system/docker.service

 

서비스에 -H 플래그가 있다면 Daemon.json의 호스트와 충돌이 발생할 수 있다.

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

 

아래와 같이 제거를 한다.

ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock
반응형

'개발관련 > Docker' 카테고리의 다른 글

jenkins에서 도커 명령어 사용하기  (0) 2024.03.10
도커에 GitLab 설치 및 실행  (2) 2023.09.21
Docker 설치  (0) 2023.01.08

+ Recent posts