Amazon Keyspaces의 연결 문제 해결 - Amazon Keyspaces(Apache Cassandra용)

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

Amazon Keyspaces의 연결 문제 해결

연결에 문제가 있으신가요? 다음에서는 몇 가지 일반적인 문제와 이에 대한 해결 방법에 대해 설명합니다.

Amazon Keyspaces 엔드포인트에 연결하는 오류

연결 실패 및 연결 오류로 인해 다른 오류 메시지가 표시될 수 있습니다. 다음 섹션에서는 가장 일반적인 시나리오를 다룹니다.

cqlsh를 사용하여 Amazon Keyspaces에 연결할 수 없음

cqlsh를 사용하여 Amazon Keyspaces 엔드포인트에 연결하려고 하는데 Connection error와 함께 연결이 실패합니다.

Amazon Keyspaces 테이블에 연결하려고 하는데 cqlsh가 제대로 구성되지 않은 경우 연결이 실패합니다. 다음 섹션에서는 cqlsh를 사용하여 연결을 설정하려고 할 때 연결 오류가 발생하는 가장 일반적인 구성 문제의 예를 제공합니다.

참고

VPC에서 Amazon Keyspaces에 연결하려는 경우 추가 권한이 필요합니다. VPC 엔드포인트를 사용하여 연결을 성공적으로 구성하려면 자습서: 인터페이스 VPC 엔드포인트를 사용하여 Amazon Keyspaces에 연결의 단계를 따르세요.

cqlsh를 사용하여 Amazon Keyspaces에 연결하려고 하는데 연결 timed out 오류가 발생합니다.

올바른 포트를 제공하지 않은 경우 다음과 같은 오류가 발생할 수 있습니다.

# cqlsh cassandra.us-east-1.amazonaws.com 9140 -u "USERNAME" -p "PASSWORD" --ssl Connection error: ('Unable to connect to any servers', {'3.234.248.199': error(None, "Tried connecting to [('3.234.248.199', 9140)]. Last error: timed out")})

이 문제를 해결하려면 연결에 포트 9142를 사용하고 있는지 확인합니다.

cqlsh를 사용하여 Amazon Keyspaces에 연결하려고 하는데 Name or service not known 오류가 발생합니다.

철자가 틀렸거나 존재하지 않는 엔드포인트를 사용한 경우가 이에 해당할 수 있습니다. 다음 예에서는 엔드포인트 이름의 철자가 틀립니다.

# cqlsh cassandra.us-east-1.amazon.com 9142 -u "USERNAME" -p "PASSWORD" --ssl Traceback (most recent call last): File "/usr/bin/cqlsh.py", line 2458, in >module> main(*read_options(sys.argv[1:], os.environ)) File "/usr/bin/cqlsh.py", line 2436, in main encoding=options.encoding) File "/usr/bin/cqlsh.py", line 484, in __init__ load_balancing_policy=WhiteListRoundRobinPolicy([self.hostname]), File "/usr/share/cassandra/lib/cassandra-driver-internal-only-3.11.0-bb96859b.zip/cassandra-driver-3.11.0-bb96859b/cassandra/policies.py", line 417, in __init__ socket.gaierror: [Errno -2] Name or service not known

퍼블릭 엔드포인트를 사용하여 연결할 때 이 문제를 해결하려면 Amazon Keyspaces의 서비스 엔드포인트에서 사용 가능한 엔드포인트를 선택하고 엔드포인트 이름에 오류가 없는지 확인합니다. VPC 엔드포인트를 사용하여 연결하는 경우 cqlsh 구성에서 VPC 엔드포인트 정보가 올바른지 확인합니다.

cqlsh를 사용하여 Amazon Keyspaces에 연결하려고 하지만 OperationTimedOut 오류를 수신합니다.

Amazon Keyspaces에서는 강력한 보안을 보장하기 위해 연결에 SSL을 활성화해야 합니다. 다음 오류를 받는 경우 SSL 매개 변수가 누락될 수 있습니다.

# cqlsh cassandra.us-east-1.amazonaws.com -u "USERNAME" -p "PASSWORD" Connection error: ('Unable to connect to any servers', {'3.234.248.192': OperationTimedOut('errors=Timed out creating connection (5 seconds), last_host=None',)}) #

