Halaman ini menjelaskan cara mengonfigurasi database sumber MongoDB Atlas agar dapat digunakan dengan Datastream menggunakan peering Virtual Private Cloud. Perhatikan bahwa prosedur yang dijelaskan bukanlah solusi ketersediaan tinggi. Jika node MongoDB gagal dalam pengujian profil koneksi, Anda harus menjalankan skrip startup secara manual yang dirujuk lebih lanjut di halaman ini pada virtual machine (VM) terjemahan alamat jaringan (NAT).
Karena peering Virtual Private Cloud bersifat non-transitif, Anda harus mengonfigurasi gateway NAT menggunakan VM Compute Engine untuk merutekan traffic dari Datastream ke MongoDB Atlas.
Mengonfigurasi pengguna database MongoDB
Untuk menggunakan Datastream dengan instance MongoDB Atlas, Anda harus membuat pengguna database terlebih dahulu dan memberikan hak akses kepada pengguna tersebut:
- Di MongoDB Atlas dasbor, di bagian Security, klik Database access.
- Klik New database user , lalu pilih metode autentikasi sandi untuk pengguna Anda.
- Masukkan nama pengguna dan sandi untuk pengguna Datastream Anda.
- Di bagian Database user privileges, pilih Grant specific user privileges.
- Di bagian Specific privileges, tambahkan peran berikut:
readAnyDatabase
- Klik Add user.
Menyiapkan jaringan Virtual Private Cloud
Identifikasi jaringan Virtual Private Cloud di project Anda untuk di-peering dengan Datastream dan MongoDB Atlas. Google Cloud Halaman ini mengasumsikan bahwa Anda menggunakan VPC default dan subnetnya, misalnya subnet default di region us-central1.
- Pastikan jaringan yang Anda identifikasi tidak memiliki rentang alamat IP yang tumpang tindih dengan jaringan Datastream atau MongoDB Atlas Anda.
- Buat konfigurasi konektivitas pribadi
untuk melakukan peering Datastream dengan jaringan Virtual Private Cloud Anda:
- Pastikan Anda memilih VPC peering dari menu drop-down Private connectivity method.
- Pilih jaringan VPC
defaultAnda. - Berikan rentang alamat IP yang tidak digunakan, misalnya
10.0.0.0/29, untuk digunakan oleh Datastream. - Catat rentang IP yang dialokasikan untuk aturan firewall ingress Anda.
- Siapkan koneksi peering jaringan di MongoDB Atlas untuk melakukan peering jaringan Virtual Private Cloud Anda dengan jaringan MongoDB Atlas Anda. Untuk mengetahui informasi selengkapnya,
lihat Menyiapkan koneksi peering
jaringan dalam
dokumentasi MongoDB:
- Berikan Google Cloud project ID dan nama VPC default Anda di MongoDB Atlas.
- Catat project ID dan nama VPC yang diberikan MongoDB Atlas kepada Anda untuk menyelesaikan peering di sisi Google Cloud .
- Setelah membuat koneksi, di project MongoDB Atlas Anda, buka tab Network Access > VPC Peering dan catat blok perutean antar-domain tanpa kelas (CIDR) untuk aturan firewall egress Anda.
Membuat VM NAT
Di Google Cloud Konsol, buka halaman VM instances.
Klik Create instance.
Di kolom Name, masukkan nama untuk VM, misalnya
mongo-nat-gateway.Di kolom Region, pilih region di dalam VPC default Anda, misalnya
us-central1.Di menu navigasi, klik Networking.
Di kolom Network tags, tambahkan tag, seperti
mongo-nat-vm. Tag ini digunakan oleh aturan firewall.Di bagian IP forwarding, centang kotak Enable.
Di bagian Network interfaces, pilih VPC default Anda dan subnetnya, misalnya
defaultdius-central1.Di menu navigasi, klik Advanced.
Di bagian Automation, tempelkan skrip berikut di kolom Startup script. Ganti PRIVATE_SRV_RECORD dengan catatan SRV pribadi cluster MongoDB Atlas Anda, misalnya
my-cluster-pri.abcde.mongodb.net.#!/bin/bash # --- Startup script for MongoDB Atlas NAT gateway --- # This script has two main functions: # 1. Resolves the IP address of a MongoDB Atlas node from its SRV record. # 2. Configures iptables to forward traffic to the resolved MongoDB IP. # -------------------------------------------------------------------------- # --- Part 1: Resolve MongoDB node IP address --- # # EDIT THIS LINE to match your Mongo Atlas private SRV record # export SRV_RECORD=PRIVATE_SRV_RECORD echo "Resolving SRV record for: $SRV_RECORD" # Function to install DNS utilities if needed install_dns_tools() { echo "'dig' not found. Attempting to install DNS utilities..." if command -v apt-get &> /dev/null; then # Wait for any existing apt processes to finish before trying to install packages. # This is common on VM startup where the system might be running automatic updates. echo "Checking for and waiting on existing apt-get processes..." while fuser /var/lib/apt/lists/lock /var/lib/dpkg/lock /var/lib/dpkg/lock-frontend >/dev/null 2>&1; do echo "Another apt process is running. Waiting 10 seconds..." sleep 10 done echo "Apt lock is free. Proceeding with installation." apt-get update && apt-get install -y dnsutils else echo "Error: Could not find apt-get to install DNS utilities." exit 1 fi # Verify that dig is now available if ! command -v dig &> /dev/null; then echo "Error: Failed to install DNS utilities." exit 1 fi } # Check if 'dig' is installed. If not, install it. if ! command -v dig &> /dev/null; then install_dns_tools fi echo "Using 'dig' for DNS resolution." # The `+short` option provides a concise output. # We use `awk` to grab the 4th column (the hostname) and `head` to get the first one. NODE_HOSTNAME=$(dig +short SRV "_mongodb._tcp.${SRV_RECORD}" | awk '{print $4}' | head -n 1) if [ -n "$NODE_HOSTNAME" ]; then NODE_IP=$(dig +short A "$NODE_HOSTNAME") fi # Check if the SRV lookup was successful and we got a hostname. if [ -z "$NODE_HOSTNAME" ]; then echo "Error: Could not resolve SRV record. Check the hostname and your network connection." exit 1 fi echo "Found node hostname: $NODE_HOSTNAME" # Check if the A record lookup was successful. if [ -z "$NODE_IP" ]; then echo "Error: Could not resolve the IP address for node: $NODE_HOSTNAME" exit 1 fi # 3. Print the final result of the lookup. echo "Successfully resolved IP address of a node: $NODE_IP" # --- Part 2: Configure iptables for NAT --- # Substitute the resolved IP address into the DB_ADDR variable. export DB_ADDR=$NODE_IP export DB_PORT=27017 # Enable the VM to receive packets whose destinations do # not match any running process local to the VM echo 1 > /proc/sys/net/ipv4/ip_forward # Ask the Metadata server for the IP address of the VM nic0 # network interface: md_url_prefix="http://169.254.169.254/computeMetadata/v1/instance" vm_nic_ip="$(curl -H "Metadata-Flavor: Google" ${md_url_prefix}/network-interfaces/0/ip)" # Clear any existing iptables NAT table entries (all chains): iptables -t nat -F # Create a NAT table entry in the prerouting chain, matching # any packets with destination database port, changing the destination # IP address of the packet to the MongoDB instance IP address: iptables -t nat -A PREROUTING \ -p tcp --dport $DB_PORT \ -j DNAT \ --to-destination $DB_ADDR # Create a NAT table entry in the postrouting chain, matching # any packets with destination database port, changing the source IP # address of the packet to the NAT VM's primary internal IPv4 address: iptables -t nat -A POSTROUTING \ -p tcp --dport $DB_PORT \ -j SNAT \ --to-source $vm_nic_ip # Save iptables configuration: iptables-save echo "Startup script completed successfully. iptables rules are configured and saved."
Klik Create untuk meluncurkan VM.
Setelah VM berjalan, catat alamat IP internalnya, misalnya
10.128.0.2.
Membuat aturan firewall ingress dan egress
Anda harus membuat dua aturan firewall di jaringan VPC Anda.
Buat aturan firewall ingress dengan karakteristik berikut:
- Nama: INGRESS_RULE_NAME
- Arah: ingress
- Tindakan: izinkan
- Parameter target: tag target
mongo-nat-vm - Parameter sumber: rentang alamat IP yang digunakan oleh konfigurasi konektivitas pribadi Datastream, misalnya
10.0.0.0/29 - Protokol: TCP
- Port:
27017
Buat aturan firewall egress dengan karakteristik berikut:
- Nama: EGRESS_RULE_NAME
- Arah: egress
- Tindakan: izinkan
- Parameter target: tag target
mongo-nat-vm - Parameter tujuan: blok CIDR MongoDB Atlas, misalnya
192.168.240.0/21 - Protokol: TCP
- Port:
27017
Mengonfigurasi daftar IP yang diizinkan di MongoDB Atlas
Izinkan alamat IP internal VM NAT di setelan keamanan MongoDB Atlas Anda:
- Login ke akun MongoDB Atlas Anda.
- Di menu navigasi, klik Security, lalu klik Network access.
- Klik Add IP address.
- Di kolom Access list entry, masukkan alamat IP internal instance VM NAT yang Anda buat di jaringan VPC Anda.
- Klik Confirm dan tunggu hingga status berubah menjadi Active.
Membuat profil koneksi
Buat profil koneksi Datastream untuk database Anda.
Buka halaman Connection profiles di Google Cloud Konsol.
Klik Create profile , lalu pilih MongoDB.
Di kolom Hostname, masukkan alamat IP internal instance VM NAT yang Anda buat di jaringan VPC Anda.
Di kolom Port, masukkan
27017.Masukkan nama pengguna dan sandi untuk pengguna database Anda.
Tambahkan label
tlsdantls_allow_invalid_hostnames, lalu tetapkan nilainya ketrue. Untuk mengetahui informasi selengkapnya tentang cara menetapkan label, lihat Membuat profil koneksi untuk database MongoDB.Pilih Private connectivity sebagai metode konektivitas Anda.
Pilih konfigurasi konektivitas pribadi yang Anda buat.
Klik Create untuk menyimpan profil koneksi.
Jalankan pengujian untuk memverifikasi koneksi ke database Anda.