Amazon Aurora
Aurora 사용 설명서 (API 버전 2014-10-31)

Amazon Aurora 연결 관리

Amazon Aurora는 일반적으로 단일 인스턴스 대신에 DB 인스턴스 클러스터와 관련됩니다. 각 연결은 특정 DB 인스턴스에서 처리합니다. Aurora 클러스터에 연결하면 지정한 호스트 이름과 포트가 엔드포인트라는 중간 핸들러를 가리킵니다. Aurora는 엔드포인트 메커니즘을 사용하여 이러한 연결을 추상화합니다. 따라서 일부 DB 인스턴스를 사용할 수 없을 때 모든 호스트 이름을 하드코딩하거나, 연결을 다시 라우팅하고 로드 밸런싱하기 위해 자체 로직을 작성할 필요가 없습니다.

특정 Aurora 작업의 경우 다른 인스턴스 또는 인스턴스 그룹이 다른 역할을 수행합니다. 예를 들어 기본 인스턴스는 모든 데이터 정의 언어(DDL) 및 데이터 조작 언어(DML) 문을 처리합니다. 최대 15개의 Aurora 복제본이 읽기 전용 쿼리 트래픽을 처리합니다.

엔드포인트를 사용하여 사용 사례에 따라 각 연결을 해당 인스턴스 또는 인스턴스 그룹에 매핑할 수 있습니다. 예를 들어 DDL 문을 수행하려면 기본 인스턴스인 어떤 인스턴스에나 연결하면 됩니다. 쿼리를 수행하려면 리더 엔드포인트에 연결하면 되며, Aurora가 모든 Aurora 복제본 간에 로드 밸런싱을 자동으로 수행합니다. 다른 용량 또는 구성의 DB 인스턴스가 있는 클러스터의 경우, DB 인스턴스의 다른 하위 집합과 연결된 사용자 지정 엔드포인트에 연결할 수 있습니다. 진단 또는 튜닝의 경우 특정 인스턴스 엔드포인트에 연결하여 특정 DB 인스턴스에 대한 세부 정보를 검토할 수 있습니다.

Aurora 엔드포인트 유형

엔드포인트는 호스트 주소와 포트를 포함하는 Aurora별 URL로 표시됩니다. Aurora DB 클러스터에서 제공하는 엔드포인트 유형은 다음과 같습니다.

클러스터 엔드포인트

Aurora DB 클러스터의 클러스터 엔드포인트는 해당 DB 클러스터의 현재 기본 DB 인스턴스에 연결됩니다. 이 엔드포인트는 DDL 문 등의 쓰기 작업을 수행할 수 있는 유일한 엔드포인트입니다. 이 때문에 클러스터 엔드포인트는 클러스터를 처음 설정하거나 클러스터에 단일 DB 인스턴스만 포함된 경우에 연결하는 엔드포인트입니다.

각 Aurora DB 클러스터에는 클러스터 엔드포인트 하나와 기본 DB 인스턴스 하나가 있습니다.

삽입, 업데이트, 삭제 및 DDL 변경을 비롯하여 DB 클러스터의 모든 쓰기 작업에 대해 클러스터 엔드포인트를 사용합니다. 또한 쿼리와 같은 읽기 작업에도 클러스터 엔드포인트를 사용할 수 있습니다.

이러한 클러스터 엔드포인트는 DB 클러스터에 대한 읽기/쓰기 연결 시 장애 조치를 지원합니다. DB 클러스터의 현재 기본 DB 인스턴스에 장애가 발생하면 Aurora가 자동으로 새로운 기본 DB 인스턴스로 장애 조치합니다. 장애 조치가 이루어지는 동안에도 DB 클러스터가 새로운 기본 DB 인스턴스의 클러스터 엔드포인트 연결 요청을 처리하여 서비스 중단 시간을 최소화합니다.

다음은 Aurora MySQL DB 클러스터의 클러스터 엔드포인트를 나타낸 예제입니다.

mydbcluster.cluster-123456789012.us-east-1.rds.amazonaws.com:3306

리더 엔드포인트

Aurora DB 클러스터의 리더 엔드포인트는 해당 DB 클러스터에서 사용할 수 있는 Aurora 복제본 중 하나에 연결됩니다. 각 Aurora DB 클러스터에는 리더 엔드포인트가 1개씩 있습니다. Aurora 복제본이 하나 이상이면 리더 엔드포인트는 각 연결 요청을 Aurora 복제본 중 하나로 전달합니다.

리더 엔드포인트는 DB 클러스터에 대한 읽기 전용 연결 시 로드 밸런싱을 지원합니다. 쿼리와 같은 읽기 작업에 리더 엔드포인트를 사용합니다. 쓰기 작업에는 리더 엔드포인트를 사용할 수 없습니다.

DB 클러스터는 사용 가능한 Aurora 복제본에서 연결 요청을 리더 엔드포인트로 분산시킵니다. DB 클러스터에 기본 DB 인스턴스만 포함된 경우에는 리더 엔드포인트가 기본 DB 인스턴스의 연결 요청을 처리합니다. 해당 DB 클러스터에 대해 Aurora 복제본이 하나 이상 생성되면, 리더 엔드포인트로의 후속 연결이 복제본 간에 로드 밸런싱됩니다.

다음은 Aurora MySQL DB 클러스터의 리더 엔드포인트를 나타낸 예제입니다.

mydbcluster.cluster-ro-123456789012.us-east-1.rds.amazonaws.com:3306

사용자 지정 엔드포인트

Aurora 클러스터의 사용자 지정 엔드포인트는 선택한 DB 인스턴스 집합을 나타냅니다. 엔드포인트에 연결하면 Aurora가 로드 밸런싱을 수행하고 그룹에서 연결을 처리할 인스턴스 중 하나를 선택합니다. 이 엔드포인트가 참조하는 인스턴스를 정의하고, 이 엔드포인트가 어떤 목적으로 사용되는지 결정합니다.