이 문제를 해결하려면 cqlsh 연결 명령에 다음 플래그를 추가합니다.

--ssl

cqlsh를 사용하여 Amazon Keyspaces에 연결하려고 하는데 SSL transport factory requires a valid certfile to be specified 오류를 수신합니다.

이 경우 SSL/TLS 인증서 경로가 누락되어 다음 오류가 발생합니다.

# cat .cassandra/cqlshrc [connection] port = 9142 factory = cqlshlib.ssl.ssl_transport_factory # # cqlsh cassandra.us-east-1.amazonaws.com -u "USERNAME" -p "PASSWORD" --ssl Validation is enabled; SSL transport factory requires a valid certfile to be specified. Please provide path to the certfile in [ssl] section as 'certfile' option in /root/.cassandra/cqlshrc (or use [certfiles] section) or set SSL_CERTFILE environment variable. #

이 문제를 해결하려면 컴퓨터에 있는 certfile에 경로를 추가합니다.

certfile = path_to_file/sf-class2-root.crt

cqlsh를 사용하여 Amazon Keyspaces에 연결하려고 하지만 No such file or directory 오류를 수신합니다.

컴퓨터에 있는 인증서 파일의 경로가 잘못되어 다음과 같은 오류가 발생할 수 있습니다.

# cat .cassandra/cqlshrc [connection] port = 9142 factory = cqlshlib.ssl.ssl_transport_factory [ssl] validate = true certfile = /root/wrong_path/sf-class2-root.crt # # cqlsh cassandra.us-east-1.amazonaws.com -u "USERNAME" -p "PASSWORD" --ssl Connection error: ('Unable to connect to any servers', {'3.234.248.192': IOError(2, 'No such file or directory')}) #

이 문제를 해결하려면 컴퓨터에 있는 certfile에 대한 경로가 올바른지 확인합니다.

cqlsh를 사용하여 Amazon Keyspaces에 연결하려고 하지만 [X509] PEM lib 오류를 수신합니다.

SSL/TLS 인증서 파일 sf-class2-root.crt가 유효하지 않아 다음 오류가 발생하는 경우가 이에 해당할 수 있습니다.

# cqlsh cassandra.us-east-1.amazonaws.com -u "USERNAME" -p "PASSWORD" --ssl Connection error: ('Unable to connect to any servers', {'3.234.248.241': error(185090057, u"Tried connecting to [('3.234.248.241', 9142)]. Last error: [X509] PEM lib (_ssl.c:3063)")}) #

이 문제를 해결하려면 다음 명령을 사용하여 Starfield 디지털 인증서를 다운로드합니다. sf-class2-root.crt를 로컬에서 또는 홈 디렉터리에 저장합니다.

curl https://certs.secureserver.net/repository/sf-class2-root.crt -O

cqlsh를 사용하여 Amazon Keyspaces에 연결하려고 하지만 unknown SSL 오류를 수신합니다.

SSL/TLS 인증서 파일 sf-class2-root.crt가 비어 있어 다음 오류가 발생하는 경우가 이에 해당할 수 있습니다.

# cqlsh cassandra.us-east-1.amazonaws.com -u "USERNAME" -p "PASSWORD" --ssl Connection error: ('Unable to connect to any servers', {'3.234.248.220': error(0, u"Tried connecting to [('3.234.248.220', 9142)]. Last error: unknown error (_ssl.c:3063)")}) #

이 문제를 해결하려면 다음 명령을 사용하여 Starfield 디지털 인증서를 다운로드합니다. sf-class2-root.crt를 로컬에서 또는 홈 디렉터리에 저장합니다.

curl https://certs.secureserver.net/repository/sf-class2-root.crt -O

cqlsh를 사용하여 Amazon Keyspaces에 연결하려고 하지만 SSL: CERTIFICATE_VERIFY_FAILED 오류를 수신합니다.

SSL/TLS 인증서 파일을 확인할 수 없어 다음 오류가 발생하는 경우가 이에 해당할 수 있습니다.

