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.
Topik
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.
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*" ] } ] }
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
danAmazonKeyspacesFullAccess
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
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.
-
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.