Pengantar
Secara umum, masalah koneksi termasuk dalam salah satu dari tiga area berikut:
- Menghubungkan - apakah Anda dapat menjangkau instance melalui jaringan?
- Memberi otorisasi - apakah Anda diizinkan untuk terhubung ke instance?
- Mengautentikasi - apakah database menerima kredensial database Anda?
Masing-masing dapat diuraikan lebih lanjut menjadi jalur investigasi yang berbeda. Bagian berikut menyertakan contoh pertanyaan yang dapat Anda tanyakan pada diri sendiri untuk lebih mempersempit masalahnya:
Checklist masalah koneksi
- Menghubungkan
- IP Pribadi
- Sudahkah Anda mengaktifkan
Service Networking API
untuk project Anda? - Apakah Anda menggunakan VPC Bersama?
- Apakah pengguna atau akun layanan Anda memiliki izin IAM yang diperlukan untuk mengelola koneksi akses layanan pribadi?
- Apakah koneksi akses layanan pribadi dikonfigurasi untuk project Anda?
- Apakah Anda mengalokasikan rentang alamat IP untuk koneksi pribadi?
- Apakah rentang alamat IP yang dialokasikan berisi setidaknya spasi /24 untuk setiap region tempat Anda berencana membuat instance sqlserver?
- Jika Anda menentukan rentang alamat IP yang dialokasikan untuk instance sqlserver, apakah rentang tersebut berisi setidaknya /24 spasi untuk setiap region tempat Anda berencana membuat instance sqlserver dalam rentang ini?
- Apakah koneksi pribadi telah dibuat?
- Jika koneksi pribadi diubah, apakah vpc-peerings diupdate?
- Apakah log VPC menunjukkan adanya error?
- Apakah IP mesin sumber Anda adalah alamat non-RFC 1918?
- IP Publik
- Apakah IP sumber Anda tercantum sebagai jaringan yang diizinkan?
- Apakah sertifikat SSL/TLS diperlukan?
- Apakah pengguna atau akun layanan Anda memiliki izin IAM yang diperlukan untuk terhubung ke instance Cloud SQL?
- Memberikan otorisasi
- Proxy Auth Cloud SQL
- Apakah Proxy Auth Cloud SQL sudah yang terbaru?
- Apakah Proxy Auth Cloud SQL berjalan?
- Apakah nama koneksi instance dibuat dengan benar di perintah koneksi Proxy Auth Cloud SQL?
- Sudahkah Anda memeriksa output Proxy Auth Cloud SQL? Sambungkan output ke file, atau lihat terminal Cloud Shell tempat Anda memulai Proxy Auth Cloud SQL.
- Apakah pengguna atau akun layanan Anda memiliki izin IAM yang diperlukan untuk terhubung ke instance Cloud SQL?
- Sudahkah
Cloud SQL Admin API
diaktifkan untuk project Anda? - Jika Anda memiliki kebijakan firewall keluar, pastikan kebijakan tersebut mengizinkan koneksi ke port 3307 pada instance Cloud SQL target.
- Jika Anda terhubung menggunakan soket domain UNIX, pastikan soket tersebut telah dibuat dengan mencantumkan direktori yang ditentukan dengan -dir saat Anda memulai Proxy Auth Cloud SQL.
- Konektor Cloud SQL dan kode khusus bahasa
- Apakah string koneksi dibuat dengan benar?
- Sudahkah Anda membandingkan kode dengan kode contoh untuk bahasa pemrograman Anda?
- Apakah Anda menggunakan runtime atau framework yang kode contohnya tidak kami miliki?
- Jika demikian, apakah Anda telah mencari informasi dari komunitas untuk mendapatkan materi referensi yang relevan?
- Sertifikat SSL/TLS yang dikelola sendiri
- Apakah sertifikat server masih valid?
- Jaringan yang diizinkan
- Apakah alamat IP sumber disertakan?
- Apakah Anda menggunakan alamat IP non-RFC 1918?
- Apakah Anda menggunakan alamat IP yang tidak didukung?
- Kegagalan koneksi
- Apakah Anda diizinkan untuk terhubung?
- Apakah Anda melihat error batas koneksi?
- Apakah aplikasi Anda menutup koneksi dengan benar?
- Mengautentikasi
- Autentikasi database native (nama pengguna/sandi)
- Apakah Anda melihat error
access denied
? - Apakah nama pengguna dan sandi sudah benar?
Pesan error
Untuk pesan error API tertentu, lihat halaman referensi Pesan error.
Pemecahan masalah konektivitas tambahan
Untuk masalah lainnya, lihat bagian Konektivitas di halaman pemecahan masalah.
Masalah koneksi umum
Memverifikasi bahwa aplikasi Anda menutup koneksi dengan benar
Jika Anda melihat error yang berisi "Aborted connection nnnn to db:
", biasanya
hal tersebut berarti bahwa aplikasi tidak menghentikan koneksi dengan benar.
Masalah jaringan juga dapat menyebabkan error ini.
Error ini bukan berarti
ada masalah dengan instance Cloud SQL Anda.
Anda juga dianjurkan untuk menjalankan tcpdump
guna memeriksa paket dan melacak sumber masalah.
Untuk contoh praktik terbaik pengelolaan koneksi, lihat Mengelola koneksi database.
Pastikan masa berlaku sertifikat Anda belum habis
Jika instance Anda dikonfigurasi untuk menggunakan SSL, buka halaman Instance Cloud SQL di konsol Google Cloud dan buka instance tersebut. Buka halaman Koneksi, pilih tab Keamanan dan pastikan sertifikat server Anda valid. Jika masa berlakunya telah berakhir, Anda harus menambahkan sertifikat baru dan melakukan rotasi ke sertifikat baru tersebut.
Verifikasi bahwa Anda diizinkan untuk terhubung
Jika koneksi Anda gagal, periksa apakah Anda diizinkan untuk terhubung:
- Jika mengalami masalah saat menghubungkan menggunakan alamat IP, misalnya, Anda terhubung dari lingkungan lokal dengan klien sqlcmd, lalu pastikan alamat IP yang Anda gunakan untuk terhubung
diotorisasi untuk terhubung
ke instance Cloud SQL.
Koneksi ke instance Cloud SQL yang menggunakan alamat IP pribadi akan otomatis diizinkan untuk rentang alamat RFC 1918. Dengan cara ini, semua klien pribadi dapat mengakses database tanpa melalui Proxy Auth Cloud SQL. Rentang alamat IP non-RFC 1918 harus dikonfigurasi sebagai jaringan yang diizinkan.
Cloud SQL tidak mempelajari rute subnet Non-RFC 1918 dari VPC Anda secara default. Anda harus memperbarui peering jaringan ke Cloud SQL untuk mengekspor Non-RFC 1918. Contoh:
gcloud compute networks peerings update cloudsql-mysql-googleapis-com \ --network=NETWORK \ --export-subnet-routes-with-public-ip \ --project=PROJECT_ID
Berikut adalah alamat IP Anda saat ini.
Menentukan bagaimana koneksi dimulai
Anda dapat melihat informasi tentang koneksi saat ini dengan menghubungkan ke database dan menjalankan perintah berikut:
sp_who go
Koneksi yang menampilkan alamat IP, seperti 1.2.3.4
, terhubung menggunakan IP.
Koneksi dengan cloudsqlproxy~1.2.3.4
menggunakan Proxy Auth Cloud SQL, atau koneksi tersebut
berasal dari App Engine.
Koneksi dari localhost
dapat
digunakan oleh beberapa proses Cloud SQL internal.
Batas koneksi
Tidak ada batas QPS untuk instance Cloud SQL. Namun, ada batasan tertentu untuk koneksi, ukuran, dan App Engine yang berlaku. Lihat Kuota dan batas.
Koneksi database menggunakan resource di server dan aplikasi yang terhubung. Selalu gunakan praktik pengelolaan koneksi yang baik untuk meminimalkan jejak aplikasi Anda dan mengurangi kemungkinan terlampauinya batas koneksi Cloud SQL. Untuk mengetahui informasi selengkapnya, lihat Mengelola koneksi database.
Tampilkan koneksi dan rangkaian pesan
Untuk melihat proses yang berjalan pada database Anda, hubungkan ke database dan jalankan perintah berikut:sp_who go
Untuk mengetahui informasi tentang cara menafsirkan kolom yang ditampilkan dari
sp_who
, lihat referensi SQL Server
Waktu tunggu koneksi (dari Compute Engine)
Koneksi dengan waktu tunggu instance Compute Engine habis setelah 10 menit tidak aktif. Hal ini dapat memengaruhi koneksi jangka panjang yang tidak terpakai antara instance Compute Engine dan instance Cloud SQL Anda. Untuk mengetahui informasi selengkapnya, lihat Jaringan dan Firewall dalam dokumentasi Compute Engine.
Untuk mengaktifkan koneksi jangka panjang yang tidak digunakan, Anda dapat menyetel TCP keepalive. Perintah berikut menetapkan nilai TCP keepalive ke satu menit dan membuat konfigurasi permanen setiap kali instance dimulai ulang.
Menampilkan nilai tcp_keepalive_time saat ini.
cat /proc/sys/net/ipv4/tcp_keepalive_time
Setel tcp_keepalive_time ke 60 detik dan membuatnya permanen setiap kali mulai ulang.
echo 'net.ipv4.tcp_keepalive_time = 60' | sudo tee -a /etc/sysctl.conf
Terapkan perubahan.
sudo /sbin/sysctl --load=/etc/sysctl.conf
Menampilkan nilai tcp_keepalive_time untuk memverifikasi bahwa perubahan telah diterapkan.
cat /proc/sys/net/ipv4/tcp_keepalive_time
Alat untuk men-debug konektivitas
tcpdump
tcpdump
adalah alat untuk merekam paket.
Sangat disarankan untuk menjalankan tcpdump
guna merekam dan memeriksa paket antara host Anda dan instance Cloud SQL saat melakukan proses debug masalah konektivitas.
Menemukan alamat IP lokal Anda
Jika Anda tidak mengetahui alamat lokal host, jalankan perintah
ip -br address show
.
Di Linux, hal ini menunjukkan antarmuka jaringan,
status antarmuka, IP lokal, dan alamat MAC.
Contoh:
eth0 UP 10.128.0.7/32 fe80::4001:aff:fe80:7/64
.
Atau, Anda dapat menjalankan ipconfig
atau ifconfig
untuk melihat
status antarmuka jaringan.
Menguji dengan Uji Konektivitas
Uji Konektivitas adalah alat diagnostik yang memungkinkan Anda memeriksa konektivitas antar-endpoint di jaringan. Layanan ini menganalisis konfigurasi Anda dan dalam beberapa kasus melakukan verifikasi runtime. Layanan ini juga telah mendukung Cloud SQL. Ikuti petunjuk ini untuk menjalankan pengujian dengan instance Cloud SQL Anda.
Menguji koneksi Anda
Anda dapat menggunakan klien sqlcmd untuk menguji kemampuan Anda terhubung dari lingkungan lokal Anda. Untuk informasi selengkapnya, lihat artikel Menghubungkan klien sqlcmd menggunakan alamat IP dan Menghubungkan klien sqlcmd menggunakan Proxy Auth Cloud SQL.
Menentukan alamat IP untuk aplikasi
Untuk menentukan alamat IP komputer yang menjalankan aplikasi Anda sehingga dapat mengizinkan akses ke instance Cloud SQL dari alamat tersebut, gunakan salah satu opsi berikut:
- Jika komputer tidak melalui proxy atau firewall, login ke komputer dan gunakan situs Apa IP saya? untuk menentukan alamat IP-nya.
- Jika komputer melalui proxy atau firewall, login ke komputer tersebut dan gunakan alat atau layanan seperti whatismyipaddress.com untuk menentukan alamat IP sebenarnya.
Buka port lokal
Untuk memverifikasi bahwa host memproses port yang menurut Anda benar, jalankan perintah
ss -tunlp4
.
Ini memberitahu Anda port apa yang terbuka dan
mendengarkan.
Semua aktivitas port lokal
Gunakan perintah netstat
untuk melihat semua aktivitas port lokal.
Misalnya,
netstat -lt
menampilkan semua port yang saat ini aktif.
Menghubungkan ke instance Cloud SQL menggunakan telnet
Untuk memverifikasi bahwa Anda dapat terhubung ke instance Cloud SQL menggunakan TCP
, jalankan perintah
telnet
.
Telnet mencoba terhubung ke alamat IP
dan port yang Anda berikan.
Jika berhasil, Anda akan melihat hal berikut:
Trying 35.193.198.159...
Connected to 35.193.198.159.
.
Jika gagal, Anda akan melihat telnet
hang sampai Anda menutup percobaan tersebut secara paksa:
Trying 35.193.198.159...
^C.
.
Cloud Logging
Cloud SQL dan Cloud SQL menggunakan Cloud Logging. Lihat dokumentasi Cloud Logging untuk mengetahui informasi selengkapnya dan tinjau contoh kueri Cloud SQL.
Lihat log
Anda dapat melihat log untuk instance Cloud SQL dan project Google Cloud lainnya, seperti instance Cloud VPN atau Compute Engine. Untuk melihat log yang berisi entri log instance Cloud SQL Anda:
Konsol
-
Di konsol Google Cloud, buka halaman Cloud Logging.
- Pilih project Cloud SQL yang sudah ada di bagian atas halaman.
- Di Builder kueri, tambahkan hal berikut:
- Resource: Pilih Database Cloud SQL. Pada dialog, pilih instance Cloud SQL.
- Nama log: Scroll ke bagian Cloud SQL dan pilih file log yang sesuai untuk instance Anda. Contoh:
- Tingkat keparahan: Pilih level log.
- Rentang waktu: Pilih preset atau buat rentang kustom.
gcloud
Gunakan perintah gcloud logging
untuk melihat entri log. Pada contoh di bawah, ganti PROJECT_ID
.
Flag limit
adalah parameter opsional yang menunjukkan jumlah entri maksimum yang akan
ditampilkan.
Alamat IP pribadi
Koneksi ke instance Cloud SQL yang menggunakan alamat IP pribadi akan otomatis diizinkan untuk rentang alamat IP RFC 1918. Rentang alamat IP Non-RFC 1918 harus dikonfigurasi di Cloud SQL sebagai jaringan yang diizinkan. Anda juga harus memperbarui peering jaringan ke Cloud SQL untuk mengekspor rute Non-RFC 1918. Contoh:
gcloud compute networks peerings update cloudsql-sqlserver-googleapis-com
--network=NETWORK
--export-subnet-routes-with-public-ip
--project=PROJECT_ID
Pemecahan masalah VPN
Lihat halaman Pemecahan masalah Cloud VPN.