사용자 지정 엔드포인트를 만들기 전까지 Aurora DB 클러스터에는 사용자 지정 엔드포인트가 없습니다. 프로비저닝된 각 Aurora 클러스터에 대해 최대 다섯 개의 사용자 지정 엔드포인트를 만들 수 있습니다. Aurora 서버리스 클러스터에는 사용자 지정 엔드포인트를 사용할 수 없습니다.

사용자 지정 엔드포인트는 DB 인스턴스의 읽기 전용 또는 읽기-쓰기 기능 외의 조건을 기반으로 로드 밸런싱된 데이터베이스 연결을 제공합니다. 예를 들어 특정 AWS 인스턴스 클래스 또는 특정 DB 파라미터 그룹을 사용하는 인스턴스에 연결할 사용자 지정 엔드포인트를 정의할 수 있습니다. 그런 다음 특정 사용자 그룹에 이 사용자 지정 엔드포인트에 대해 알릴 수 있습니다. 예를 들어 보고 생성 또는 임시(일회) 쿼리를 위해 저용량 인스턴스로 내부 사용자를 보내고, 고용량 인스턴스로 프로덕션 트래픽을 보낼 수 있습니다.

사용자 지정 엔드포인트와 연결된 모든 DB 인스턴스로 연결이 이동할 수 있기 때문에, 해당 그룹 내의 모든 DB 인스턴스가 일부 유사한 특성을 공유하는지 확인하는 것이 좋습니다. 그렇게 하면 성능, 메모리 용량 등이 해당 엔드포인트에 연결하는 모든 사람에게 일관되도록 보장할 수 있습니다.

이 기능은 모든 Aurora 복제본을 동일한 클러스터에 유지하는 것이 적절치 않은 특수한 종류의 워크로드가 있는 고급 사용자를 위한 것입니다. 사용자 지정 엔드포인트를 통해 각 연결에 사용되는 DB 인스턴스 용량을 예측할 수 있습니다. 사용자 지정 엔드포인트를 사용할 경우 일반적으로 해당 클러스터에 리더 엔드포인트를 사용하지 않습니다.

다음은 Aurora MySQL DB 클러스터에 있는 DB 인스턴스의 사용자 지정 엔드포인트를 나타낸 예제입니다.

myendpoint.cluster-custom-123456789012.us-east-1.rds.amazonaws.com:3306

인스턴스 엔드포인트

인스턴스 엔드포인트는 Aurora 클러스터에 있는 특정 DB 인스턴스에 연결됩니다. DB 클러스터의 DB 인스턴스에는 각각 고유한 인스턴스 엔드포인트가 있습니다. 그러므로 DB 클러스터의 현재 기본 DB 인스턴스에 대해 인스턴스 엔드포인트 하나가 있고, DB 클러스터의 각 Aurora 복제본마다 인스턴스 엔드포인트 하나가 있습니다.

클러스터 엔드포인트 또는 리더 엔드포인트의 사용이 부적합한 시나리오에서는 인스턴스 엔드포인트가 DB 클러스터에 대한 연결을 직접 제어합니다. 예를 들어 클라이언트 애플리케이션에서 워크로드 유형에 따라 더욱 세분화된 로드 밸런싱이 필요할 수 있습니다. 이 경우에는 여러 클라이언트를 구성하여 DB 클러스터에 속한 각기 다른 Aurora 복제본에 연결한 후 읽기 워크로드를 분산시킬 수 있습니다. Aurora PostgreSQL에 대한 장애 조치 후 인스턴스 엔드포인트를 사용하여 연결 속도를 높이는 예제는 Amazon Aurora PostgreSQL를 사용한 빠른 장애 조치 단원을 참조하십시오. Aurora MySQL에 대한 장애 조치 후 인스턴스 엔드포인트를 사용하여 연결 속도를 높이는 예제는 MariaDB 커넥터/J 장애 조치 지원– Amazon Aurora 사례 단원을 참조하십시오.

다음은 Aurora MySQL DB 클러스터의 DB 인스턴스 엔드포인트를 나타낸 예제입니다.

mydbinstance.123456789012.us-east-1.rds.amazonaws.com:3306

Aurora 클러스터의 엔드포인트 보기

AWS Management 콘솔에서 각 클러스터의 세부 정보 페이지에서 클러스터 엔드포인트, 리더 엔드포인트 및 사용자 지정 엔드포인트를 봅니다. 각 인스턴스의 세부 정보 페이지에서 인스턴스 엔드포인트를 봅니다. 연결할 때 이 세부 정보 페이지에 표시되는 엔드포인트 이름에 콜론과 연결된 포트 번호를 추가해야 합니다.

AWS CLI를 사용하여 describe-db-clusters 명령의 출력에서 엔드포인트를 봅니다.

Amazon RDS API로 DescribeDbClusterEndpoints 함수를 호출하여 엔드포인트를 검색합니다.

클러스터 엔드포인트 사용

각 Aurora 클러스터에는 기본 제공되는 단일 클러스터 엔드포인트가 있고 Aurora에서 이 엔드포인트의 이름과 기타 속성을 관리하기 때문에, 이 종류의 엔드포인트는 생성, 삭제 또는 수정할 수 없습니다.

클러스터를 관리하거나, 추출, 변환, 로드(ETL) 작업을 수행하거나, 애플리케이션을 개발 및 테스트할 때 클러스터 엔드포인트를 사용합니다. 클러스터 엔드포인트는 클러스터의 기본 인스턴스에 연결됩니다. 기본 인스턴스는 테이블과 인덱스를 만들고, INSERT 문을 실행하며, 기타 DDL 및 DML 작업을 수행할 수 있는 유일한 DB 인스턴스입니다.

장애 조치 메커니즘이 새 DB 인스턴스가 클러스트의 읽기-쓰기 기본 인스턴스가 되도록 승격하면 클러스터 엔드포인트가 가리키는 물리적 IP 주소가 변경됩니다. 어떤 형식의 연결 풀링이나 기타 멀티플렉싱을 사용하는 경우, 캐싱된 DNS 정보의 TTL(Time to Live)을 플러시하거나 줄이도록 준비합니다. 그렇게 하면 사용할 수 없게 되었거나 장애 조치 후 이제 읽기 전용인 DB 인스턴스에 읽기-쓰기 연결 설정을 시도하지 않아도 됩니다.

