Docker가 고가용성을 처리하는 방법

Docker가 고가용성을 처리하는 방법

VMware 환경에서 나온 과정은 다음과 같습니다.

  1. 여러 Docker 머신(swarm), 동일한 NFS 데이터 저장소 마운트
  2. 컨테이너(예: Maria dB)가 Docker 무리에 배포됩니다.
  3. Swarm의 한 노드에 오류가 발생하면 서비스는 다른 노드에서 계속 실행됩니다.

그래서 장착했어요/var/lib/docker/볼륨NFS 공유, 여러 Docker 시스템에서 떼를 만들려고 시도했습니다. 그러나 결국 여러 Docker 시스템이 동일한 NFS 데이터 저장소를 마운트하는 경우 Docker 서비스는 노드 중 하나에서만 시작할 수 있다는 것을 알게 되었습니다.

그래서 제 질문은 여러 노드에서 동일한 서비스가 실행되고 데이터가 NFS 공유에 보관되는 떼를 만드는 방법입니다.

물론 Docker 떼가 어떻게 작동하는지에 대한 아이디어를 아직 완전히 이해하지 못했을 가능성이 높으며, 이를 잘못된 각도에서 보고 있습니다.

답변1

올바른 데이터 및 구성인 /var/lib/docker에서 아무것도 공유하고 싶지 않습니다.단일 서버의 해당 엔진.

떼에서는 노드를 관리자 또는 작업자로 떼에 추가하고 관리자는 떼 구성 및 상태를 저장하는 뗏목 합의 DB를 복제합니다.

그런 다음 요구 사항 및 가용성에 따라 다양한 노드에서 실행되는 동일한 컨테이너 이미지의 복제본이 하나 이상 있는 서비스를 생성합니다.

데이터베이스의 경우 영구 데이터(각 DB 인스턴스의 DB 및 로그)를 처리합니다. 이는 Docker 볼륨(영구 데이터를 저장하는 위치), 특히 선택한 볼륨 드라이버와 관련이 있습니다. 기본값은 현재 실행 중인 노드에 해당 서비스 복제본(컨테이너)의 볼륨을 저장합니다. 해당 데이터베이스 컨테이너가 실패하고 새 노드에서 자동으로 회전할 수 있도록 하려면(컨테이너 오케스트레이터의 기능 중 하나) "스웜 인식"이 가능하고 이를 확인하는 방법을 알고 있는 다른 볼륨 드라이버를 사용해야 합니다. NFS 마운트는 올바른 서비스 복제본을 준비하기 위해 올바른 노드에 배치됩니다.

확인하실 수 있습니다REX-레이외부 스토리지의 볼륨을 관리하기 위한 중간 계층 역할을 하며(백엔드 유형에 대한 자체 드라이버가 있음)Docker Store의 전체 목록.

관련 정보