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 menyambung ke Amazon Keyspaces dari aVPC, izin tambahan diperlukan. Agar berhasil mengonfigurasi koneksi menggunakan VPC titik akhir, ikuti langkah-langkah di. Tutorial: Menghubungkan ke Amazon Keyspaces menggunakan endpoint antarmuka VPC

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 tersediaTitik akhir layanan untuk Amazon Keyspaces, dan verifikasi bahwa nama titik akhir tidak memiliki kesalahan. Jika Anda menggunakan VPC titik akhir untuk terhubung, verifikasi bahwa informasi VPC titik akhir sudah benar dalam konfigurasi cqlsh Anda.

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

Amazon Keyspaces mengharuskan itu SSL diaktifkan untuk koneksi guna memastikan keamanan yang kuat. SSLParameter 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 TLS sertifikatSSL/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 SSL TLS file/certificate sf-class2-root.crt tidak valid, yang mengakibatkan 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. unknown SSL

Ini mungkin terjadi jika file SSLsf-class2-root.crt/TLScertificate 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 fileSSL/TLSsertifikat 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 EC2 Amazon 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 EC2 instance Amazon 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, EC2 instance Amazon 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 itu dibuat, Anda perlu mengonfigurasi EC2 instance Amazon.

Untuk mengatasi masalah ini, konfirmasikan bahwa EC2 instans Amazon Anda memiliki aturan keluar yang memungkinkan lalu lintas ke Amazon Keyspaces. Jika bukan itu masalahnya, Anda perlu membuat grup keamanan baru untuk EC2 instance tersebut, dan menambahkan aturan yang memungkinkan lalu lintas keluar ke sumber daya Amazon Keyspaces. Untuk memperbarui aturan keluar untuk mengizinkan lalu lintas ke Amazon Keyspaces, CQLSHpilih 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 Tindakan, lalu Keamanan, dan kemudian Ubah grup keamanan. Tambahkan grup keamanan baru dengan aturan keluar, tetapi pastikan bahwa grup default juga tetap tersedia.

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

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

Ini mungkin terjadi jika Anda kehilangan izin Amazon Keyspaces dalam kebijakan IAM pengguna, 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 IAM pengguna testuser-at-12345678910 memiliki izin untuk mengakses Amazon Keyspaces. Untuk contoh IAM kebijakan yang memberikan akses ke Amazon Keyspaces, lihat. Contoh kebijakan berbasis identitas Amazon Keyspaces

Untuk panduan pemecahan masalah yang khusus untuk IAM diakses, 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 and 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 kredensil 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 IAM pengguna atau peran Anda saat menggunakan plugin SiGv4. Plugin SiGv4 membutuhkan kredensi berikut.

  • AWS_ACCESS_KEY_ID- Menentukan kunci AWS akses yang terkait dengan IAM pengguna 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. Buat dan konfigurasikan AWS kredensi 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. Buat dan konfigurasikan AWS kredensi untuk Amazon Keyspaces

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

Ini mungkin terjadi jika Anda menggunakan kredensil 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 IAM pengguna atau peran yang Anda konfigurasikan untuk mengakses Amazon Keyspaces. Untuk mempelajari selengkapnya tentang kunci akses dan plugin SiGv4, lihat. Buat dan konfigurasikan AWS kredensi untuk Amazon Keyspaces

Koneksi VPC titik akhir saya tidak berfungsi dengan baik

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

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

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

  1. Konfirmasikan bahwa IAM entitas 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 IAM entitas yang digunakan untuk menyambung ke Amazon Keyspaces memiliki izin baca yang diperlukan untuk mengakses informasi VPC titik akhir pada EC2 instance Amazon 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 EC2 Amazon untuk membaca informasi tentang titik akhir antarmuka yang tersediaVPC.

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

  3. Konfirmasikan bahwa SSL konfigurasi 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 VPC titik akhir telah dikonfigurasi dengan benar, Anda dapat menjalankan pernyataan berikut dari dalam. VPC

    catatan

    Anda tidak dapat menggunakan lingkungan pengembang lokal atau CQL editor 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 VPC pengaturan dan AWS Wilayah 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 trustStore pengaturan 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 iniSebelum Anda mulai.

Setelah setup, Anda harus dapat terhubung dengan perintah berikut. 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"

Saya tidak dapat terhubung menggunakan IAM identitas

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

Ini terjadi jika Anda mencoba menyambung ke tabel Amazon Keyspaces menggunakan IAM identitas (misalnya, IAM pengguna) 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 IAM pengguna. 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 IAM kebijakan yang memberikan akses ke sistem Amazon Keyspaces dan tabel pengguna, lihat. Mengakses tabel Amazon Keyspaces

Untuk meninjau bagian pemecahan masalah khususIAM, 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 INSERT pernyataan untuk mengisolasi kesalahan.

Klien secara otomatis mencoba membangun kembali koneksi.