리더 엔드포인트 사용

Aurora 클러스터의 읽기 전용 연결에 리더 엔드포인트를 사용합니다. 이 엔드포인트는 클러스터가 쿼리 집약적인 워크로드를 처리할 수 있도록 돕는 로드 밸런싱 메커니즘을 사용합니다. 리더 엔드포인트는 클러스터에서 보고 또는 기타 읽기 전용 작업을 수행하는 애플리케이션에 제공하는 엔드포인트입니다.

리더 엔드포인트는 Aurora DB 클러스터에서 사용 가능한 Aurora 복제본 연결에 한해 로드 밸런싱을 적용합니다. 개별 쿼리는 로드 밸런싱하지 않습니다. 각 쿼리를 로드 밸런싱하여 DB 클러스터의 읽기 워크로드를 분산하려면, 각 쿼리의 리더 엔드포인트에 대한 새 연결을 엽니다.

각 Aurora 클러스터에는 기본 제공되는 단일 리더 엔드포인트가 있으며, Aurora에서 이 엔드포인트의 이름과 기타 속성을 관리합니다. 이 종류의 엔드포인트는 생성, 삭제 또는 수정할 수 없습니다.

사용자 지정 엔드포인트 사용

클러스터에 용량 및 구성 설정이 서로 다른 DB 인스턴스가 포함된 경우 사용자 지정 엔드포인트를 사용하여 연결 관리를 간소화합니다.

이전에 자체 도메인에서 DNS(Domain Name Service) 별칭을 설정하는 CNAME 메커니즘을 사용하여 비슷한 결과를 달성했을 수도 있습니다. 사용자 지정 엔드포인트를 사용하면 클러스터가 커지거나 줄어들 때 CNAME 레코드를 업데이트하지 않아도 됩니다. 또한 사용자 지정 엔드포인트는 암호화된 전송 계층 보안/Secure Sockets Layer(TLS/SSL) 연결을 사용할 수 있음을 뜻합니다.

각각의 특수 목적에 DB 인스턴스를 하나씩 사용하고 인스턴스 엔드포인트에 연결하는 대신에, 특수 DB 인스턴스 그룹을 여러 개 사용할 수 있습니다. 이 경우 각 그룹에 자체 사용자 지정 엔드포인트가 있습니다. 이러한 방식으로 Aurora는 프로덕션 또는 내부 쿼리 보고나 처리 등의 작업 전용 인스턴스 간에 로드 밸런싱을 수행할 수 있습니다. 사용자 지정 엔드포인트는 클러스터 내의 각 DB 인스턴스 그룹에 로드 밸런싱과 고가용성을 제공합니다. 그룹 내의 DB 인스턴스 중 하나를 사용할 수 없게 되면, Aurora는 동일한 엔드포인트와 연결된 다른 DB 인스턴스 중 하나로 후속 사용자 지정 엔드포인트 연결을 보냅니다.

사용자 지정 엔드포인트의 속성 지정

사용자 지정 엔드포인트 이름의 최대 길이는 63자입니다. 다음과 같은 이름 형식을 볼 수 있습니다.

endpointName.cluster-custom-customerDnsIdentifier.dnsSuffix

사용자 지정 엔드포인트 이름에는 클러스터 이름이 포함되지 않기 때문에, 클러스터 이름을 바꿀 경우 엔드포인트 이름을 변경할 필요가 없습니다. 동일한 리전에 있는 둘 이상의 클러스터에 동일한 사용자 지정 엔드포인트 이름을 재사용할 수 없습니다. 각 사용자 지정 엔드포인트에 특정 리전 내의 사용자 ID가 소유한 클러스터 전체에서 고유한 이름을 부여합니다.

각 사용자 지정 엔드포인트의 연결 유형은 해당 엔드포인트와 연결할 수 있는 DB 인스턴스를 결정합니다. 현재 이 유형은 READER 또는 ANY일 수 있습니다. 사용자 지정 엔드포인트 유형에는 다음 고려 사항이 적용됩니다.

  • 읽기 전용 Aurora 복제본인 DB 인스턴스만 READER 사용자 지정 엔드포인트의 일부일 수 있습니다. READER 유형은 단일 마스터 복제를 사용하는 클러스터에만 적용됩니다. 그러한 클러스터에 읽기 전용 DB 인스턴스가 여러 개 포함될 수 있기 때문입니다.

  • 읽기 전용 Aurora 복제본과 읽기-쓰기 기본 인스턴스는 모두 ANY 사용자 지정 엔드포인트의 일부일 수 있습니다. Aurora는 확률이 동일한 연결된 모든 DB 인스턴스로 ANY 유형의 클러스터 엔드포인트 연결을 보냅니다. 읽기 전용 Aurora 복제본의 기본 인스턴스에 연결하는 경우에는 미리 결정할 수 없으므로, 읽기 전용 연결에만 이 종류의 엔드포인트를 사용합니다. ANY 유형은 복제 토폴로지를 사용하는 클러스터에 적용됩니다.

  • 클러스터의 복제 구성을 기반으로 적합하지 않은 유형의 사용자 지정 엔드포인트를 만들려고 하면 Aurora가 오류를 반환합니다.

사용자 지정 엔드포인트의 멤버십 규칙

사용자 지정 엔드포인트에 DB 인스턴스를 추가하거나 사용자 지정 엔드포인트에서 제거해도, 해당 DB 인스턴스로의 기존 연결은 활성 상태로 유지됩니다.

사용자 지정 엔드포인트에 포함시키거나 제외시킬 DB 인스턴스 목록을 정의할 수 있습니다. 이러한 목록을 각각 정적제외 목록이라고 합니다. 포함/제외 메커니즘을 사용하여 DB 인스턴스 그룹을 더 세분화하고, 사용자 지정 엔드포인트 집합이 클러스터의 모든 DB 인스턴스를 포함하도록 할 수 있습니다. 각 사용자 지정 엔드포인트는 이러한 목록 유형 중 하나만 포함할 수 있습니다.

