Halaman ini menjelaskan berbagai skenario error, pesan error untuk skenario tersebut, dan langkah-langkah pemecahan masalah untuk mengatasi error.
Skenario error konektivitas
Jika instance Anda mengalami masalah konektivitas, periksa skenario di bagian ini untuk mengetahui apakah salah satunya menyebabkan masalah.
Jika tidak, gunakan Telnet ke salah satu node Redis Anda dan jalankan beberapa perintah Redis sederhana untuk melihat apakah instance responsif atau tidak.
- Jika node tidak responsif, lihat apakah ada masalah pemecahan masalah dari Skenario error jaringan yang memblokir koneksi jaringan node Anda. Jika tidak, hubungi Dukungan Google Cloud.
Error koneksi yang disebabkan oleh resource yang disediakan di jaringan VPC yang berbeda
Untuk terhubung ke instance Memorystore dari resource Google Cloud, seperti VM Compute Engine, resource tersebut harus disediakan di jaringan VPC resmi yang sama dengan instance Redis.
Mencoba melakukan Telnet ke instance Memorystore dari resource di region atau jaringan VPC yang berbeda akan menghasilkan pesan error berikut:
telnet: Unable to connect to remote host: Connection timed out
Error koneksi yang disebabkan oleh peering jaringan VPC yang dihapus
Membuat instance Memorystore for Redis akan membuat peering VPC antara jaringan VPC Anda dan jaringan VPC internal Google.
Peering jaringan menggunakan format berikut:
redis-peer-############
Jika peering jaringan ini dihapus, upaya untuk melakukan Telnet ke instance Redis akan menghasilkan pesan error berikut:
telnet: Unable to connect to remote host: Connection timed out
Cara termudah untuk membuat ulang peering jaringan yang dihapus adalah dengan membuat instance Memorystore for Redis baru. Membuat instance Redis baru akan membuat ulang peering jaringan yang dihapus, sehingga Anda dapat menghapusnya dan instance Redis asli Anda memiliki peering jaringan yang diperlukan.
Aturan firewall memblokir alamat IP instance Anda
Masalah konektivitas dapat terjadi jika Anda membuat aturan firewall keluar yang memblokir port Redis (6379) atau alamat IP instance.
Pastikan untuk tidak membuat aturan firewall jaringan yang memblokir rentang IP instance Redis Anda.
Skenario error penggunaan CPU yang tinggi
Instance Redis tidak responsif karena penggunaan perintah Redis yang mahal secara tidak tepat
Jika instance Redis Anda mengalami latensi tinggi, tidak responsif, atau masalah koneksi, masalah tersebut mungkin disebabkan oleh penggunaan perintah Redis yang mahal berikut secara tidak tepat:
Perintah ini dapat memberikan tekanan CPU yang berat pada instance Anda. Redis open source
tidak menganjurkan untuk menjalankan KEYS
di lingkungan produksi, tetapi Anda dapat menggunakan
SCAN
, yang merupakan alternatif yang lebih aman untuk perintah KEYS
. Menggunakan LRANGE
untuk membuat kueri semua atau sebagian besar ruang kunci dapat memerlukan resource CPU yang tinggi.
Menggunakan skrip Lua yang kompleks dengan EVAL
dapat menyebabkan penggunaan CPU yang tinggi.
HGETALL
dan ZRANGE
juga dapat menampilkan kunci dalam jumlah sangat besar, yang akan memengaruhi performa server Anda.
Sebelum menjalankan perintah yang mahal, Anda harus memeriksa ukuran struktur data yang dikueri perintah untuk memastikannya tidak akan menyebabkan latensi.
Jika instance Anda mengalami latensi tinggi atau tidak responsif, periksa log sisi klien untuk menemukan apakah ada perintah yang mahal yang telah dijalankan. Jika ya, catat waktunya.
Selanjutnya, gunakan Cloud Monitoring untuk melihat metrik redis.googleapis.com/stats/cpu_utilization
. Lihat apakah periode
penggunaan CPU yang tinggi bertepatan dengan periode yang sama saat perintah yang mahal
dijalankan.
Sebaiknya jangan gunakan perintah KEYS
di lingkungan produksi. Untuk
EVAL
, gunakan skrip Lua yang tidak terlalu rumit. Untuk LRANGE
, kurangi jumlah kunci dalam keyset yang dikueri dalam satu operasi.
Skenario error jaringan
Rentang IP yang dialokasikan habis atau ada rute yang bertentangan
Saat membuat resource dalam rentang alamat IP yang didedikasikan untuk Memorystore untuk Redis, Anda dapat menghabiskan semua alamat, sehingga menyebabkan pesan error di bawah. Atau, mungkin ada rute yang bertentangan dengan alamat IP instance Redis yang Anda coba buat.
Skenario ini menyebabkan pesan error berikut:
The IP ranges for the connection do not have enough available IPs. Allocate a
new range or expand existing range and try again.
Anda dapat mengatasi masalah ini dengan mengalokasikan alamat IP tambahan, atau menghapus perbedaan konflik rute. Untuk mengetahui informasi selengkapnya tentang cara melakukannya, lihat Kehabisan rentang alamat IP.
Anda tidak memiliki koneksi akses layanan pribadi yang dibuat untuk jaringan Anda
Jika instance Redis Anda menggunakan mode koneksi akses layanan pribadi dan koneksi akses layanan pribadi tidak ada untuk jaringan Anda, Anda mungkin menerima error berikut:
Google private service access is not enabled. Enable private service access and
try again
Untuk mengatasi masalah ini, buat koneksi akses layanan pribadi.
Peering jaringan untuk akses layanan pribadi dihapus
Membuat koneksi akses layanan pribadi
akan membuat koneksi peering jaringan yang disebut
servicenetworking-googleapis-com
, yang muncul di halaman Peering
Jaringan VPC project Anda.
Menghapus peering jaringan akan menyebabkan Anda menerima error berikut untuk instance Redis yang ada:
telnet: Unable to connect to remote host: Connection timed out
Menghapus peering jaringan akan menyebabkan Anda menerima error berikut saat membuat instance Redis:
Private services access is not configured correctly. For steps on how to verify the connection, check the documentation.
Untuk mengatasi masalah ini, ikuti langkah terakhir petunjuk gcloud di Membangun koneksi akses layanan pribadi.
Flag jaringan yang bertentangan selama pembuatan instance Redis
Jika menggunakan parameter --reserved-ip-range
dan parameter
--connect-mode=private-service-access
, Anda akan menerima error berikut:
Reserved IP range is not supported for --connect-mode private services access
Untuk mengatasi masalah ini, gunakan --reserved-ip-range
dengan --connect-mode=direct-peering
atau gunakan --connect-mode=PRIVATE_SERVICE_ACCESS
.
Anda tidak dapat menggunakan keduanya secara bersamaan, karena parameter --reserved-ip-range
tidak didukung untuk mode koneksi akses layanan pribadi.
Melampaui kuota subnetwork untuk project Anda
Ada batasan jumlah subjaringan yang dapat dibuat dalam project Anda. Jika melebihi kuota ini, Anda akan menerima pesan error berikut:
Internal network quota exceeded. Please request higher limit here: https://forms.gle/ZfVduUGq2iSYcYGm8
atau
Unable to create instance. Network quota limit has been reached. Please request higher limit here: https://forms.gle/ZfVduUGq2iSYcYGm8
Untuk mengatasi masalah ini, isi formulir dalam pesan error, atau hubungi Dukungan Google Cloud.
Project layanan tidak dilampirkan ke project host
Jika Anda menggunakan VPC Bersama, project layanan Anda tidak akan dilampirkan ke project host jika Anda menerima error berikut:
Invalid network name <network-name>. Project <project-name> referenced is not the host project for <service-project-name>.
Untuk mengatasi masalah ini, lampirkan project layanan ke project host.
Penggunaan mode koneksi peering langsung dan jaringan VPC Bersama yang tidak kompatibel selama pembuatan instance
Anda tidak dapat membuat instance Redis di project layanan dengan mode koneksi peering langsung saat menetapkan jaringan VPC Bersama dari project host untuk instance tersebut.
Mode koneksi ditetapkan ke direct-peering
secara default jika Anda tidak menetapkan
nilai untuk --connection-mode
. Jika Anda mencoba menggunakan mode koneksi peering langsung selama pembuatan instance dan juga memilih jaringan VPC Bersama dari project host sebagai nilai untuk --network
, Anda akan menerima error berikut:
Authorized_network must exist in the same project as redis instance
Untuk mengatasi masalah ini, pastikan Anda menentukan --connect-mode=PRIVATE_SERVICE_ACCESS
dalam perintah pembuatan instance Redis, atau memilih jaringan VPC yang diotorisasi di
project yang sama dengan instance Redis Anda.
Rentang alamat IP Compute Engine yang tidak didukung
Anda tidak dapat mengakses Memorystore for Redis dari VM Compute Engine yang memiliki alamat IP dalam rentang 172.17.0.0/16
, karena rentang tersebut dicadangkan untuk komponen internal.
Error saat terhubung ke instance Redis dari resource Google Cloud lainnya
Error saat terhubung ke instance Anda dari lingkungan serverless yang memerlukan konektor Akses VPC Serverless
Jika Anda tidak dapat terhubung ke instance Redis menggunakan salah satu lingkungan serverless yang memerlukan konektor Akses VPC Serverless, mungkin Anda tidak menyiapkan konektor Akses VPC Serverless untuk lingkungan Anda.
Lihat Persyaratan konektor Akses VPC Serverless untuk mengetahui detail selengkapnya.
Error saat terhubung ke instance menggunakan cluster Google Kubernetes Engine
Anda tidak dapat terhubung ke instance Memorystore for Redis dari cluster GKE tanpa mengaktifkan alias IP/native VPC di cluster Anda. Cara termudah untuk mengaktifkan alias VPC-native/IP adalah selama pembuatan cluster GKE. Saat membuat cluster, pilih VPC Native di bagian opsi lanjutan. Untuk mengetahui detail selengkapnya, lihat Membuat cluster VPC native.
Skenario error Identity and Access Management ( IAM)
Memulihkan binding kebijakan yang dihapus untuk akun layanan
Memorystore for Redis menggunakan akun layanan berikut untuk mengelola instance Redis Anda:
- service-project-number@service-networking.iam.gserviceaccount.com
- service-project-number@cloud-redis.iam.gserviceaccount.com
Menghapus binding kebijakan untuk akun layanan ini akan mencegah Anda membuat instance baru.
Jika Anda mencoba membuat instance Redis menggunakan gcloud dalam skenario ini, Anda mungkin menerima pesan error berikut:
(gcloud.redis.instances.create) FAILED_PRECONDITION: A required IAM policy might be missing. Please run this command:"gcloud projects add-iam-policy-binding <YOUR-PROJECT-ID> --member='serviceAccount:service-<YOUR-PROJECT-NUMBER>@cloud-redis.iam.gserviceaccount.com' --role='roles/redis.serviceAgent'" and try again.
Untuk membuat ulang binding kebijakan untuk akun layanan ini, jalankan salah satu perintah berikut, dengan mengganti variables dengan nilai yang sesuai. Jalankan perintah yang terkait dengan akun layanan yang dihapus.
gcloud projects add-iam-policy-binding project-id --member='serviceAccount:service-project-number@service-networking.iam.gserviceaccount.com' --role='roles/servicenetworking.serviceAgent'
gcloud projects add-iam-policy-binding project-id --member='serviceAccount:service-project-number@cloud-redis.iam.gserviceaccount.com' --role='roles/redis.serviceAgent'
Error waktu tunggu operasi habis
Skenario error berikut menyebabkan instance Redis tidak responsif dan/atau waktu tunggu operasi instance/node habis.
Error partisi jaringan
Terkadang resource Google Cloud tidak dapat berkomunikasi di seluruh zona dalam suatu region karena error partisi jaringan di server Google Cloud. Hal ini dapat menyebabkan instance Anda kehilangan koneksi, sehingga menyebabkan error waktu tunggu habis.
Setelah Google Cloud menyelesaikan error partisi jaringan untuk region atau zona tempat instance Anda disediakan, konektivitas akan dilanjutkan seperti biasa.
Dalam skenario ini, Anda mungkin melihat pesan error konektivitas seperti berikut:
telnet: Unable to connect to remote host: Connection timed out
Jika Anda tidak dapat mengidentifikasi penyebab error waktu tunggu habis, hubungi Dukungan Google Cloud.
Project layanan dan project host tidak berada dalam perimeter kontrol layanan VPC yang sama
Jika Anda menggunakan VPC Bersama dan perimeter kontrol layanan VPC, dan waktu tunggu operasi pembuatan instance Redis habis, hal ini mungkin menunjukkan bahwa project layanan dan project host Anda tidak berada di perimeter layanan yang sama. Project layanan dan project host Anda harus berada dalam perimeter yang sama agar instance Redis dapat berkomunikasi dengan klien yang terhubung melalui jaringan VPC Bersama.
Untuk melihat apakah Anda mengalami masalah ini, periksa log audit instance Redis untuk menemukan error berikut:
violationReason: "NETWORK_NOT_IN_SAME_SERVICE_PERIMETER"
Untuk mengatasi masalah ini, tempatkan jaringan host dan jaringan layanan Anda di perimeter layanan yang sama.
Memecahkan masalah impor dan ekspor
Bagian ini menjelaskan beberapa masalah umum yang mungkin Anda alami saat menggunakan impor dan ekspor untuk Memorystore for Redis.
Tombol impor dan ekspor dinonaktifkan di konsol Google Cloud
Masalah: pengguna yang login ke konsol tidak memiliki izin redis.instances.import
dan/atau redis.instances.export
yang diperlukan untuk mengimpor dan/atau mengekspor file RDB.
Solusi: berikan izin kepada pengguna, lalu muat ulang halaman detail instance.
Operasi impor selesai, tetapi data tidak dipulihkan
Jika operasi impor selesai, tetapi data tidak dipulihkan, periksa terlebih dahulu konsol Google Cloud atau command line untuk menemukan pesan error, dan selesaikan masalah yang dijelaskan oleh pesan error.
Jika terjadi kegagalan selama proses impor, instance akan dipulihkan menggunakan file RDB kosong. Anda dapat mencoba memulihkan data dengan mengimpor file RDB yang sama lagi, atau menggunakan file RDB yang berbeda.
Impor gagal karena file RDB terlalu besar
Jika Anda menerima pesan error "Ukuran file RDB impor gs://bucket/object.rdb melebihi memori maksimum 10 GB", Anda harus menskalakan instance dan mencoba lagi impor. Anda juga dapat mencoba mengimpor file RDB yang lebih kecil ke instance Anda.
Memecahkan masalah Google Cloud CLI
Jika Anda mengalami masalah saat perintah gcloud CLI tidak tersedia, atau jika perintah berperilaku berbeda dengan yang didokumentasikan, coba update gcloud CLI:
gcloud components update
Menghentikan semua perintah dan koneksi yang sedang berlangsung untuk instance Redis
Karena Memorystore for Redis adalah produk yang dikelola Google, ada beberapa perintah yang diblokir di instance Redis Anda untuk memberikan lingkungan yang aman dan andal. Salah satu perintah
yang dibatasi adalah CLIENT
, yang mencakup CLIENT KILL
, yang digunakan untuk menghentikan perintah.
Jika perintah Redis menggunakan banyak penggunaan CPU/RAM dan memengaruhi lingkungan produksi, Anda perlu memulai ulang instance (untuk konfigurasi Basic Tier), atau melakukan failover ke replika (untuk konfigurasi Standard Tier). Operasi mulai ulang/failover ini menghentikan semua perintah yang berjalan di server Redis, dan mengakhiri semua koneksi yang sedang berlangsung.
Di bawah ini, Anda akan menemukan perintah untuk melakukan mulai ulang atau failover untuk setiap konfigurasi Memorystore for Redis.
Menghentikan perintah di instance Memorystore for Redis tingkat Standar
gcloud redis instances failover INSTANCE_NAME --data-protection-mode=limited-data-loss
Menghentikan perintah di instance Memorystore for Redis tingkat Dasar
Satu-satunya cara untuk memulai ulang instance Memorystore for Redis adalah dengan mengubah konfigurasinya, seperti menskalakan instance. Contoh perintah yang dapat Anda jalankan untuk memulai ulang instance dapat ditemukan di bawah.
gcloud redis instances update INSTANCE_NAME --region REGION_ID --size NUMBER_GB
Setelah menskalakan instance ke ukuran yang berbeda, Anda dapat menjalankan operasi penskalaan lain untuk mengembalikannya ke ukuran asli.
Masalah terkait kebijakan organisasi berbagi yang dibatasi domain
Bergantung pada waktu pembuatan instance Anda, Memorystore for Redis menggunakan salah satu dari dua format akun layanan yang berbeda. Untuk mengidentifikasi format akun layanan yang digunakan instance Anda, lihat Format akun layanan Memorystore for Redis.
Ada masalah umum saat kebijakan organisasi iam.allowedPolicyMemberDomains
menyebabkan error saat digunakan dengan instance Memorystore for Redis yang menggunakan format akun layanan [PROJECT_NUMBER]-compute@developer.gserviceaccount.com
.
Dalam skenario ini, Anda mungkin mengalami error ini:
One or more users named in the policy do not belong to a permitted customer.
Ada dua opsi untuk mengatasi masalah ini.
Opsi 1
Anda dapat membuat instance baru. Instance yang baru dibuat memiliki format akun layanan yang sesuai dan kompatibel dengan kebijakan organisasi. Jika mempertahankan konten cache sangat penting, Anda dapat melakukan ekspor untuk mencadangkan data yang ada dan melakukan impor ke instance baru. Perhatikan bahwa instance yang baru dibuat memiliki alamat IP layanan baru yang perlu dikonfigurasi di aplikasi Anda.
Opsi 2
Jika tidak memungkinkan untuk membuat ulang instance Memorystore, ikuti solusi Memaksa akses akun.