Memecahkan masalah kesalahan koneksi di Amazon Keyspaces - Amazon Keyspaces (untuk Apache Cassandra)

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memecahkan masalah kesalahan koneksi di Amazon Keyspaces

Mengalami masalah saat menghubungkan? Berikut adalah beberapa masalah umum dan cara mengatasinya.

Kesalahan saat menghubungkan ke titik akhir Amazon Keyspaces

Kesalahan koneksi dan koneksi yang gagal dapat mengakibatkan pesan kesalahan yang berbeda. Bagian berikut mencakup skenario yang paling umum.

Saya tidak dapat terhubung ke Amazon Keyspaces dengan cqlsh

Anda mencoba terhubung ke titik akhir Amazon Keyspaces menggunakan cqlsh dan koneksi gagal dengan file. Connection error

Jika Anda mencoba menyambung ke tabel Amazon Keyspaces dan cqlsh belum dikonfigurasi dengan benar, koneksi gagal. Bagian berikut memberikan contoh masalah konfigurasi paling umum yang mengakibatkan kesalahan koneksi saat Anda mencoba membuat koneksi menggunakan cqlsh.

catatan

Jika Anda mencoba terhubung ke Amazon Keyspaces dari VPC, izin tambahan diperlukan. Agar berhasil mengonfigurasi koneksi menggunakan titik akhir VPC, ikuti langkah-langkah di file. Tutorial: Menghubungkan ke Amazon Keyspaces menggunakan antarmuka VPC endpoint

Anda mencoba terhubung ke Amazon Keyspaces menggunakan cqlsh, tetapi Anda mendapatkan kesalahan koneksi. timed out

Ini mungkin terjadi jika Anda tidak menyediakan port yang benar, yang menghasilkan kesalahan berikut.

# 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")})

Untuk mengatasi masalah ini, verifikasi bahwa Anda menggunakan port 9142 untuk koneksi.

Anda mencoba terhubung ke Amazon Keyspaces menggunakan cqlsh, tetapi Anda mendapatkan kesalahan. Name or service not known

Ini mungkin terjadi jika Anda menggunakan titik akhir yang salah eja atau tidak ada. Dalam contoh berikut, nama titik akhir salah eja.

# 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

Untuk mengatasi masalah ini saat Anda menggunakan titik akhir publik untuk terhubung, pilih titik akhir yang tersedia dariTitik akhir layanan untuk Amazon Keyspaces, dan verifikasi bahwa nama titik akhir tidak memiliki kesalahan. Jika Anda menggunakan titik akhir VPC untuk terhubung, verifikasi bahwa informasi titik akhir VPC sudah benar dalam konfigurasi cqlsh Anda.

Anda mencoba terhubung ke Amazon Keyspaces menggunakan cqlsh, tetapi Anda menerima kesalahan. OperationTimedOut

Amazon Keyspaces mengharuskan SSL diaktifkan untuk koneksi guna memastikan keamanan yang kuat. Parameter SSL mungkin hilang jika Anda menerima kesalahan berikut.

# 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',)}) #

Untuk mengatasi masalah ini, tambahkan tanda berikut ke perintah koneksi cqlsh.

--ssl

Anda mencoba terhubung ke Amazon Keyspaces menggunakan cqlsh, dan Anda menerima kesalahan. SSL transport factory requires a valid certfile to be specified

Dalam hal ini, jalur ke sertifikat SSL/TLS tidak ada, yang menghasilkan kesalahan berikut.

# 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. #

Untuk mengatasi masalah ini, tambahkan path ke certfile di komputer Anda.

certfile = path_to_file/sf-class2-root.crt

Anda mencoba terhubung ke Amazon Keyspaces menggunakan cqlsh, tetapi Anda menerima kesalahan. No such file or directory

Ini mungkin terjadi jika jalur ke file sertifikat di komputer Anda salah, yang menghasilkan kesalahan berikut.

# 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')}) #

Untuk mengatasi masalah ini, verifikasi bahwa jalur ke certfile di komputer Anda sudah benar.

Anda mencoba terhubung ke Amazon Keyspaces menggunakan cqlsh, tetapi Anda menerima kesalahan. [X509] PEM lib

Ini mungkin terjadi jika file sf-class2-root.crt sertifikat SSL/TLS tidak valid, yang menghasilkan kesalahan berikut.

# 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)")}) #

Untuk mengatasi masalah ini, unduh sertifikat digital Starfield menggunakan perintah berikut. Simpan sf-class2-root.crt secara lokal atau di direktori home Anda.

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