Connection error: ('Unable to connect to any servers', {'3.234.248.223': error(1, u"Tried connecting to [('3.234.248.223', 9142)]. Last error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:727)")})

이 문제를 해결하려면 다음 명령을 사용하여 인증서 파일을 다시 다운로드합니다. sf-class2-root.crt를 로컬에서 또는 홈 디렉터리에 저장합니다.

curl https://certs.secureserver.net/repository/sf-class2-root.crt -O

cqlsh를 사용하여 Amazon Keyspaces에 연결하려고 하지만 Last error: timed out 오류를 수신합니다.

Amazon EC2 보안 그룹에서 Amazon Keyspaces에 대한 아웃바운드 규칙을 구성하지 않은 경우일 수 있으며 그 결과 다음 오류가 발생합니다.

# cqlsh cassandra.us-east-1.amazonaws.com 9142 -u "USERNAME" -p "PASSWORD" --ssl Connection error: ('Unable to connect to any servers', {'3.234.248.206': error(None, "Tried connecting to [('3.234.248.206', 9142)]. Last error: timed out")}) #

이 문제가 Amazon EC2 인스턴스의 구성으로 인한 것인지 아닌지 확인하기 위해 예를 cqlsh 들어 다음 명령을 사용하여 키스페이스에 연결해 볼 수 있습니다. AWS CLI

aws keyspaces list-tables --keyspace-name 'my_keyspace'

이 명령도 제한 시간이 초과되면 Amazon EC2 인스턴스가 제대로 구성되지 않은 것입니다.

Amazon Keyspace에 액세스할 수 있는 충분한 권한이 있는지 확인하려면 를 사용하여 연결할 수 있습니다. AWS CloudShell cqlsh 연결이 설정되면 Amazon EC2 인스턴스를 구성해야 합니다.

이 문제를 해결하려면 Amazon EC2 인스턴스에 Amazon Keyspace로의 트래픽을 허용하는 아웃바운드 규칙이 있는지 확인하십시오. 그렇지 않은 경우 EC2 인스턴스에 대한 새 보안 그룹을 생성하고 Amazon Keyspaces 리소스로의 아웃바운드 트래픽을 허용하는 규칙을 추가해야 합니다. Amazon Keyspace로의 트래픽을 허용하도록 아웃바운드 규칙을 업데이트하려면 유형 드롭다운 메뉴에서 CQLSH/CASSANDRA를 선택합니다.

아웃바운드 트래픽 규칙을 사용하여 새 보안 그룹을 생성한 후에는 이를 인스턴스에 추가해야 합니다. 인스턴스를 선택한 다음 작업, 보안, 보안 그룹 변경을 차례로 선택합니다. 아웃바운드 규칙을 사용하여 새 보안 그룹을 추가하되, 기본 그룹도 계속 사용할 수 있도록 해야 합니다.

EC2 아웃바운드 규칙을 보고 편집하는 방법에 대한 자세한 내용은 Amazon EC2 사용 설명서의 보안 그룹에 규칙 추가를 참조하십시오.

cqlsh를 사용하여 Amazon Keyspaces에 연결하려고 하지만 Unauthorized 오류를 수신합니다.

이는 IAM 사용자 정책에서 Amazon Keyspaces 권한이 누락되어 다음 오류가 발생하는 경우일 수 있습니다.

# cqlsh cassandra.us-east-1.amazonaws.com 9142 -u "testuser-at-12345678910" -p "PASSWORD" --ssl Connection error: ('Unable to connect to any servers', {'3.234.248.241': AuthenticationFailed('Failed to authenticate to 3.234.248.241: Error from server: code=2100 [Unauthorized] message="User arn:aws:iam::12345678910:user/testuser has no permissions."',)}) #

이 문제를 해결하려면 IAM 사용자 testuser-at-12345678910에게 Amazon Keyspaces에 액세스할 권한이 있는지 확인합니다. Amazon Keyspaces에 액세스 권한을 부여하는 IAM 정책의 예는 Amazon Keyspaces ID 기반 정책 예제 섹션을 참조하세요.