AWS Management 콘솔의 이 클러스터에 추가된 향후 인스턴스 첨부 확인란에 선택이 표시됩니다. 이 확인란을 선택하지 않은 채로 두면, 사용자 지정 엔드포인트가 대화 상자에 지정된 DB 인스턴스만 포함하는 정적 목록을 사용합니다. 이 확인란을 선택하면 사용자 지정 엔드포인트가 제외 목록을 사용합니다. 이 경우 사용자 지정 엔드포인트는 대화 상자에서 선택하지 않은 채로 둔 인스턴스를 제외한 클러스터의 모든 DB 인스턴스를 나타냅니다(향후 추가하는 모든 인스턴스 포함). AWS CLI 및 Amazon RDS API에는 각 목록의 종류를 나타내는 파라미터가 있습니다. AWS CLI 또는 Amazon RDS API를 사용하는 경우, 목록에 개별 멤버를 추가하거나 제거할 수 없으며, 항상 전체 새 목록을 지정합니다.

장애 조치 또는 승격으로 인해 DB 인스턴스가 기본 인스턴스와 Aurora 복제본 간에 역할을 변경해도 Aurora는 이러한 목록에 지정된 DB 인스턴스를 변경하지 않습니다. 예를 들어 READER 유형의 사용자 지정 엔드포인트에는 Aurora 복제본이었다가 이후 기본 인스턴스로 승격된 DB 인스턴스가 포함될 수 있습니다. 그러나 DB 인스턴스에 사용자 지정 엔드포인트 유형(READER 또는 ANY)과 호환되는 역할이 있는 경우 사용자 지정 엔드포인트를 통해서만 해당 DB 인스턴스에 연결할 수 있습니다.

DB 인스턴스 하나를 둘 이상의 사용자 지정 엔드포인트와 연결할 수 있습니다. 예를 들어 클러스터에 새 DB 인스턴스를 추가하거나 Aurora가 AutoScaling 메커니즘을 통해 DB 인스턴스를 자동으로 추가한다고 가정하겠습니다. 이러한 경우 적합한 모든 사용자 지정 엔드포인트에 DB 인스턴스가 추가됩니다. DB 인스턴스가 추가되는 엔드포인트는 사용자 지정 엔드포인트 유형(READER 또는 ANY)과, 각 엔드포인트에 대해 정의한 정적 또는 제외 목록에 따라 다릅니다. 예를 들어 엔드포인트에 DB 인스턴스의 정적 목록이 포함된 경우, 해당 엔드포인트에는 새로 추가된 Aurora 복제본이 추가되지 않습니다. 반대로 엔드포인트에 제외 목록이 있는 경우, 새로 추가된 Aurora 복제본이 제외 목록에서 이름이 지정되지 않았고 역할이 사용자 지정 엔드포인트 유형과 일치하면 엔드포인트에 추가됩니다.

Aurora 복제본을 사용할 수 없게 된 경우, 사용자 지정 엔드포인트와 연결된 상태로 유지됩니다. 예를 들어 이상이 있거나, 중지되었거나, 재부팅되더라도 사용자 지정 엔드포인트의 일부로 유지됩니다. 그러나 다시 사용할 수 있게 될 때까지 그러한 엔드포인트를 통해 연결할 수 없습니다.

사용자 지정 엔드포인트 관리

새로 생성된 Aurora 클러스터에는 사용자 지정 엔드포인트가 없기 때문에, 이러한 객체를 직접 만들고 관리해야 합니다. AWS Management 콘솔, AWS CLI 또는 Amazon RDS API를 사용하여 관리할 수 있습니다.

참고

또한 스냅샷에서 복원된 Aurora 클러스터의 사용자 지정 엔드포인트도 만들고 관리해야 합니다. 사용자 지정 엔드포인트는 스냅샷에 포함되지 않습니다. 복원 후 사용자 지정 엔드포인트를 다시 만들고, 복원된 클러스터가 원래 리전과 동일한 리전에 있는 경우 새 엔드포인트 이름을 선택합니다.

AWS Management 콘솔에서 사용자 지정 엔드포인트를 작업하려면 Aurora 클러스터의 세부 정보 페이지로 이동하고 사용자 지정 엔드포인트 섹션 아래의 컨트롤을 사용합니다.

AWS CLI에서 사용자 지정 엔드포인트를 작업하려면 다음 작업을 사용하면 됩니다.

Amazon RDS API를 통해 사용자 지정 엔드포인트를 작업하려면 다음 함수를 사용하면 됩니다.

사용자 지정 엔드포인트 만들기

AWS Management 콘솔

AWS Management 콘솔을 사용하여 사용자 지정 엔드포인트를 만들려면 클러스터 세부 정보 페이지로 이동하고 엔드포인트 섹션에서 Create custom endpoint 작업을 선택합니다. 사용자 ID와 리전에 고유한 사용자 지정 엔드포인트의 이름을 선택합니다. 클러스터가 확장되더라도 동일하게 유지되는 DB 인스턴스 목록을 선택하려면 이 클러스터에 추가된 향후 인스턴스 첨부 확인란을 선택하지 않은 채로 둡니다. 이 확인란을 선택한 경우 클러스터에 새 인스턴스를 추가하면 사용자 지정 엔드포인트가 이러한 새 인스턴스를 동적으로 추가합니다.

AWS Management 콘솔에서 ANY 또는 READER 유형의 사용자 지정 엔드포인트는 선택할 수 없습니다. AWS Management 콘솔을 통해 만드는 모든 사용자 지정 엔드포인트는 ANY 유형입니다.

AWS CLI

AWS CLI를 사용하여 사용자 지정 엔드포인트를 만들려면 create-db-cluster-endpoint 명령을 실행합니다.

다음 명령은 특정 클러스터에 연결된 사용자 지정 엔드포인트를 만듭니다. 처음에 엔드포인트는 클러스터의 모든 Aurora 복제본 인스턴스와 연결되어 있습니다. 후속 명령은 엔드포인트를 클러스터의 특정 DB 인스턴스 집합과 연결합니다.

Linux, OS X, Unix의 경우:

