

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 호스트 교체 및 연결 정지 처리
<a name="best-practices-ecs-eks-host-replacement"></a>

Neptune이 호스트를 대체하면(예: 유지 관리 또는 장애 조치 중) 해당 호스트에 대한 기존 연결이 무효화됩니다. 컨테이너화된 환경에서 클라이언트가 교체를 정상적으로 처리하지 않으면 컨테이너의 모든 스레드가 중단될 수 있습니다.

**현재 클라이언트 버전 사용**

Gremlin 쿼리 언어를 사용하는 경우 Neptune 엔진 버전과 호환되는 TinkerPop 드라이버 버전을 사용합니다([Gremlin을 사용하여 Neptune 그래프에 액세스](access-graph-gremlin.md)호환성 표는 참조). Java 드라이버를 사용하는 경우 엔드포인트 상태 확인 및 장애 조치 처리와 같은 연결 관리 기능을 추가하는 TinkerPop Java 드라이버 주변의 래퍼`neptune-gremlin-client`를 고려하세요. 기본 TinkerPop 드라이버와 동일한 버전 호환성 규칙을 따릅니다.

Neptune `neptune-gremlin-client` 버전에서 허용하는 사항에 따라 버전 3.x(또는 최소 버전 2.0.7)를 사용합니다. 이러한 최신 버전은 복원력과 연결 처리를 개선합니다.

Neo4j 드라이버가 있는 openCypher 사용자의 경우 장애 조치 중에 연결 실패를 감지하면 `Driver` 객체를 닫고 다시 생성합니다. Neptune은 Bolt 프로토콜 버전 1\~4.0을 지원합니다. 자세한 내용은 [openCypher와 Bolt를 사용한 Neptune 모범 사례](best-practices-opencypher.md) 단원을 참조하십시오.

**클러스터 또는 리더 엔드포인트 사용**

인스턴스 엔드포인트에 직접 연결하지 마세요. 쓰기에는 클러스터 엔드포인트를 사용하고 읽기에는 리더 엔드포인트를 사용합니다. 에서 인스턴스 엔드포인트를 사용해야 하는 경우 `/status` API를 통해 엔드포인트 상태 확인 필터링을 `neptune-gremlin-client`활성화합니다.

**허용 오차를 사용하여 생생 프로브 구성**

Kubernetes liveness 프로브`failureThreshold`를 10초 기간(총 300초)으로 최소 30으로 설정합니다. 이렇게 하면 Neptune이 호스트 교체를 완료하는 약 5분 동안 Kubernetes가 포드를 다시 시작하지 못합니다.

**백오프를 사용하여 재시도 구현**

호스트 교체 중에 실패한 단일 요청이 컨테이너를 충돌시키지 않아야 합니다. 교체 중 일시적인 오류가 개입 없이 해결되도록 연결 실패 시 지수 백오프가 포함된 재시도 로직을 구현합니다. 재시도 가능한 예외에 대한 지침은 [Neptune 트랜잭션 예외](https://docs.aws.amazon.com/neptune/latest/userguide/transactions-exceptions.html)를 참조하세요.