Anda mencoba terhubung ke Amazon Keyspaces menggunakan cqlsh, tetapi Anda menerima kesalahan SSL. unknown

Ini mungkin terjadi jika file sf-class2-root.crt sertifikat SSL/TLS kosong, yang menghasilkan kesalahan berikut.

# 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)")}) #

Untuk mengatasi masalah ini, unduh sertifikat digital Starfield menggunakan perintah berikut. Simpan sf-class2-root.crt secara lokal atau di direktori home Anda.

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

Anda mencoba terhubung ke Amazon Keyspaces menggunakan cqlsh, tetapi Anda menerima kesalahan. SSL: CERTIFICATE_VERIFY_FAILED

Ini mungkin terjadi jika file sertifikat SSL/TLS tidak dapat diverifikasi, yang menghasilkan kesalahan berikut.

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)")})

Untuk mengatasi masalah ini, unduh file sertifikat lagi menggunakan perintah berikut. Simpan sf-class2-root.crt secara lokal atau di direktori home Anda.

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

Anda mencoba terhubung ke Amazon Keyspaces menggunakan cqlsh, tetapi Anda menerima kesalahan. Last error: timed out

Ini mungkin terjadi jika Anda tidak mengonfigurasi aturan keluar untuk Amazon Keyspaces di grup keamanan Amazon EC2 Anda, yang menghasilkan kesalahan berikut.

# 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")}) #

Untuk mengonfirmasi bahwa masalah ini disebabkan oleh konfigurasi instans Amazon EC2 dan tidakcqlsh, Anda dapat mencoba menghubungkan ke ruang kunci Anda menggunakan AWS CLI, misalnya dengan perintah berikut.

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

Jika perintah ini juga habis waktu, instans Amazon EC2 tidak dikonfigurasi dengan benar.

Untuk mengonfirmasi bahwa Anda memiliki izin yang cukup untuk mengakses Amazon Keyspaces, Anda dapat menggunakan file untuk AWS CloudShell terhubung. cqlsh Jika koneksi tersebut dibuat, Anda perlu mengonfigurasi instans Amazon EC2.

Untuk mengatasi masalah ini, konfirmasikan bahwa instans Amazon EC2 Anda memiliki aturan keluar yang memungkinkan lalu lintas ke Amazon Keyspaces. Jika bukan itu masalahnya, Anda perlu membuat grup keamanan baru untuk instans EC2, dan menambahkan aturan yang memungkinkan lalu lintas keluar ke sumber daya Amazon Keyspaces. Untuk memperbarui aturan keluar untuk mengizinkan lalu lintas ke Amazon Keyspaces, pilih CQLSH/CASSANDRA dari menu tarik-turun Ketik.

Setelah membuat grup keamanan baru dengan aturan lalu lintas keluar, Anda perlu menambahkannya ke instance. Pilih instance dan kemudian pilih Actions, lalu Security, dan kemudian Change security groups. Tambahkan grup keamanan baru dengan aturan keluar, tetapi pastikan bahwa grup default juga tetap tersedia.

Untuk informasi selengkapnya tentang cara melihat dan mengedit aturan keluar EC2, lihat Menambahkan aturan ke grup keamanan di Panduan Pengguna Amazon EC2.

Anda mencoba terhubung ke Amazon Keyspaces menggunakan cqlsh, tetapi Anda menerima kesalahan. Unauthorized

Ini mungkin terjadi jika Anda kehilangan izin Amazon Keyspaces dalam kebijakan pengguna IAM, yang mengakibatkan kesalahan berikut.

# 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."',)}) #

Untuk mengatasi masalah ini, pastikan bahwa pengguna IAM testuser-at-12345678910 memiliki izin untuk mengakses Amazon Keyspaces. Untuk contoh kebijakan IAM yang memberikan akses ke Amazon Keyspaces, lihat. Contoh kebijakan berbasis identitas Amazon Keyspaces

Untuk panduan pemecahan masalah yang khusus untuk akses IAM, lihat. Memecahkan masalah identitas dan akses Amazon Keyspaces

Anda mencoba terhubung ke Amazon Keyspaces menggunakan cqlsh, tetapi Anda menerima kesalahan. Bad credentials

Ini mungkin terjadi jika nama pengguna atau kata sandi salah, yang mengakibatkan kesalahan berikut.

# 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"',)}) #

Untuk mengatasi masalah ini, verifikasi bahwa USERNAME dan PASSWORD dalam kode Anda cocok dengan nama pengguna dan kata sandi yang Anda peroleh ketika Anda membuat kredensi khusus layanan.