IAM 액세스 관련 문제 해결 지침은 Amazon Keyspaces ID 및 액세스 문제 해결 섹션을 참조하세요.

cqlsh를 사용하여 Amazon Keyspaces에 연결하려고 하지만 Bad credentials 오류를 수신합니다.

사용자 이름이나 암호가 잘못되어 다음 오류가 발생하는 경우가 이에 해당할 수 있습니다.

# cqlsh cassandra.us-east-1.amazonaws.com 9142 -u "USERNAME" -p "PASSWORD" --ssl Connection error: ('Unable to connect to any servers', {'3.234.248.248': AuthenticationFailed('Failed to authenticate to 3.234.248.248: Error from server: code=0100 [Bad credentials] message="Provided username USERNAME and/or password are incorrect"',)}) #

이 문제를 해결하려면 코드의 사용자 이름암호서비스별 보안 인증을 생성할 때 얻은 사용자 이름 및 암호와 일치하는지 확인합니다.

중요

cqlsh로 연결하려고 할 때 오류가 계속 표시되면 --debug 옵션을 사용하여 명령을 다시 실행하고 AWS Support에 문의할 때 자세한 출력을 포함합니다.

Cassandra 클라이언트 드라이버를 사용하여 Amazon Keyspaces에 연결할 수 없음

다음 섹션에서는 Cassandra 클라이언트 드라이버로 연결할 때 발생하는 가장 일반적인 오류를 보여 줍니다.

DataStax Java 드라이버를 사용하여 Amazon Keyspaces 테이블에 연결하려고 하는데 오류가 발생합니다. NodeUnavailableException

요청을 시도한 연결이 끊어지면 다음 오류가 발생합니다.

[com.datastax.oss.driver.api.core.NodeUnavailableException: No connection was available to Node(endPoint=vpce-22ff22f2f22222fff-aa1bb234.cassandra.us-west-2.vpce.amazonaws.com/11.1.1111.222:9142, hostId=1a23456b-c77d-8888-9d99-146cb22d6ef6, hashCode=123ca4567)]

이 문제를 해결하려면 하트비트 값을 찾아 더 높으면 30초로 낮추십시오.

advanced.heartbeat.interval = 30 seconds

그런 다음 관련 타임아웃을 찾아 값이 5초 이상으로 설정되어 있는지 확인합니다.

advanced.connection.init-query-timeout = 5 seconds

드라이버 및 SigV4 플러그인을 사용하여 Amazon Keyspaces 테이블에 연결하려고 하지만 AttributeError 오류를 수신합니다.

보안 인증이 올바르게 구성되지 않은 경우 다음 오류가 발생합니다.

cassandra.cluster.NoHostAvailable: (‘Unable to connect to any servers’, {‘44.234.22.154:9142’: AttributeError(“‘NoneType’ object has no attribute ‘access_key’“)})

이 문제를 해결하려면 SigV4 플러그인을 사용할 때 IAM 사용자 또는 역할과 관련된 보안 인증을 전달하고 있는지 확인합니다. SigV4 플러그인에는 다음 보안 인증이 필요합니다.

  • AWS_ACCESS_KEY_ID— IAM 사용자 또는 역할과 관련된 AWS 액세스 키를 지정합니다.

  • AWS_SECRET_ACCESS_KEY - 액세스 키와 연결된 보안 키를 지정합니다. 이는 액세스 키에 대한 기본적인 "암호"입니다.

액세스 키와 SigV4 플러그인에 대한 자세한 내용은 Amazon Keyspace용 AWS 자격 증명을 생성하고 구성하는 방법 섹션을 참조하세요.

드라이버를 사용하여 Amazon Keyspaces 테이블에 연결하려고 하지만 PartialCredentialsError 오류를 수신합니다.

AWS_SECRET_ACCESS_KEY가 누락된 경우 다음 오류가 발생할 수 있습니다.

cassandra.cluster.NoHostAvailable: (‘Unable to connect to any servers’, {‘44.234.22.153:9142’: PartialCredentialsError(‘Partial credentials found in config-file, missing: aws_secret_access_key’)})