aws rds create-db-cluster-endpoint --db-cluster-endpoint-identifier custom-endpoint-doc-sample \ --endpoint-type reader \ --db-cluster-identifier cluster_id aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier custom-endpoint-doc-sample \ --static-members instance_name_1 instance_name_2

Windows의 경우:

aws rds create-db-cluster-endpoint --db-cluster-endpoint-identifier custom-endpoint-doc-sample ^ --endpoint-type reader ^ --db-cluster-identifier cluster_id aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier custom-endpoint-doc-sample ^ --static-members instance_name_1 instance_name_2
RDS API

RDS API를 사용하여 사용자 지정 엔드포인트를 만들려면 CreateDBClusterEndpoint 작업을 실행합니다.

사용자 지정 엔드포인트 보기

AWS Management 콘솔

AWS Management 콘솔을 사용하여 사용자 지정 엔드포인트를 보려면 해당 클러스터의 클러스터 세부 정보 페이지로 이동하고 엔드포인트 섹션 아래를 봅니다. 이 섹션에는 사용자 지정 엔드포인트에 대한 정보만 포함되어 있습니다. 기본 제공 엔드포인트의 세부 정보는 기본 세부 정보 섹션에 나와 있습니다. 특정 사용자 지정 엔드포인트의 세부 정보를 보려면 해당 이름을 선택하여 해당 엔드포인트의 세부 정보 페이지를 불러옵니다.

다음 스크린샷은 Aurora 클러스터의 사용자 지정 엔드포인트 목록이 처음에 비어 있음을 보여 줍니다.

해당 클러스터의 사용자 지정 엔드포인트를 만들면 엔드포인트 섹션 아래에 표시됩니다.

세부 정보 페이지까지 클릭해 가면 엔드포인트가 현재 연결된 DB 인스턴스가 표시됩니다.

클러스터에 추가된 새 DB 인스턴스가 엔드포인트에도 자동으로 추가되었는지 여부에 대한 추가 정보를 보려면 엔드포인트의 편집 대화 상자를 불러옵니다.

AWS CLI

AWS CLI를 사용하여 사용자 지정 엔드포인트를 보려면 describe-db-cluster-endpoints 명령을 실행합니다.

다음 명령은 지정된 리전의 지정된 클러스터와 연결된 사용자 지정 엔드포인트를 보여 줍니다. 출력에는 기본 제공 엔드포인트와 사용자 지정 엔드포인트가 모두 포함됩니다.

Linux, OS X, Unix의 경우:

aws rds describe-db-cluster-endpoints --region region_name \ --db-cluster-identifier cluster_id

Windows의 경우:

aws rds describe-db-cluster-endpoints --region region_name ^ --db-cluster-identifier cluster_id

다음은 describe-db-cluster-endpoints 명령의 출력 샘플을 보여 줍니다. WRITER 또는 READEREndpointType는 클러스터의 기본 제공 읽기-쓰기 및 읽기 전용 엔드포인트를 나타냅니다. CUSTOMEndpointType는 연결된 DB 인스턴스를 생성하고 선택한 엔드포인트를 나타냅니다. 엔드포인트 중 하나의 비어 있지 않은 StaticMembers 필드는 정확한 DB 인스턴스 집합과 연결되었음을 나타냅니다. 다른 엔드포인트의 비어 있지 않은 ExcludedMembers 필드는 엔드포인트가 ExcludedMembers 아래에 나열된 인스턴스 이외의 모든 DB 인스턴스와 연결되어 있음을 나타냅니다. 이 두 번째 종류의 사용자 지정 엔드포인트는 클러스터에 새 인스턴스를 추가할 때 이 새 인스턴스를 포함하도록 확장됩니다.

{ "DBClusterEndpoints": [ { "Endpoint": "custom-endpoint-demo.cluster-123456789012.ca-central-1.rds.amazonaws.com", "Status": "available", "DBClusterIdentifier": "custom-endpoint-demo", "EndpointType": "WRITER" }, { "Endpoint": "custom-endpoint-demo.cluster-ro-123456789012.ca-central-1.rds.amazonaws.com", "Status": "available", "DBClusterIdentifier": "custom-endpoint-demo", "EndpointType": "READER" }, { "CustomEndpointType": "ANY", "DBClusterEndpointIdentifier": "powers-of-2", "ExcludedMembers": [], "DBClusterIdentifier": "custom-endpoint-demo", "Status": "available", "EndpointType": "CUSTOM", "Endpoint": "powers-of-2.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com", "StaticMembers": [ "custom-endpoint-demo-04", "custom-endpoint-demo-08", "custom-endpoint-demo-01", "custom-endpoint-demo-02" ], "DBClusterEndpointResourceIdentifier": "cluster-endpoint-W7PE3TLLFNSHXQKFU6J6NV5FHU", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:powers-of-2" }, { "CustomEndpointType": "ANY", "DBClusterEndpointIdentifier": "eight-and-higher", "ExcludedMembers": [ "custom-endpoint-demo-04", "custom-endpoint-demo-02", "custom-endpoint-demo-07", "custom-endpoint-demo-05", "custom-endpoint-demo-03", "custom-endpoint-demo-06", "custom-endpoint-demo-01" ], "DBClusterIdentifier": "custom-endpoint-demo", "Status": "available", "EndpointType": "CUSTOM", "Endpoint": "eight-and-higher.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com", "StaticMembers": [], "DBClusterEndpointResourceIdentifier": "cluster-endpoint-W7PE3TLLFNSHYQKFU6J6NV5FHU", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:eight-and-higher" } ] }
RDS API

RDS API를 사용하여 사용자 지정 엔드포인트를 보려면 DescribeDBClusterEndpoints.html 작업을 실행합니다.

사용자 지정 엔드포인트 편집

사용자 지정 엔드포인트의 속성을 편집하여 엔드포인트와 연결된 DB 인스턴스를 변경할 수 있습니다. 또한 정적 목록과 제외 목록 간에 엔드포인트를 변경할 수도 있습니다. 이러한 엔드포인트 속성에 대한 세부 정보가 필요한 경우, 사용자 지정 엔드포인트의 멤버십 규칙을 참조하십시오.

