Halaman ini menjelaskan berbagai masalah, pesan error untuk masalah ini, dan langkah-langkah pemecahan masalah untuk menyelesaikan masalah tersebut.
Terjadi masalah konektivitas
Jika instance Memorystore untuk Redis Anda mengalami masalah konektivitas, periksa masalah di bagian ini untuk melihat apakah salah satunya menyebabkan masalah.
Jika masalah di bagian ini tidak sesuai dengan masalah Anda, lakukan Telnet ke salah satu node Redis Anda dan jalankan beberapa perintah Redis untuk melihat apakah instance merespons.
Jika node tidak merespons, periksa apakah ada masalah jaringan yang menyebabkan koneksi jaringan node Anda diblokir. Jika tidak satu pun masalah di atas dapat 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 yang sama dan telah diberi otorisasi dengan instance.
Mencoba 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 Anda dan jaringan VPC internal Google.
Peering jaringan menggunakan format berikut:
redis-peer-############
Jika peering jaringan ini dihapus, upaya untuk 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 Anda.
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 berikut yang intensif sumber daya:
Perintah ini dapat memberikan tekanan CPU yang berat pada instance Anda. Sebaiknya jangan jalankan perintah KEYS di lingkungan produksi. Sebagai gantinya, gunakan
SCAN karena perintah ini menggunakan lebih sedikit resource daripada KEYS.
Penggunaan LRANGE untuk membuat kueri semua atau sebagian besar keyspace 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 rumit.
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 oleh perintah untuk memastikan tidak menyebabkan latensi.
Jika instance Anda mengalami latensi tinggi atau tidak responsif, lakukan hal berikut:
- Periksa log sisi klien Anda untuk mengetahui 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 pemakaian CPU yang tinggi bertepatan dengan periode yang sama saat perintah yang menggunakan banyak resource berjalan.
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.
Jika memori instance Anda penuh, dan ada operasi tulis baru,
Memorystore for Redis akan mengeluarkan kunci untuk memberi ruang bagi operasi tulis, berdasarkan kebijakan maxmemory instance Anda. Kebijakan allkeys-lru mengeluarkan kunci yang paling jarang
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 dihadapi instance Anda.
Anda kehabisan rentang IP yang dialokasikan atau ada rute yang bertentangan.
Saat membuat resource dalam rentang alamat IP yang dikhususkan untuk Memorystore for Redis, Anda mungkin akan kehabisan 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 akan muncul di halaman
VPC network peering 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 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 subnetwork untuk project Anda.
Ada batasan jumlah subnetwork yang dapat Anda buat dalam projectGoogle Cloud . Jika melebihi 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 di 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 Anda 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 Anda menetapkan jaringan VPC Bersama dari project host untuk instance tersebut, maka Anda tidak dapat menggunakan mode koneksi direct peering.
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, maka Anda akan menerima pesan error berikut:
Authorized_network must exist in the same project as redis instance
Untuk menyelesaikan masalah ini, lakukan salah satu tindakan berikut:
- Saat membuat instance, gunakan mode koneksi akses layanan pribadi
(--connect-mode=private-service-access). - Pilih jaringan VPC yang diizinkan yang berada dalam 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 dari referensi Google Cloud lain
Bagian ini menjelaskan masalah yang mungkin dihadapi instance Memorystore for Redis Anda saat resource lain mencoba terhubung ke instance tersebut.
Anda tidak dapat terhubung ke instance dari lingkungan serverless yang memerlukan konektor Akses VPC Serverless
Jika Anda tidak dapat terhubung ke instance Memorystore for Redis menggunakan salah satu lingkungan serverless yang memerlukan konektor Akses VPC Serverless, maka verifikasi apakah Anda telah 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 alias 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 menyebabkan instance Redis tidak responsif dan/atau operasi instance/node mengalami waktu tunggu habis.
Masalah partisi jaringan
Terkadang Google Cloud resource tidak dapat berkomunikasi di seluruh zona dalam suatu region karena kesalahan partisi jaringan di server Google Cloud. Hal ini dapat menyebabkan instance Anda kehilangan koneksi, sehingga terjadi error waktu tunggu.
Setelah Google Cloud menyelesaikan 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 perimeter kontrol layanan VPC, dan operasi pembuatan instance Redis Anda mengalami waktu tunggu habis, hal ini dapat menunjukkan bahwa project layanan dan project host Anda tidak berada dalam perimeter layanan yang sama. Project layanan dan project host Anda harus berada di 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, masukkan jaringan host dan jaringan layanan Anda ke 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 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 melihat 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 "Import RDB file gs://bucket/object.rdb size exceeds max memory 10GB", 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 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 yang dikelola 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 pemanfaatan CPU/RAM dan memengaruhi lingkungan produksi Anda, Anda perlu memulai ulang instance (untuk konfigurasi Tingkat Dasar), atau melakukan failover ke replika (untuk konfigurasi Tingkat Standar). Operasi memulai ulang/pengalihan ini akan 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 melakukan mulai ulang di instance Memorystore for Redis adalah mengubah konfigurasinya, seperti melakukan penskalaan 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 semula.
Masalah terkait 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.
- Buat instance: instance yang baru dibuat memiliki format akun layanan yang sesuai dan kompatibel dengan kebijakan organisasi. Jika Anda harus 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.
- Paksa akses akun: gunakan opsi ini hanya jika Anda tidak dapat membuat ulang instance.