Halaman ini menjelaskan berbagai masalah, pesan error untuk masalah ini, dan langkah-langkah pemecahan masalah untuk mengatasi masalah tersebut.
Terjadi masalah konektivitas
Jika instance Memorystore for Redis Anda mengalami masalah konektivitas, periksa masalah di bagian ini untuk melihat apakah salah satunya menyebabkan masalah.
Jika node tidak responsif, lihat apakah salah satu masalah jaringan menjadi alasan koneksi jaringan node Anda diblokir. Jika tidak ada masalah ini yang menyelesaikan masalah, hubungi Cloud Customer Care.
Anda menyediakan resource di jaringan VPC yang berbeda.
Untuk terhubung ke instance Memorystore for Redis dari Google Cloud resource, seperti VM Compute Engine, Anda harus menyediakan resource di jaringan VPC resmi yang sama dengan instance.
Mencoba melakukan Telnet ke instance dari resource yang berada di region atau jaringan VPC yang berbeda akan menghasilkan pesan error berikut:
telnet: Unable to connect to remote host: Connection timed out
Anda menghapus peering jaringan VPC.
Saat membuat instance Memorystore for Redis, Anda membuat peering VPC antara jaringan VPC dan jaringan VPC Google internal.
Peering jaringan menggunakan format berikut:
redis-peer-############
Jika peering jaringan ini dihapus, mencoba melakukan Telnet ke instance akan menghasilkan pesan error berikut:
telnet: Unable to connect to remote host: Connection timed out
Untuk membuat ulang peering jaringan yang dihapus, buat instance lain. Kemudian, hapus instance ini. Instance asli Anda kini memiliki peering jaringan yang diperlukan.
Anda membuat aturan firewall yang memblokir alamat IP instance.
Jika Anda membuat aturan firewall keluar yang memblokir port (6379) atau alamat IP instance Memorystore for Redis, Anda mungkin mengalami masalah konektivitas. Jangan membuat aturan firewall jaringan yang memblokir rentang alamat IP instance Anda.
Masalah penggunaan CPU
Bagian ini menjelaskan masalah penggunaan CPU yang mungkin dialami instance Memorystore for Redis Anda.
Instance Anda mengalami latensi tinggi atau tidak merespons.
Jika instance Memorystore for Redis Anda mengalami latensi tinggi atau tidak responsif, masalah ini mungkin disebabkan oleh penggunaan perintah Redis yang menggunakan banyak resource berikut:
Perintah ini dapat memberikan tekanan CPU yang berat pada instance Anda. Sebaiknya jangan menjalankan perintah KEYS di lingkungan produksi. Sebagai gantinya, gunakan SCAN karena perintah ini menggunakan lebih sedikit resource daripada KEYS.
Menggunakan LRANGE untuk membuat kueri semua atau sebagian besar ruang kunci Anda dapat memerlukan resource CPU yang tinggi. Untuk mengatasinya, sebaiknya kurangi jumlah kunci dalam keyset yang Anda kueri dalam satu operasi.
Menggunakan skrip Lua yang kompleks dengan EVAL juga dapat menyebabkan penggunaan CPU yang tinggi. Sebaiknya gunakan skrip Lua yang tidak terlalu kompleks.
HGETALL dan ZRANGE dapat menampilkan sejumlah besar kunci, yang berdampak buruk pada performa server Anda. Daripada HGETALL, sebaiknya jalankan perintah HSCAN. Selain itu, sebelum menggunakan ZRANGE, sebaiknya batasi ukuran rentang yang Anda gunakan untuk kueri.
Sebelum menjalankan perintah yang menggunakan banyak resource, periksa ukuran struktur data yang dikueri perintah untuk memastikan perintah tersebut tidak menyebabkan latensi.
Jika instance Anda mengalami latensi tinggi atau tidak responsif, lakukan hal berikut:
- Periksa log sisi klien untuk menemukan apakah ada perintah yang menggunakan banyak resource yang dijalankan. Jika ya, catat tanggal dan waktunya.
- 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 menggunakan banyak resource dijalankan.
Buffer output instance Anda kehabisan ruang.
Jika buffer output instance Memorystore for Redis Anda kehabisan ruang, lakukan hal berikut:
- Tetapkan nilai yang lebih kecil untuk parameter
maxmemory-gb. - Gunakan kebijakan
allkeys-lrumaxmemory.
Saat memori instance Anda penuh, dan ada penulisan baru, Memorystore for Redis akan mengeluarkan kunci untuk memberi ruang bagi penulisan, berdasarkan kebijakan maxmemory instance Anda. Kebijakan allkeys-lru mengeluarkan kunci yang paling lama tidak digunakan (LRU) dari seluruh keyset.
Sebaiknya pantau maxmemory dan memori yang digunakan instance Anda. Hal ini membantu Anda mengetahui apakah instance Anda mencapai kapasitas instance yang disediakan.
Selain itu, dengan mengurangi nilai untuk parameter maxmemory-gb, Anda akan mendapatkan lebih banyak ruang untuk overhead.
Masalah jaringan
Bagian ini menjelaskan masalah jaringan yang mungkin dialami instance Anda.
Anda menghabiskan rentang IP yang dialokasikan atau ada rute yang bertentangan.
Saat membuat resource dalam rentang alamat IP yang dikhususkan untuk Memorystore for Redis, Anda mungkin menghabiskan semua alamat IP. Atau, mungkin ada rute yang bertentangan dengan alamat IP instance Memorystore for Redis yang Anda coba buat.
Masalah ini menyebabkan pesan error berikut muncul:
The IP ranges for the connection do not have enough available IPs. Allocate a
new range or expand existing range and try again.
Untuk mengatasi masalah ini, alokasikan alamat IP tambahan atau hapus perbedaan konflik rute. Untuk mengetahui informasi selengkapnya, lihat Kehabisan rentang alamat IP.
Anda tidak memiliki koneksi akses layanan pribadi yang dibuat untuk jaringan Anda.
Jika instance Memorystore for Redis Anda menggunakan mode koneksi akses layanan pribadi, tetapi koneksi akses layanan pribadi tidak ada untuk jaringan Anda, Anda mungkin menerima pesan 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.
Anda menghapus peering jaringan untuk koneksi akses layanan pribadi.
Saat Anda membuat koneksi akses layanan pribadi, Memorystore for Redis akan membuat koneksi peering jaringan yang disebut
servicenetworking-googleapis-com. Koneksi ini muncul di halaman
peering jaringan VPC project Anda.
Jika Anda menghapus peering jaringan, pesan error berikut akan muncul untuk instance yang ada:
telnet: Unable to connect to remote host: Connection timed out
Selain itu, jika Anda menghapus peering jaringan dan Anda membuat instance, pesan error berikut akan muncul:
Private services access is not configured correctly. For steps on how to
verify the connection, check the documentation.
Untuk mengatasi masalah ini, buat koneksi akses layanan pribadi antara jaringan Anda dan jaringan akses layanan pribadi dengan menjalankan perintah berikut:
gcloud services vpc-peerings connect --service=servicenetworking.googleapis.com --ranges=RESERVED_RANGE_NAME --network=VPC_NETWORK --project=PROJECT_ID
Anda menggunakan parameter yang bertentangan.
Jika Anda menggunakan parameter --reserved-ip-range dan parameter --connect-mode=private-service-access, Anda akan menerima pesan error berikut:
Reserved IP range is not supported for --connect-mode private services access
Anda tidak dapat menggunakan kedua parameter secara bersamaan karena Memorystore for Redis tidak mendukung parameter --reserved-ip-range untuk mode koneksi akses layanan pribadi.
Untuk menyelesaikan masalah ini, lakukan salah satu tindakan berikut:
- Gunakan parameter
--reserved-ip-rangedengan parameter--connect-mode=direct-peering. - Jangan gunakan parameter
--reserved-ip-range.
Anda melampaui kuota subjaringan untuk project Anda.
Ada batasan jumlah subjaringan yang dapat Anda buat dalam Google Cloud project Anda. Jika Anda melampaui kuota ini, Anda akan menerima salah satu 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 yang muncul dalam pesan error atau hubungi Cloud Customer Care.
Anda tidak melampirkan project layanan ke project host.
Jika Anda menggunakan VPC Bersama dan tidak melampirkan project layanan ke project host, Anda akan menerima pesan 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.
Anda membuat instance di project layanan dengan mode koneksi peering langsung dan menetapkan jaringan VPC Bersama.
Jika Anda membuat instance Memorystore for Redis di project layanan dan menetapkan jaringan VPC Bersama dari project host untuk instance, Anda tidak dapat menggunakan mode koneksi peering langsung.
Secara default, mode koneksi ditetapkan ke peering langsung. Jika Anda mencoba menggunakan mode koneksi ini saat membuat instance, dan Anda juga memilih jaringan VPC Bersama dari project host sebagai nilai untuk parameter --network, Anda akan menerima pesan error berikut:
Authorized_network must exist in the same project as redis instance
Untuk mengatasi masalah ini, lakukan salah satu tindakan berikut:
- Saat membuat instance, gunakan mode koneksi akses layanan pribadi
(--connect-mode=private-service-access). - Pilih jaringan VPC resmi yang berada di project yang sama dengan instance Anda.
Anda menggunakan rentang alamat IP untuk Compute Engine yang tidak dapat diakses oleh Memorystore for Redis.
Anda tidak dapat mengakses instance Memorystore for Redis dari VM Compute Engine yang memiliki alamat IP dalam rentang 172.17.0.0/16.
Rentang ini dicadangkan untuk komponen internal.
Untuk mengatasi masalah ini, akses instance Anda dari VM Compute Engine yang memiliki alamat IP dalam rentang yang berbeda.
Masalah saat menghubungkan ke instance Anda dari Google Cloud resource lain
Bagian ini menjelaskan masalah yang mungkin dialami instance Memorystore for Redis Anda saat resource lain mencoba terhubung ke instance tersebut.
Anda tidak dapat terhubung ke instance dari lingkungan tanpa server yang memerlukan konektor Akses VPC Serverless
Jika Anda tidak dapat terhubung ke instance Memorystore for Redis dengan menggunakan salah satu lingkungan tanpa server yang memerlukan konektor Akses VPC Serverless, verifikasi apakah Anda menyiapkan konektor ini untuk lingkungan Anda. Untuk mengetahui informasi selengkapnya, lihat Persyaratan konektor Akses VPC Serverless.
Anda tidak dapat terhubung ke instance dari cluster Google Kubernetes Engine (GKE)
Untuk terhubung ke instance Memorystore for Redis dari cluster GKE, Anda harus mengaktifkan VPC-native/IP aliasing di cluster.
Cara termudah untuk mengaktifkan VPC-native/IP aliasing adalah saat Anda membuat cluster. Di bagian opsi lanjutan, pilih VPC Native. Untuk mengetahui informasi selengkapnya, lihat Membuat cluster VPC-native.
Masalah Identity and Access Management (IAM)
Bagian ini menjelaskan masalah IAM yang mungkin dialami instance Memorystore for Redis Anda.
Anda ingin memulihkan binding kebijakan yang dihapus untuk akun layanan
Memorystore for Redis menggunakan akun layanan berikut untuk mengelola instance Anda:
service-PROJECT_NUMBER@service-networking.iam.gserviceaccount.comservice-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com
Jika Anda menghapus binding kebijakan untuk akun layanan ini, Anda tidak dapat membuat instance.
Jika Anda mencoba membuat instance Memorystore for Redis menggunakan Google Cloud CLI, 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 service-networking, jalankan perintah berikut. Ganti VARIABLES dengan nilai yang sesuai.
gcloud projects add-iam-policy-binding PROJECT_ID --member='serviceAccount:service-PROJECT_NUMBER@service-networking.iam.gserviceaccount.com' --role='roles/servicenetworking.serviceAgent'
Untuk membuat ulang binding kebijakan untuk akun layanan cloud-redis, jalankan perintah berikut. Ganti VARIABLES dengan nilai yang sesuai.
gcloud projects add-iam-policy-binding PROJECT_ID --member='serviceAccount:service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com' --role='roles/redis.serviceAgent'
Masalah waktu tunggu operasi
Masalah berikut akan menyebabkan instance Redis tidak responsif dan/atau waktu tunggu operasi instance/node.
Masalah partisi jaringan
Terkadang Google Cloud resources tidak dapat berkomunikasi antar-zona dalam suatu region karena error partisi jaringan di server Google Cloud. Hal ini dapat menyebabkan instance Anda kehilangan koneksi, sehingga menghasilkan error waktu tunggu.
Setelah Google Cloud resolves error partisi jaringan untuk region atau zona tempat instance Anda disediakan, konektivitas akan dilanjutkan secara normal.
Dalam masalah 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, hubungi Google Cloud Dukungan.
Project layanan dan project host tidak berada dalam perimeter kontrol layanan VPC yang sama
Jika Anda menggunakan VPC Bersama dan kontrol layanan VPC perimeter, dan operasi pembuatan instance Redis Anda mengalami waktu tunggu, hal ini mungkin menunjukkan bahwa project layanan dan project host Anda tidak berada dalam perimeter layanan yang sama. Project layanan dan project host Anda harus berada dalam perimeter yang sama agar instance Redis Anda dapat berkomunikasi dengan klien yang terhubung melalui jaringan VPC Bersama.
Untuk melihat apakah Anda mengalami masalah ini, periksa log audit instance Redis Anda untuk error berikut:
violationReason: "NETWORK_NOT_IN_SAME_SERVICE_PERIMETER"
Untuk mengatasi masalah ini, tempatkan jaringan host dan jaringan layanan Anda dalam perimeter layanan yang sama.
Memecahkan masalah impor dan ekspor
Bagian ini menguraikan beberapa masalah umum yang mungkin Anda alami saat menggunakan impor dan ekspor untuk Memorystore for Redis.
Tombol impor dan ekspor dinonaktifkan di Google Cloud konsol
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, dan muat ulang halaman detail instance.
Operasi impor selesai tetapi data tidak dipulihkan
Jika operasi impor selesai tetapi data tidak dipulihkan, periksa terlebih dahulu konsol atau command line untuk melihat pesan error, dan atasi masalah yang dijelaskan oleh pesan error tersebut. Google Cloud
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 "Import RDB file gs://bucket/object.rdb size exceeds max memory 10GB", Anda harus melakukan peningkatan skala instance dan mencoba kembali 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 dari 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 terkelola Google, ada beberapa perintah yang diblokir di instance Redis Anda untuk menyediakan 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, Anda harus memulai ulang instance (untuk konfigurasi Paket Dasar ), atau melakukan failover ke replika (untuk konfigurasi Paket Standar ). Operasi mulai ulang/failover ini menghentikan semua perintah yang berjalan di server Redis, dan mengakhiri semua koneksi yang sedang berlangsung.
Di bawah, Anda akan menemukan perintah untuk melakukan mulai ulang atau failover untuk setiap konfigurasi Memorystore for Redis.
Menghentikan perintah di instance Memorystore for Redis Paket Standar
gcloud redis instances failover INSTANCE_NAME --data-protection-mode=limited-data-loss
Menghentikan perintah di instance Memorystore for Redis Paket Dasar
Satu-satunya cara untuk melakukan mulai ulang di instance Memorystore for Redis adalah 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 aslinya.
Masalah dengan kebijakan organisasi berbagi yang dibatasi domain
Bergantung pada waktu pembuatan instance, 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 masalah 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.
- Membuat instance: instance yang baru dibuat memiliki format akun layanan yang sesuai dan kompatibel dengan kebijakan organisasi. Jika penting untuk mempertahankan konten cache, Anda dapat melakukan ekspor untuk mencadangkan data yang ada dan impor ke instance baru. Instance yang baru dibuat memiliki alamat IP layanan baru yang perlu dikonfigurasi di aplikasi Anda.
- Memaksa akses akun: gunakan opsi ini hanya jika tidak memungkinkan untuk membuat ulang instance Anda.