편집 작업으로 인한 변경이 진행 중인 동안에는 사용자 지정 엔드포인트에 연결하거나 사용할 수 없습니다. 엔드포인트 상태가 Available(사용 가능)로 돌아오고 다시 연결할 수 있으려면 몇 분이 걸릴 수 있습니다.

AWS Management 콘솔

AWS Management 콘솔을 사용하여 사용자 지정 엔드포인트를 편집하려면 클러스터 세부 정보 페이지에서 해당 엔드포인트를 선택하거나, 해당 엔드포인트의 세부 정보 페이지를 불러와서 편집 작업을 선택합니다.

AWS CLI

AWS CLI를 사용하여 사용자 지정 엔드포인트를 편집하려면 modify-db-cluster-endpoint 명령을 실행합니다.

다음 명령은 사용자 지정 엔드포인트에 적용되는 DB 인스턴스 집합을 변경하고 필요에 따라 정적 목록 또는 제외 목록의 동작 간에 전환합니다. --static-members--excluded-members 파라미터는 공백으로 구분된 DB 인스턴스 식별자 목록을 가져옵니다.

Linux, OS X, Unix의 경우:

aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier my-custom-endpoint \ --static-members db-instance-id-1 db-instance-id-2 db-instance-id-3 \ --region region_name aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier my-custom-endpoint \ --excluded-members db-instance-id-4 db-instance-id-5 \ --region region_name

Windows의 경우:

aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier my-custom-endpoint ^ --static-members db-instance-id-1 db-instance-id-2 db-instance-id-3 ^ --region region_name aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier my-custom-endpoint ^ --excluded-members db-instance-id-4 db-instance-id-5 ^ --region region_name
RDS API

RDS API를 사용하여 사용자 지정 엔드포인트를 편집하려면 ModifyDBClusterEndpoint.html 작업을 실행합니다.

사용자 지정 엔드포인트 삭제

AWS Management 콘솔

AWS Management 콘솔을 사용하여 사용자 지정 엔드포인트를 삭제하려면 클러스터 세부 정보 페이지로 이동하고, 해당 사용자 지정 엔드포인트를 선택한 후, 삭제 작업을 선택합니다.

AWS CLI

AWS CLI를 사용하여 사용자 지정 엔드포인트를 삭제하려면 delete-db-cluster-endpoint 명령을 실행합니다.

다음 명령은 사용자 지정 엔드포인트를 삭제합니다. 연결된 클러스터는 지정하지 않아도 되지만, 리전은 지정해야 합니다.

Linux, OS X, Unix의 경우:

aws rds delete-db-cluster-endpoint --db-cluster-endpoint-identifier custom-end-point-id \ --region region_name

Windows의 경우:

aws rds delete-db-cluster-endpoint --db-cluster-endpoint-identifier custom-end-point-id ^ --region region_name
RDS API

RDS API를 사용하여 사용자 지정 엔드포인트를 삭제하려면 DeleteDBClusterEndpoint 작업을 실행합니다.

사용자 지정 엔드포인트에 대한 종합 AWS CLI 예제

다음 자습서에서는 Unix 셸 구문과 함께 AWS CLI 예제를 사용하여 여러 "작은" DB 인스턴스와 몇 개의 "큰" DB 인스턴스가 있는 클러스터를 정의하고, 사용자 지정 엔드포인트를 만들어 각 DB 인스턴스 집합에 연결할 수 있음을 보여 줍니다. 자체 시스템에서 비슷한 명령을 실행하려면 리전, 서브넷 그룹, VPC 보안 그룹 등의 파라미터에 자체 값을 제공할 수 있도록 Aurora 클러스터와 AWS CLI 사용법의 기본을 충분히 숙지한 상태여야 합니다.

이 예제에서는 초기 설정 단계인 Aurora 클러스터 만들기와 클러스터에 DB 인스턴스 추가하기를 보여 줍니다. 이는 다른 유형의 클러스터로, 모든 DB 인스턴스의 용량이 같지 않음을 뜻합니다. 대부분의 인스턴스는 AWS 인스턴스 클래스 db.r4.4xlarge를 사용하지만, 마지막 두 DB 인스턴스는 db.r4.16xlarge를 사용합니다. 이러한 각 샘플 create-db-instance 명령은 화면에 출력을 인쇄하고 나중에 검사하기 위해 파일에 JSON 복사본을 저장합니다.

aws rds create-db-cluster --db-cluster-identifier custom-endpoint-demo --engine aurora \ --engine-version 5.6.10a --master-username $MASTER_USER --master-user-password $MASTER_PW \ --db-subnet-group-name $SUBNET_GROUP --vpc-security-group-ids $VPC_SECURITY_GROUP \ --region $REGION for i in 01 02 03 04 05 06 07 08 do aws rds create-db-instance --db-instance-identifier custom-endpoint-demo-${i} \ --engine aurora --db-cluster-identifier custom-endpoint-demo --db-instance-class db.r4.4xlarge \ --region $REGION \ | tee custom-endpoint-demo-${i}.json done for i in 09 10 do aws rds create-db-instance --db-instance-identifier custom-endpoint-demo-${i} \ --engine aurora --db-cluster-identifier custom-endpoint-demo --db-instance-class db.r4.16xlarge \ --region $REGION \ | tee custom-endpoint-demo-${i}.json done

더 큰 인스턴스는 특수한 종류의 쿼리 보고를 위해 예약되어 있습니다. 다음 예제에서는 이러한 인스턴스가 기본 인스턴스로 승격될 가능성이 없도록 해당 인스턴스의 승격 티어를 가장 낮은 우선 순위로 변경합니다.

for i in 09 10 do aws rds modify-db-instance --db-instance-id custom-endpoint-demo-${i} \ --region $REGION --promotion-tier 15 done

