13.5.클러스터는 스택을 어떻게 관리하는가?

  • 도커 스웜에서 말하는 스택은 클러스터가 관리를 답당하는 리소스의 모임이다.
  • 운영 환경의 스택은 다양한 리소스로 구성되는데, 오케스트레이션 도구는 이들 리소스를 비슷하지만 약간씩 다른 방법으로 관리한다.
  • 스택은 애플리케이션을 구성하는 요소를 모아 놓은 논리적 객체다.
  • 하지만 스택에는 서비스 간의 의존 관계를 정의하는 기능이 없다.
  • 달리 말하면 스택을 클러스터에 배포할때 매니저 노드는 가능한 한 신속하게 클러스터에서 필요한 레플리카를 생성하는데, 이때 어떤 서비스가 완전히 실행된 다음에 다른 서비스를 실행하도록 강제할 방법이 없다.
  • 개발자는 애플리케이션 컴포넌트가 무작위 순서로 실행된다고 가정해야 한다.
  • 이미지에 헬스 체크와 디펜던시 체크를 포함시켜 애플리케이션을 정상적으로 실행할 수 없는 경우에는 컨테이너를 조기에 종료시킨다.
  • 이런 방법으로 컨테이너 재시작 혹은 대체로 인해 애플리케이션에 일어나는 문제를 수복할 수 있으며, 이것이 바로 자기 수복 가능 애플리케이션이다.

13장 정리 * 스웜도 볼륨을 생성하고 삭제할 수 있다. 서비스 이미지에 볼륨의 정의가 포함된 경우 스택도 기본 볼륨을 생성하지만, 기본 볼륨은 스택을 제거하면 함께 제거된다. 스택 정의에 이름이 붙은 볼륨을 사용하면 스택 배포와 함께 볼륨이 생성되지만, 이 볼륨은 스택을 제거해도 삭제되지 않는다. * 비밀 값과 컨피그 객체는 설정값이 든 파일을 클러스터에 업로드하는 방법으로 생성한다. 비밀값과 컨피그 객체는 클러스터 데이터베이스에 저장됐다가 이 비밀값이나 컨피그 객체를 사용하는 컨데이너가 실행될 때 해당 컨테이너로 전달된다. 비밀값과 컨피그 객체는 전형적인 읽기 위주 객체로, 수정이 불가능하다. 스웜 환경에서 애플리케이션 설정 관리는 배포 프로세스와 별개다. * 네트워크는 애플리케이션과 별도로 관리된다. 관리자가 명시적으로 네트워크를 생성할 수도 있고 필요할 때마다 스웜이 네트워크를 생성하기도 한다. 모든 스택은 컴포즈 파일에 네트워크가 정의되지 않았더라도 자신이 포함한 서비스를 연결할 네트워크와 함께 배포된다. * 서비스는 스택이 배포될 때 생성되거나 제거된다. 서비스가 실행 중일 때는 스웜이 서비스를 모니터링하며 서비스 수준이 정상치를 유지하는지 확인한다. 헬스 체크를 통해 이상이 검출된 컨테이너는 새로운 컨테이너로 교체되며, 고장을 일으킨 노드에서 실행 중이던 컨테이너도 마찬가지로 교체된다.

links

social