이 문제를 해결하려면 SigV4 플러그인을 사용할 때 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY를 모두 전달하고 있는지 확인합니다. 액세스 키와 SigV4 플러그인에 대한 자세한 내용은 Amazon Keyspace용 AWS 자격 증명을 생성하고 구성하는 방법 섹션을 참조하세요.

드라이버를 사용하여 Amazon Keyspaces 테이블에 연결하려고 하지만 Invalid signature 오류를 수신합니다.

잘못된 보안 인증을 사용한 경우 다음과 같은 오류가 발생할 수 있습니다.

cassandra.cluster.NoHostAvailable: (‘Unable to connect to any servers’, {‘44.234.22.134:9142’: AuthenticationFailed(‘Failed to authenticate to 44.234.22.134:9142: Error from server: code=0100 [Bad credentials] message=“Authentication failure: Invalid signature”’)})

이 문제를 해결하려면 전달하는 보안 인증이 Amazon Keyspaces에 액세스하도록 구성한 IAM 사용자 또는 역할과 연결되어 있는지 확인합니다. 액세스 키와 SigV4 플러그인에 대한 자세한 내용은 Amazon Keyspace용 AWS 자격 증명을 생성하고 구성하는 방법 섹션을 참조하세요.

VPC 엔드포인트 연결이 제대로 작동하지 않음

VPC 엔드포인트를 사용하여 Amazon Keyspaces에 연결하려고 하는데 토큰 맵 오류가 발생하거나 처리량이 낮습니다.

VPC 엔드포인트 연결이 올바르게 구성되지 않은 경우가 이에 해당할 수 있습니다.

이러한 문제를 해결하려면 다음 구성 세부 정보를 확인합니다. step-by-step 자습서를 따라 Amazon Keyspaces의 인터페이스 VPC 엔드포인트를 통한 연결을 구성하는 방법을 알아보려면 을 참조하십시오. 자습서: 인터페이스 VPC 엔드포인트를 사용하여 Amazon Keyspaces에 연결

  1. Amazon Keyspaces에 연결하는 데 사용되는 IAM 엔티티가 다음 예와 같이 사용자 테이블에 대한 읽기/쓰기 액세스 권한과 시스템 테이블에 대한 읽기 권한을 가지고 있는지 확인합니다.

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "cassandra:Select", "cassandra:Modify" ], "Resource":[ "arn:aws:cassandra:us-east-1:111122223333:/keyspace/mykeyspace/table/mytable", "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system*" ] } ] }
  2. 다음 예와 같이 Amazon Keyspaces에 연결하는 데 사용되는 IAM 엔티티에 Amazon EC2 인스턴스의 VPC 엔드포인트 정보에 액세스하는 데 필요한 읽기 권한이 있는지 확인합니다.

    { "Version":"2012-10-17", "Statement":[ { "Sid":"ListVPCEndpoints", "Effect":"Allow", "Action":[ "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcEndpoints" ], "Resource":"*" } ] }
    참고

    관리형 정책 AmazonKeyspacesReadOnlyAccess_v2AmazonKeyspacesFullAccess에는 Amazon Keyspaces가 Amazon EC2 인스턴스에 액세스하여 사용 가능한 인터페이스 VPC 엔드포인트에 대한 정보를 읽을 수 있도록 하는 데 필요한 권한이 포함되어 있습니다.

    VPC 엔드포인트에 대한 자세한 내용은 Amazon Keyspaces에 인터페이스 VPC 엔드포인트 사용 섹션을 참조하세요.

  3. 이 예와 같이 Java 드라이버의 SSL 구성이 호스트 이름 검증을 false로 설정하는지 확인합니다.

    hostname-validation = false

    드라이버 구성에 대한 자세한 내용은 2단계: 드라이버 구성 섹션을 참조하세요.

  4. VPC 엔드포인트가 올바르게 구성되었는지 확인하기 위해 VPC 내에서 다음 문을 실행할 수 있습니다.

    참고

    로컬 개발자 환경 또는 Amazon Keyspaces CQL 편집기는 퍼블릭 엔드포인트를 사용하기 때문에 이 구성을 확인하기 위해 사용할 수 없습니다.

    SELECT peer FROM system.peers;

    출력은 이 예와 비슷해야 하며 VPC 설정 및 AWS 지역에 따라 프라이빗 IP 주소가 있는 2~6개의 노드를 반환해야 합니다.

    peer --------------- 192.0.2.0.15 192.0.2.0.24 192.0.2.0.13 192.0.2.0.7 192.0.2.0.8 (5 rows)

