작업자 노드가 내결함성이 없는 이유는 무엇입니까?

작업자 노드가 내결함성이 없는 이유는 무엇입니까?

클러스터 관리자 노드는 다음과 같은 클러스터 관리 작업을 처리합니다.

1) 클러스터 상태 유지

2) 스케줄링 서비스

3) 서비스 클러스터 모드 HTTP API 엔드포인트

모든 관리자 노드에서 docker swarm- docker node - 명령을 실행할 수 있습니다.docker service

여기에 이미지 설명을 입력하세요.

애플리케이션은 작업자 노드에서 실행되지만 내결함성은 없습니다. 작업자 노드에는 내결함성이 없기 때문입니다.

이는 하나의 작업자 노드가 실패하면 관리자가 다른 작업자 노드를 시작함을 의미합니다.

Swarm 클러스터 설계로 인해 개발자는상태 비저장 애플리케이션 설계작업자 노드에서 실행합니다.


내결함성은 클러스터의 상태를 이해하기 위해 관리자 수준에서 유지됩니다.

관리 노드는 내결함성이 있지만 작업자 노드는 그렇지 않은 이유는 무엇입니까?

답변1

단일 관리 노드는 내결함성이 없습니다. 결국 그것은 단지 기계(가상 또는 물리적)일 뿐입니다. 이것이 바로 상태를 공유하는 여러 관리자가 있는 이유입니다. 한 관리자가 실패하면 나머지 관리자는 클러스터를 계속 실행합니다.

마찬가지로 단일 작업자 노드는 내결함성이 없습니다. 결국 그것은 단지 기계일 뿐입니다. 그렇다면 하드 드라이브에 오류가 발생하면 어떻게 될까요? 이는 해당 시스템의 모든 상태가 손실된다는 의미입니다. 이것이 일반적으로 클러스터에서 애플리케이션의 여러 인스턴스를 실행하고 복제된 상태 저장소(기본적으로 관리자 노드가 수행하는 작업)를 사용하거나 클러스터 외부에서 상태를 유지하는 이유입니다.

또한 이러한 개념을 더욱 발전시키는 "12-Factor" 애플리케이션 설계에 대해 배우고 싶을 수도 있습니다.

답변2

역사적으로 그들은 시도했습니다. 클러스터로 실행되는 웹 서버가 있고 그 서버에서 상태 저장 애플리케이션을 실행할 수 있습니다. 그러나 개인적인 경험으로 볼 때 이러한 서버는 제대로 작동하도록 구성하기가 어렵고 클러스터가 투명하지 않고 기껏해야 반투명하기 때문에 응용 프로그램 코드는 여전히 어느 정도 클러스터를 인식해야 하므로 이러한 시스템에서 응용 프로그램을 실행해야 합니다. 올바르게 작동하려면 숙련된 프로그래머가 필요합니다. 또한 몇 가지 제한 사항(클러스터 내 서버 거리 등)도 있습니다.

"Docker 방식"은 더 명확하지만 프로그래머에게 설명하기 쉽고 제한 사항(프로그래밍 언어, 모든 노드의 물리적 위치 등)이 더 적습니다.

관련 정보