penting

Jika Anda terus melihat kesalahan saat mencoba terhubung dengan cqlsh, jalankan kembali perintah dengan --debug opsi dan sertakan output terperinci saat menghubungi. AWS Support

Saya tidak dapat terhubung ke Amazon Keyspaces menggunakan driver klien Cassandra

Bagian berikut menunjukkan kesalahan paling umum saat menghubungkan dengan driver klien Cassandra.

Anda mencoba untuk terhubung ke tabel Amazon Keyspaces menggunakan driver DataStax Java, tetapi Anda menerima kesalahanNodeUnavailableException.

Jika koneksi di mana permintaan dicoba rusak, itu menghasilkan kesalahan berikut.

[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)]

Untuk mengatasi masalah ini, temukan nilai detak jantung dan turunkan menjadi 30 detik jika lebih tinggi.

advanced.heartbeat.interval = 30 seconds

Kemudian cari waktu habis yang terkait dan pastikan nilainya disetel ke setidaknya 5 detik.

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

Anda mencoba terhubung ke tabel Amazon Keyspaces menggunakan driver dan plugin SigV4, tetapi Anda menerima kesalahan. AttributeError

Jika kredensyal tidak dikonfigurasi dengan benar, itu menghasilkan kesalahan berikut.

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

Untuk mengatasi masalah ini, verifikasi bahwa Anda meneruskan kredensil yang terkait dengan pengguna atau peran IAM Anda saat menggunakan plugin SiGv4. Plugin SiGv4 membutuhkan kredensil berikut.

  • AWS_ACCESS_KEY_ID— Menentukan kunci AWS akses yang terkait dengan pengguna IAM atau peran.

  • AWS_SECRET_ACCESS_KEY— Menentukan kunci rahasia yang terkait dengan kunci akses. Ini pada dasarnya adalah “kata sandi” untuk kunci akses.

Untuk mempelajari selengkapnya tentang kunci akses dan plugin SiGv4, lihat. Cara membuat dan mengonfigurasi AWS kredensional untuk Amazon Keyspaces

Anda mencoba menyambung ke tabel Amazon Keyspaces menggunakan driver, tetapi Anda menerima kesalahan. PartialCredentialsError

Jika AWS_SECRET_ACCESS_KEY hilang, itu dapat mengakibatkan kesalahan berikut.

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’)})

Untuk mengatasi masalah ini, verifikasi bahwa Anda meneruskan plugin SiGv4 AWS_ACCESS_KEY_ID dan AWS_SECRET_ACCESS_KEY saat menggunakan plugin SiGv4. Untuk mempelajari selengkapnya tentang kunci akses dan plugin SiGv4, lihat. Cara membuat dan mengonfigurasi AWS kredensional untuk Amazon Keyspaces

Anda mencoba menyambung ke tabel Amazon Keyspaces menggunakan driver, tetapi Anda menerima kesalahanInvalid signature.

Ini mungkin terjadi jika Anda menggunakan kredensyal yang salah, yang menghasilkan kesalahan berikut.

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”’)})

Untuk mengatasi masalah ini, verifikasi bahwa kredensil yang Anda lewati terkait dengan pengguna IAM atau peran yang Anda konfigurasikan untuk mengakses Amazon Keyspaces. Untuk mempelajari selengkapnya tentang kunci akses dan plugin SiGv4, lihat. Cara membuat dan mengonfigurasi AWS kredensional untuk Amazon Keyspaces

Koneksi titik akhir VPC saya tidak berfungsi dengan baik

Anda mencoba terhubung ke Amazon Keyspaces menggunakan titik akhir VPC, tetapi Anda menerima kesalahan peta token atau Anda mengalami throughput rendah.

Ini mungkin terjadi jika koneksi titik akhir VPC tidak dikonfigurasi dengan benar.