리소스를 가장 많이 사용하는 쿼리에만 "더 큰" 인스턴스 두 개를 사용하려고 한다고 가정하겠습니다. 사용자 지정 읽기 전용 엔드포인트를 만든 후, 엔드포인트가 그러한 DB 인스턴스에만 연결되도록 정적 멤버 목록을 추가할 수 있습니다. 그러한 인스턴스는 이미 가장 낮은 승격 티어에 있으므로, 어느 인스턴스도 기본 인스턴스로 승격될 가능성이 낮습니다. 두 인스턴스 중 하나가 기본 인스턴스로 승격된 경우, ANY 유형 대신에 READER 유형으로 지정했으므로 이 엔드포인트를 통해 해당 인스턴스에 접근할 수 없게 됩니다. 다음 예제에서는 엔드포인트 생성 및 수정 명령과, 사용자 지정 엔드포인트의 초기 및 수정된 상태가 나와 있는 샘플 JSON 출력을 보여 줍니다.

$ aws rds create-db-cluster-endpoint --region $REGION \ --db-cluster-identifier custom-endpoint-demo \ --db-cluster-endpoint-identifier big-instances --endpoint-type reader { "EndpointType": "CUSTOM", "Endpoint": "big-instances.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com", "DBClusterEndpointIdentifier": "big-instances", "DBClusterIdentifier": "custom-endpoint-demo", "StaticMembers": [], "DBClusterEndpointResourceIdentifier": "cluster-endpoint-W7PE3TLLFNSHXQKFU6J6NV5FHU", "ExcludedMembers": [], "CustomEndpointType": "READER", "Status": "creating", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:big-instances" } $ aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier big-instances \ --static-members custom-endpoint-demo-09 custom-endpoint-demo-10 --region $REGION { "EndpointType": "CUSTOM", "ExcludedMembers": [], "DBClusterEndpointIdentifier": "big-instances", "DBClusterEndpointResourceIdentifier": "cluster-endpoint-W7PE3TLLFNSHXQKFU6J6NV5FHU", "CustomEndpointType": "READER", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:big-instances", "StaticMembers": [ "custom-endpoint-demo-10", "custom-endpoint-demo-09" ], "Status": "modifying", "Endpoint": "big-instances.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com", "DBClusterIdentifier": "custom-endpoint-demo" }

클러스터의 기본 READER 엔드포인트는 "작거나" "큰" DB 인스턴스에 연결될 수 있으므로, 클러스터가 사용 중일 때 쿼리 성능과 확장성을 예측하는 것은 어렵습니다. DB 인스턴스 집합 간에 워크로드를 깔끔하게 나누려면 기본 READER 엔드포인트를 무시하고 다른 모든 DB 인스턴스에 연결되는 두 번째 사용자 지정 엔드포인트를 만들면 됩니다. 다음 예제에서는 사용자 지정 엔드포인트를 만든 후 제외 목록을 추가하여 이를 수행합니다. 클러스터에 나중에 추가하는 다른 모든 DB 인스턴스는 이 엔드포인트에 자동으로 추가됩니다. ANY 유형은 이 엔드포인트가 총 여덟 개의 인스턴스(기본 인스턴스 하나와 Aurora 복제본 일곱 개)와 연결되어 있음을 뜻합니다. 이 예제에서 READER 유형을 사용한 경우, 사용자 지정 엔드포인트는 Aurora 복제본 일곱 개에만 연결됩니다.

$ aws rds create-db-cluster-endpoint --region $REGION --db-cluster-identifier custom-endpoint-demo \ --db-cluster-endpoint-identifier small-instances --endpoint-type any { "Status": "creating", "DBClusterEndpointIdentifier": "small-instances", "CustomEndpointType": "ANY", "EndpointType": "CUSTOM", "Endpoint": "small-instances.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com", "StaticMembers": [], "ExcludedMembers": [], "DBClusterIdentifier": "custom-endpoint-demo", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:small-instances", "DBClusterEndpointResourceIdentifier": "cluster-endpoint-6RDDXQOC3AKKZT2PRD7ST37BMY" } $ aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier small-instances \ --excluded-members custom-endpoint-demo-09 custom-endpoint-demo-10 --region $REGION { "DBClusterEndpointIdentifier": "small-instances", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:small-instances", "DBClusterEndpointResourceIdentifier": "cluster-endpoint-6RDDXQOC3AKKZT2PRD7ST37BMY", "CustomEndpointType": "ANY", "Endpoint": "small-instances.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com", "EndpointType": "CUSTOM", "ExcludedMembers": [ "custom-endpoint-demo-09", "custom-endpoint-demo-10" ], "StaticMembers": [], "DBClusterIdentifier": "custom-endpoint-demo", "Status": "modifying" }

다음 예제에서는 이 클러스터의 엔드포인트 상태를 확인합니다. 클러스터에 여전히 EndPointTypeWRITER인 원래 클러스터 엔드포인트가 있으며, 관리, ETL 및 기타 쓰기 작업에 여전히 이 엔드포인트를 사용합니다. 여전히 원래 READER 엔드포인트가 있는데, 이 엔드포인트로의 각 연결을 "작거나" "큰" DB 인스턴스로 보낼 수 있으므로 이 인스턴스를 사용하지 않습니다. 사용자 지정 엔드포인트는 이 동작을 예측 가능하게 합니다. 지정한 엔드포인트를 기반으로 "작거나" "큰" DB 인스턴스 중 하나를 사용하도록 연결이 보장되어 있기 때문입니다.

$ aws rds describe-db-cluster-endpoints --region $REGION { "DBClusterEndpoints": [ { "EndpointType": "WRITER", "Endpoint": "custom-endpoint-demo.cluster-123456789012.ca-central-1.rds.amazonaws.com", "Status": "available", "DBClusterIdentifier": "custom-endpoint-demo" }, { "EndpointType": "READER", "Endpoint": "custom-endpoint-demo.cluster-ro-123456789012.ca-central-1.rds.amazonaws.com", "Status": "available", "DBClusterIdentifier": "custom-endpoint-demo" }, { "Endpoint": "small-instances.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com", "CustomEndpointType": "ANY", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:small-instances", "ExcludedMembers": [ "custom-endpoint-demo-09", "custom-endpoint-demo-10" ], "DBClusterEndpointResourceIdentifier": "cluster-endpoint-6RDDXQOC3AKKZT2PRD7ST37BMY", "DBClusterIdentifier": "custom-endpoint-demo", "StaticMembers": [], "EndpointType": "CUSTOM", "DBClusterEndpointIdentifier": "small-instances", "Status": "modifying" }, { "Endpoint": "big-instances.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com", "CustomEndpointType": "READER", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:big-instances", "ExcludedMembers": [], "DBClusterEndpointResourceIdentifier": "cluster-endpoint-W7PE3TLLFNSHXQKFU6J6NV5FHU", "DBClusterIdentifier": "custom-endpoint-demo", "StaticMembers": [ "custom-endpoint-demo-10", "custom-endpoint-demo-09" ], "EndpointType": "CUSTOM", "DBClusterEndpointIdentifier": "big-instances", "Status": "available" } ] }