cassandra-stress를 사용하여 연결할 수 없음

cassandra-stress 명령을 사용하여 Amazon Keyspaces에 연결하려고 하지만 SSL context 오류를 수신합니다.

이 문제는 Amazon Keyspaces에 연결하려고 하지만 trustStore가 제대로 설정되지 않은 경우 발생합니다. Amazon Keyspaces에서는 클라이언트와의 연결을 보호하는 데 도움이 되는 전송 계층 보안(TLS)을 사용해야 합니다.

이 경우 다음 오류가 표시됩니다.

Error creating the initializing the SSL Context

이 문제를 해결하려면 이 주제 시작하기 전 준비 사항에 나와 있는 대로 trustStore를 설정하는 지침을 따르세요.

trustStore가 설정되면 다음 명령을 사용하여 연결할 수 있어야 합니다.

./cassandra-stress user profile=./profile.yaml n=100 "ops(insert=1,select=1)" cl=LOCAL_QUORUM -node "cassandra.eu-north-1.amazonaws.com" -port native=9142 -transport ssl-alg="PKIX" truststore="./cassandra_truststore.jks" truststore-password="trustStore_pw" -mode native cql3 user="user_name" password="password"

IAM ID를 사용하여 연결할 수 없음

IAM ID를 사용하여 Amazon Keyspaces 테이블에 연결하려고 하지만 Unauthorized 오류를 수신합니다.

정책을 구현하고 사용자에게 필요한 권한을 먼저 부여하지 않고 IAM ID(예: IAM 사용자)를 사용하여 Amazon Keyspaces 테이블에 연결하려고 하면 이 오류가 발생합니다.

이 경우 다음 오류가 표시됩니다.

Connection error: ('Unable to connect to any servers', {'3.234.248.202': AuthenticationFailed('Failed to authenticate to 3.234.248.202: Error from server: code=2100 [Unauthorized] message="User arn:aws:iam::1234567890123:user/testuser has no permissions."',)})

이 문제를 해결하려면 IAM 사용자의 권한을 확인합니다. 표준 드라이버를 사용하여 연결하려면 사용자는 최소한 시스템 테이블에 대한 SELECT 액세스 권한을 가지고 있어야 합니다. 이는 대부분의 드라이버가 연결 시 시스템 키스페이스/테이블을 읽기 때문입니다.

Amazon Keyspaces 시스템 및 사용자 테이블에 액세스 권한을 부여하는 IAM 정책의 예는 Amazon Keyspaces 테이블에 액세스 섹션을 참조하세요.

IAM과 관련된 문제 해결 섹션을 검토하려면 Amazon Keyspaces ID 및 액세스 문제 해결 섹션을 참조하세요.

cqlsh를 사용하여 데이터를 가져오려고 하는데 Amazon Keyspaces 테이블에 대한 연결이 끊어졌습니다.

cqlsh를 사용하여 Amazon Keyspaces에 데이터를 업로드하려고 하지만 연결 오류를 수신합니다.

cqlsh 클라이언트가 서버로부터 유형에 상관없이 연속으로 세 개의 오류를 수신한 후 Amazon Keyspaces에 대한 연결이 실패합니다. cqlsh 클라이언트가 실패하고 다음 메시지가 표시됩니다.

Failed to import 1 rows: NoHostAvailable - , will retry later, attempt 3 of 100

이 오류를 해결하려면 가져올 데이터가 Amazon Keyspaces의 테이블 스키마와 일치하는지 확인해야 합니다. 가져오기 파일에 구문 분석 오류가 있는지 검토합니다. 오류를 격리하는 INSERT 문을 사용하여 단일 데이터 행을 사용해 볼 수 있습니다.

클라이언트는 자동으로 연결 재설정을 시도합니다.