Untuk mengatasi masalah ini, verifikasi detail konfigurasi berikut. Untuk mengikuti step-by-step tutorial untuk mempelajari cara mengkonfigurasi koneksi melalui antarmuka VPC endpoint untuk Amazon Keyspaces lihat. Tutorial: Menghubungkan ke Amazon Keyspaces menggunakan antarmuka VPC endpoint

  1. Konfirmasikan bahwa entitas IAM yang digunakan untuk menyambung ke Amazon Keyspaces memiliki akses baca/tulis ke tabel pengguna dan akses baca ke tabel sistem seperti yang ditunjukkan pada contoh berikut.

    { "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. Konfirmasikan bahwa entitas IAM yang digunakan untuk menyambung ke Amazon Keyspaces memiliki izin baca yang diperlukan untuk mengakses informasi titik akhir VPC di instans Amazon EC2 Anda seperti yang ditunjukkan pada contoh berikut.

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

    Kebijakan terkelola AmazonKeyspacesReadOnlyAccess_v2 dan AmazonKeyspacesFullAccess menyertakan izin yang diperlukan agar Amazon Keyspaces mengakses instans Amazon EC2 untuk membaca informasi tentang titik akhir VPC antarmuka yang tersedia.

    Untuk informasi selengkapnya tentang titik akhir VPC, lihat Menggunakan titik akhir VPC antarmuka untuk Amazon Keyspaces

  3. Konfirmasikan bahwa konfigurasi SSL driver Java menetapkan validasi nama host ke false seperti yang ditunjukkan dalam contoh ini.

    hostname-validation = false

    Untuk informasi selengkapnya tentang konfigurasi driver, lihatLangkah 2: Konfigurasikan driver.

  4. Untuk mengonfirmasi bahwa titik akhir VPC telah dikonfigurasi dengan benar, Anda dapat menjalankan pernyataan berikut dari dalam VPC Anda.

    catatan

    Anda tidak dapat menggunakan lingkungan pengembang lokal atau editor CQL Amazon Keyspaces untuk mengonfirmasi konfigurasi ini, karena mereka menggunakan titik akhir publik.

    SELECT peer FROM system.peers;

    Outputnya akan terlihat mirip dengan contoh ini dan kembali antara 2 hingga 6 node dengan alamat IP pribadi, tergantung pada pengaturan dan AWS Wilayah VPC Anda.

    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)

Saya tidak dapat terhubung menggunakan cassandra-stress

Anda mencoba terhubung ke Amazon Keyspaces menggunakan cassandra-stress perintah, tetapi Anda menerima kesalahanSSL context.

Ini terjadi jika Anda mencoba terhubung ke Amazon Keyspaces, tetapi Anda tidak memiliki pengaturan TrustStore dengan benar. Amazon Keyspaces memerlukan penggunaan Transport Layer Security (TLS) untuk membantu mengamankan koneksi dengan klien.

Dalam hal ini, Anda melihat kesalahan berikut.

Error creating the initializing the SSL Context

Untuk mengatasi masalah ini, ikuti petunjuk untuk menyiapkan TrustStore seperti yang ditunjukkan dalam topik ini. Sebelum Anda mulai

Setelah TrustStore diatur, Anda harus dapat terhubung dengan perintah berikut.

./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"

Saya tidak dapat terhubung menggunakan identitas IAM

Anda mencoba menyambung ke tabel Amazon Keyspaces menggunakan identitas IAM, tetapi Anda menerima kesalahan. Unauthorized

Ini terjadi jika Anda mencoba menyambung ke tabel Amazon Keyspaces menggunakan identitas IAM (misalnya, pengguna IAM) tanpa menerapkan kebijakan dan memberi pengguna izin yang diperlukan terlebih dahulu.

Dalam hal ini, Anda melihat kesalahan berikut.

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."',)})

Untuk mengatasi masalah ini, verifikasi izin pengguna IAM. Untuk terhubung dengan driver standar, pengguna harus memiliki setidaknya SELECT akses ke tabel sistem, karena sebagian besar driver membaca keyspace/tabel sistem ketika mereka membuat koneksi.

Misalnya kebijakan IAM yang memberikan akses ke sistem Amazon Keyspaces dan tabel pengguna, lihat. Mengakses tabel Amazon Keyspaces

Untuk meninjau bagian pemecahan masalah khusus untuk IAM, lihat. Memecahkan masalah identitas dan akses Amazon Keyspaces

Saya mencoba mengimpor data dengan cqlsh dan koneksi ke tabel Amazon Keyspaces saya terputus

Anda mencoba mengunggah data ke Amazon Keyspaces dengan cqlsh, tetapi Anda menerima kesalahan koneksi.

Koneksi ke Amazon Keyspaces gagal setelah klien cqlsh menerima tiga kesalahan berturut-turut dari jenis apa pun dari server. Klien cqlsh gagal dengan pesan berikut.

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

Untuk mengatasi kesalahan ini, Anda perlu memastikan bahwa data yang akan diimpor cocok dengan skema tabel di Amazon Keyspaces. Tinjau file impor untuk kesalahan penguraian. Anda dapat mencoba menggunakan satu baris data dengan menggunakan pernyataan INSERT untuk mengisolasi kesalahan.

Klien secara otomatis mencoba membangun kembali koneksi.