마지막 예제에서는 사용자 지정 엔드포인트로의 연속적인 데이터베이스 연결이 Aurora 클러스터의 다양한 DB 인스턴스에 연결되는 방법을 보여 줍니다. small-instances 엔드포인트는 항상 이 클러스터에서 낮은 번호의 호스트인 db.r4.4xlarge DB 인스턴스에 연결됩니다.

$ mysql -h small-instances.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com -u $MYUSER -p mysql> select @@aurora_server_id; +-------------------------+ | @@aurora_server_id | +-------------------------+ | custom-endpoint-demo-02 | +-------------------------+ $ mysql -h small-instances.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com -u $MYUSER -p mysql> select @@aurora_server_id; +-------------------------+ | @@aurora_server_id | +-------------------------+ | custom-endpoint-demo-07 | +-------------------------+ $ mysql -h small-instances.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com -u $MYUSER -p mysql> select @@aurora_server_id; +-------------------------+ | @@aurora_server_id | +-------------------------+ | custom-endpoint-demo-01 | +-------------------------+

big-instances 엔드포인트는 항상 이 클러스터에서 가장 높은 번호의 두 호스트인 db.r4.16xlarge DB 인스턴스에 연결됩니다.

$ mysql -h big-instances.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com -u $MYUSER -p mysql> select @@aurora_server_id; +-------------------------+ | @@aurora_server_id | +-------------------------+ | custom-endpoint-demo-10 | +-------------------------+ $ mysql -h big-instances.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com -u $MYUSER -p mysql> select @@aurora_server_id; +-------------------------+ | @@aurora_server_id | +-------------------------+ | custom-endpoint-demo-09 | +-------------------------+

인스턴스 엔드포인트 사용

일상적인 운영에서 인스턴스 엔드포인트를 사용하는 주요 방법은 Aurora 클러스터의 특정 인스턴스 하나에 영향을 주는 용량 또는 성능 문제를 진단하는 것입니다. 특정 인스턴스에 연결되어 있는 동안 해당 인스턴스의 상태 변수, 지표 등을 검토할 수 있습니다. 이렇게 하면 클러스터의 다른 인스턴스에 일어난 일과 별개로 해당 인스턴스에 일어난 일을 확인하는 데 도움이 됩니다.

고급 사용 사례에서는 일부 DB 인스턴스를 다른 인스턴스와 다르게 구성할 수 있습니다. 이 경우 인스턴스 엔드포인트를 사용하여 더 작거나, 더 크거나, 다른 인스턴스와 특성이 다른 인스턴스에 직접 연결합니다. 또한 이 특별한 DB 인스턴스가 기본 인스턴스로 대체되는 마지막 인스턴스가 되도록 장애 조치 우선 순위를 설정합니다. 그러한 경우 인스턴스 엔드포인트 대신에 사용자 지정 엔드포인트를 사용하는 것이 좋습니다. 그렇게 하면 클러스터에 DB 인스턴스를 더 추가할 때 연결 관리와 고가용성이 간소화됩니다.

Aurora 클러스터의 각 DB 인스턴스에는 기본 제공되는 자체 인스턴스 엔드포인트가 있으며, Aurora에서 이 엔드포인트의 이름과 기타 속성을 관리합니다. 이 종류의 엔드포인트는 생성, 삭제 또는 수정할 수 없습니다.

Aurora 엔드포인트가 고가용성으로 작동하는 방법

고가용성이 중요한 클러스터의 경우, 유용하다면 읽기-쓰기 연결에 클러스터 엔드포인트를, 읽기 전용 연결에 리더 엔드포인트를 사용합니다. 이러한 종류의 연결은 인스턴스 엔드포인트보다 DB 인스턴스 장애 조치를 더 잘 관리합니다. 인스턴스 엔드포인트는 DB 클러스터의 특정 DB 인스턴스에 연결되므로, 해당 DB 인스턴스를 사용할 수 없게 된 경우 애플리케이션의 로직이 다른 엔드포인트를 선택해야 합니다.

DB 클러스터의 기본 DB 인스턴스에 장애가 발생하면 Aurora가 자동으로 새로운 기본 DB 인스턴스로 장애 조치합니다. 이때는 기존 Aurora 복제본을 새로운 기본 DB 인스턴스로 승격시키거나, 기본 DB 인스턴스를 새롭게 생성하는 방법이 있습니다. 장애 조치가 발생하면 클러스터 엔드포인트를 사용하여 새롭게 승격 또는 생성된 기본 DB 인스턴스에 다시 연결하거나, 리더 엔드포인트를 사용하여 DB 클러스터에서 Aurora 복제본 중 하나에 다시 연결할 수 있습니다. 장애 조치 중 리더 엔드포인트는 Aurora 복제본이 기본 DB 인스턴스로 새롭게 승격된 후 짧은 시간 동안 DB 클러스터의 새로운 기본 DB 인스턴스에 직접 연결할 수 있습니다.

인스턴스 엔드포인트 연결을 관리하는 자체 애플리케이션 로직을 설계하는 경우, DB 클러스터에서 사용 가능한 DB 인스턴스의 결과 집합을 수동으로 또는 프로그래밍 방식으로 가져올 수 있습니다. 그런 다음 장애 조치 이후 인스턴스 클래스를 확인하고 해당 인스턴스 엔드포인트에 연결하면 됩니다.

장애 조치에 대한 자세한 내용은 Aurora DB 클러스터의 내결함성 단월을 참조하십시오.