1. Pengantar
Codelab ini menunjukkan deployment cluster ketersediaan tinggi (HA) AlloyDB Omni di Virtual Machine (VM) Google Compute Engine (GCE). Di akhir codelab ini, Anda akan menyediakan arsitektur referensi HA yang terdiri dari 3 node Database dan 2 node HAProxy, beserta node kontrol untuk operasi pengelolaan.
Prasyarat
- Akses ke Project Google Cloud dan Cloud Shell dari Konsol Cloud.
- Google Cloud SDK (
gcloud) diinstal dan dikonfigurasi. Untuk mengetahui detail tentang cara menginstal gcloud, lihat gcloud-install - Terraform v1.9.8 diinstal.
Yang akan Anda pelajari
- Cara membuat dan menyiapkan VM GCE untuk AlloyDB Omni.
- Cara menginstal dan menjalankan Orchestrator RPM AlloyDB Omni.
- Cara menginstal dan mengonfigurasi RPM AlloyDB Omni untuk arsitektur referensi HA.
Yang akan Anda butuhkan
- Mendapatkan link URL ke RPM AlloyDB Omni dan orchestrator RPM. Untuk melakukannya, Anda harus mengisi formulir pendaftaran alloydb omni. Link akan dikirim ke email Anda yang merupakan server URL repositori. Inisialisasi variabel lingkungan berikut agar URL mudah diakses dan akan digunakan selama codelab.
export ORCHESTRATOR_ANSIBLE_COLLECTION_PATH="..." export ALLOYDB_OMNI_REPOSITORY_URL="..." export ALLOYDB_OMNI_ORCHESTRATOR_REPOSITORY_URL="..." export ALLOYDB_OMNI_COMMON_REPOSITORY_URL=.... export ETCD_REPOSITORY_URL="..." - Terminal yang berfungsi dengan akses ke stack deployment AlloyDB Omni. Anda dapat menggunakan Cloud Shell untuk tujuan ini.
2. Penyiapan dan Persyaratan
Penyiapan project
Membuat Project Google Cloud
- Di Konsol Google Cloud, di halaman pemilih project, pilih atau buat project Google Cloud.
- Pastikan penagihan diaktifkan untuk project Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project.
Mulai Cloud Shell
Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.
Dari Konsol Google Cloud, klik ikon Cloud Shell di toolbar kanan atas:

Atau, Anda dapat menekan G, lalu S. Urutan ini akan mengaktifkan Cloud Shell jika Anda berada di Konsol Google Cloud atau menggunakan link ini.
Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:

Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Semua pekerjaan Anda dalam codelab ini dapat dilakukan di browser. Anda tidak perlu menginstal apa pun.
3. Membuat Virtual Machine Google Cloud Compute Engine
Menyiapkan skrip Terraform
- Tentukan variabel lingkungan untuk project ID dan nama cluster yang diinginkan. Anda akan menggunakannya di seluruh codelab.
Catatan: Project ID Google Cloud hanya boleh memiliki panjang 6 hingga 30 karakter. Untuk mengetahui informasi selengkapnya, lihat https://docs.cloud.google.com/resource-manager/docs/creating-managing-projects#before_you_beginexport PROJECT="your-project-id" export CLUSTER="your-cluster-name" - Pastikan Anda telah login dengan pengguna akun Google Cloud.
gcloud auth login - Buat direktori kerja untuk deployment Anda dan salin file konfigurasi Terraform yang diperlukan dari sumber repositori Anda.
mkdir -p ~/alloydb-omni/$PROJECT/$CLUSTER cd ~/alloydb-omni/$PROJECT/$CLUSTER gcloud storage cp gs://alloydb-omni-install/rpm-orchestrator/gce/terraform/*.tf . - Buat file
terraform.tfvarsuntuk menentukan parameter yang diperlukan sesuai dengan arsitektur referensi sesuai dengan konten berikut:cat > terraform.tfvars <<EOF # Required instance counts for reference architecture db_instance_count = 3 haproxy_instance_count = 2 control_instance_count = 1 # Optional: Customize if needed with the below variables # os_image = "rocky-linux-cloud/rocky-linux-9" # zone = "us-west4-c" # region_1 = "us-west4" # db_instance_type = "c4-highmem-4" # db_disk_type = "hyperdisk-balanced" # db_data_size = "50" # GB # data_dir = "/data" EOF
Menjalankan skrip Terraform dan Memvalidasi
- Anda kini dapat menyediakan VM.
terraform init - Sebelum membuat VM, pastikan Anda memiliki akses yang diperlukan untuk membuat VM dan resource lainnya. Singkatnya, Anda akan memerlukan izin berikut.
roles/compute.admin roles/iam.roleAdmin roles/compute.osAdminLogin roles/iam.serviceAccountCreator roles/iam.serviceAccountUser roles/artifactregistry.repoAdmin roles/storage.objectUser roles/resourcemanager.projectIamAdmin roles/serviceusage.serviceUsageAdmin - Validasi konfigurasi dan terapkan konfigurasi untuk menyediakan resource.
Catatan: Pastikan Anda menggunakan Terraform v1.9.8 seperti yang diharapkan oleh konfigurasi deployment.terraform validate terraform apply --auto-approve - Setelah Terraform selesai, verifikasi bahwa virtual machine telah berhasil dibuat dengan mencantumkan instance yang dibuat menggunakan
gcloud. Anda akan melihat instance yang sesuai dengan 3 node DB, 2 node HAProxy, dan VM kontrol serta zona yang sesuai. Catat ZONA untuk node kontrol. Kita akan memerlukannya selama codelab ini, nanti.gcloud compute instances list --filter="name~$CLUSTER" --project=$PROJECTexport ZONE=$(gcloud compute instances list \ --filter="name=$CLUSTER-control" \ --format="value(zone)" --project=$PROJECT)
4. Menyiapkan VM untuk deployment
Anda harus membuat sesi SSH ke node kontrol dan melakukan langkah-langkah untuk mengaktifkan akses SSH ke semua VM (juga disebut sebagai node).
- Pastikan variabel lingkungan untuk project dan cluster Anda ditentukan.
export PROJECT="your-project-id" export CLUSTER="your-cluster-name" - Buat kunci SSH dan tambahkan kunci yang sama untuk login ke VM kontrol.
# Replace values with your specific GCP project, cluster and zone details ssh-keygen -t ed25519 -f $HOME/.ssh/google_compute_engine gcloud compute os-login ssh-keys add --key-file=$HOME/.ssh/google_compute_engine.pub --project=$PROJECT - Buat aturan firewall untuk mengizinkan koneksi SSH dan juga mengizinkan traffic VRRP.
gcloud compute config-ssh --project=$PROJECT gcloud compute firewall-rules create $CLUSTER-allow-ssh --network=$CLUSTER --project=$PROJECT --direction=INGRESS --action=allow --rules=tcp:22 --source-ranges="0.0.0.0/0" gcloud compute firewall-rules create $CLUSTER-allow-vrrp --network=$CLUSTER --project=$PROJECT --allow=112 --source-ranges="0.0.0.0/0" - Hubungkan ke VM kontrol melalui SSH:
gcloud compute ssh "$CLUSTER-control" --zone=$ZONE --project=$PROJECT - Buat grup Linux di node kontrol dengan nama yang sama dengan nama pengguna:
sudo groupadd $(id -un) sudo usermod -aG $(id -un) $(id -un) - Penyiapan Terraform membuat beberapa skrip konfigurasi dan menempatkannya di direktori
/tmp/VM kontrol yang mencakup hal-hal seperti nama cluster, akun layanan, nama project, dll.Buat akses ssh tanpa sandi dari node kontrol ke semua node cluster menggunakan skrip penyiapan di node kontrol. Penting: Catat pengguna service_account. Kita akan menggunakannya sebagai SSH_USER nanti di codelab ini./tmp/setup-ssh-for-cluster.sh - Untuk codelab ini, kita dapat menonaktifkan SELinux di semua node. Skrip Terraform menambahkan '/tmp/run-all.sh' yang dapat digunakan untuk tujuan ini.
/tmp/run-all.sh sudo setenforce 0 - Jika Anda telah mendaftar ke AlloyDB Omni dan mendapatkan link, sekarang saatnya menambahkan URL tersebut ke variabel lingkungan.
Tentukan IP virtual untuk lingkungan Anda dari variabel input cidr_range dalam filecat >> ~/.codelab.env <<EOF export ORCHESTRATOR_ANSIBLE_COLLECTION_PATH="..." export ALLOYDB_OMNI_REPOSITORY_URL="..." export ALLOYDB_OMNI_ORCHESTRATOR_REPOSITORY_URL="..." export ALLOYDB_OMNI_COMMON_REPOSITORY_URL=.... export ETCD_REPOSITORY_URL="..." EOFterraform/variables.tfsehingga tidak bertentangan dengan node lain, seperti yang ditunjukkan dalam contoh berikut:cat >> ~/.codelab.env <<EOF export VIRTUAL_IP="10.1.0.50" EOF
5. Menginstal komponen software yang diperlukan di semua VM
Langkah berikutnya adalah menginstal komponen SW yang diperlukan di VM. Hal ini dapat dikoordinasikan di node kontrol. Semua perintah berikut harus dijalankan di node kontrol.
- Hubungkan ke VM kontrol melalui SSH, jika belum berada di node kontrol.
Setelah Anda berada di perintah ssh VM kontrol, sumberkan file lingkungan.gcloud compute ssh "$CLUSTER-control" --zone=$ZONE --project=$PROJECTsource ~/.codelab.env - Di node kontrol, instal Ansible dan library Python yang diperlukan.
sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm -y sudo dnf install -y ansible sudo dnf install -y python3-grpcio python3-protobuf python3-googleapis-common-protos python3-grpcio-status - Selanjutnya, download file tar koleksi Ansible Orchestrator RPM, lalu instal.
Catatan: Pastikan variabel ORCHESTRATOR_ANSIBLE_COLLECTION_PATH memiliki "/" di akhir.gcloud storage cp "gs://${ORCHESTRATOR_ANSIBLE_COLLECTION_PATH#https://storage.googleapis.com/}google-alloydbomni_orchestrator-*.tar.gz" . ansible-galaxy collection install google-alloydbomni_orchestrator-0.1.0-6.tar.gz ansible-galaxy collection list | grep alloydbomni_orchestrator - Orchestrator menggunakan file spesifikasi deployment dalam format inventaris Ansible untuk memahami topologi cluster Anda. Buat file bernama deployment_spec.yaml dengan detail node Anda di node kontrol.
Catatan: Tinjau file yang dihasilkan untuk memastikan file tersebut merujuk ke nilai yang valid.cat > deployment_spec.yaml <<EOF alloydbomni: vars: cluster_manager: name: "$CLUSTER" etcd: setup: true config_forcewrite: true alloydbomni: major_version: "18" repo_url: $ALLOYDB_OMNI_REPOSITORY_URL alloydbomni_monitor: repo_url: $ALLOYDB_OMNI_COMMON_REPOSITORY_URL alloydbomni_cluster_manager: repo_url: $ALLOYDB_OMNI_ORCHESTRATOR_REPOSITORY_URL alloydbomni_node_manager: repo_url: $ALLOYDB_OMNI_ORCHESTRATOR_REPOSITORY_URL pgbouncer: repo_url: $ALLOYDB_OMNI_COMMON_REPOSITORY_URL pgbackrest: repo_url: $ALLOYDB_OMNI_COMMON_REPOSITORY_URL children: primary_instance_nodes: hosts: $CLUSTER-db1: $CLUSTER-db2: $CLUSTER-db3: load_balancer_nodes: hosts: $CLUSTER-haproxy1: $CLUSTER-haproxy2: EOF - Buat playbook bernama install.yaml yang mereferensikan peran penginstalan dari koleksi orchestrator.
Catatan: Tinjau file yang dihasilkan untuk memastikan file tersebut merujuk ke nilai yang valid.cat > install.yaml <<EOF - name: Install AlloyDB Omni cluster components hosts: all vars: ansible_become: true ansible_user: $SSH_USER ansible_ssh_private_key_file: $HOME/ssh-key-cluster-sa roles: - role: google.alloydbomni_orchestrator.install EOF - Jalankan playbook menggunakan file inventaris Anda untuk mendownload dan menginstal RPM di semua node yang ditentukan.
ansible-playbook -i deployment_spec.yaml install.yaml
6. Mem-bootstrap Cluster AlloyDB Omni
Pada tahap ini, kita telah menginstal semua komponen yang diperlukan di semua node. Kita siap untuk mem-bootstrap cluster AlloyDB Omni.
- Hubungkan ke VM kontrol melalui SSH, jika belum berada di node kontrol.
Setelah Anda berada di perintah ssh VM kontrol, sumberkan file lingkungan.gcloud compute ssh "$CLUSTER-control" --zone=$ZONE --project=$PROJECTsource ~/.codelab.env - Buat hash untuk sandi Anda dan catat hash tersebut.
encoded_password=$(echo -n "your unique password" | base64) - Untuk membuat cluster, AlloyDB Omni harus mengetahui cara mengonfigurasinya. Buat nama file dbcluster.yaml untuk spesifikasi cluster DB.
cat > dbcluster.yaml <<EOF Secret: metadata: name: db-pw-$CLUSTER spec: type: Opaque data: $CLUSTER: $encoded_password --- DBCluster: metadata: name: $CLUSTER spec: databaseVersion: 18.1.0 mode: "" availability: numberOfStandbys: 2 enableAutoFailover: true enableAutoHeal: true autoFailoverTriggerThreshold: 2 autoHealTriggerThreshold: 2 healthcheckPeriodSeconds: 5 replayReplicationSlotsOnStandbys: false primarySpec: adminUser: passwordRef: name: db-pw-$CLUSTER resources: cpu: 4 memory: 32Gi disks: - name: DataDisk path: $PGDATA dbLoadBalancerOptions: gcp: loadBalancerIP: "$VIRTUAL_IP" loadBalancerType: "internal" loadBalancerInterface: "eth0" EOF - Buat playbook bernama bootstrap.yaml, yang akan merujuk ke peran ansible bootstrap untuk membuat Cluster AlloyDB Omni.
cat > bootstrap.yaml <<EOF - name: Create DBCluster hosts: localhost vars: ansible_become: true ansible_user: $SSH_USER ansible_ssh_private_key_file: $HOME/ssh-key-cluster-sa roles: - role: google.alloydbomni_orchestrator.bootstrap EOF - Jalankan playbook untuk membuat cluster
ansible-playbook bootstrap.yaml -i deployment_spec.yaml -e resource_spec=dbcluster.yaml
7. (Opsional) Mengonfigurasi Penggabung Koneksi PgBouncer
AlloyDB Omni mendukung penggabungan koneksi ringan menggunakan PgBouncer. Anda dapat mengonfigurasi dan mem-bootstrap PgBouncer segera setelah cluster Anda disediakan.
- Buat file spesifikasi resource bernama pgbouncer.yaml yang mengaitkan penggabung koneksi dengan cluster database Anda:
cat > pgbouncer.yaml <<EOF PgBouncer: metadata: name: pgbouncer-pooler spec: dbclusterRef: $CLUSTER allowSuperUserAccess: true accessMode: "rw" port: 6432 EOF - Bootstrap penggabung PgBouncer menggunakan playbook bootstrap.yaml yang sama yang dibuat sebelumnya, dengan meneruskan file spesifikasi baru:
ansible-playbook bootstrap.yaml -i deployment_spec.yaml -e resource_spec=pgbouncer.yaml
8. Memverifikasi Cluster AlloyDB Omni
Untuk memverifikasi bahwa cluster Anda berfungsi dengan benar dan dapat diakses menggunakan load balancer, Anda dapat terhubung ke cluster menggunakan klien PostgreSQL standar dari node kontrol.
- Instal repositori dan paket klien PostgreSQL 18 di node kontrol:
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm sudo dnf install -y postgresql18 - Hubungkan ke cluster menggunakan IP virtual yang dicadangkan sebelumnya. Anda akan diminta memasukkan sandi yang dienkode di dbcluster.yaml:
/usr/pgsql-18/bin/psql -h $VIRTUAL_IP -U postgres -W - Setelah terhubung, Anda dapat menjalankan kueri SQL dasar untuk memverifikasi status cluster, misalnya, memeriksa versi database:
Anda akan melihat output yang menunjukkan PostgreSQL 18 berjalan dengan AlloyDB Omni. Ketikpostgres=# SELECT version();\quntuk keluar dari perintah.
9. (Opsional) Mencadangkan Data menggunakan pgBackRest
AlloyDB Omni terintegrasi dengan pgBackRest untuk mengelola cadangan langsung ke Cloud Storage. Anda dapat mengonfigurasi rencana cadangan dan memicu cadangan sesuai permintaan ke bucket GCS yang dibuat oleh penyiapan Terraform Anda.
- Buat file spesifikasi rencana cadangan bernama backup_plan.yaml yang mengarah ke bucket GCS yang disediakan:
cat > backup_plan.yaml <<EOF BackupPlan: metadata: name: pgb-plan spec: dbclusterRef: $CLUSTER backupLocation: type: GCS gcsOptions: bucket: $CLUSTER-gcs-backups key: /backups EOF - Buat playbook Ansible bernama backup.yaml yang mereferensikan peran pengelolaan cadangan:
cat > backup.yaml <<EOF - name: Manage AlloyDB Omni Backups hosts: localhost vars: ansible_become: true ansible_user: $SSH_USER ansible_ssh_private_key_file: $HOME/ssh-key-cluster-sa roles: - role: google.alloydbomni_orchestrator.backup EOF - Terapkan rencana cadangan menggunakan playbook backup.yaml:
ansible-playbook backup.yaml -i deployment_spec.yaml -e resource_spec=backup_plan.yaml - Setelah rencana berhasil dibuat, buat file resource cadangan sesuai permintaan bernama create_backup.yaml.
cat > create_backup.yaml <<EOF Backup: metadata: name: on-demand-backup spec: backupPlanRef: pgb-plan dbclusterRef: $CLUSTER EOF - Jalankan playbook untuk memulai pencadangan:
ansible-playbook backup.yaml -i deployment_spec.yaml -e resource_spec=create_backup.yaml - Untuk memverifikasi status cadangan, buat playbook status.yaml:
- name: Fetch AlloyDB Omni Resource Status
hosts: localhost
vars:
ansible_become: true
ansible_user: $SSH_USER
ansible_ssh_private_key_file: $HOME/ssh-key-cluster-sa
roles:
- role: google.alloydbomni_orchestrator.status
EOF
- Jalankan playbook untuk mencantumkan semua cadangan:
ansible-playbook status.yaml -i deployment_spec.yaml -e resource_type=Backup
- Atau, untuk mendapatkan info mendetail tentang cadangan tertentu yang dibuat sebelumnya, teruskan
-e resource_name=on-demand-backup:
ansible-playbook status.yaml -i deployment_spec.yaml \
-e resource_type=Backup \
-e resource_name=on-demand-backup
10. Membersihkan Resource
Setelah selesai dengan deployment, Anda dapat menghancurkan resource yang disediakan untuk menghindari biaya.
- Buat playbook bernama teardown.yaml:
cat > teardown.yaml <<EOF - name: Tear down AlloyDB Omni cluster hosts: localhost vars: ansible_become: true ansible_user: $SSH_USER ansible_ssh_private_key_file: $HOME/ssh-key-cluster-sa roles: - role: google.alloydbomni_orchestrator.delete EOF - Jalankan playbook menggunakan ansible-playbook. Jika Anda mengonfigurasi cadangan, hapus resource Cadangan dan BackupPlan terlebih dahulu:
Jika Anda mengonfigurasi PgBouncer, hapus resource penggabung koneksi berikutnya:ansible-playbook teardown.yaml -i deployment_spec.yaml -e "resource_type=Backup" -e "resource_name=on-demand-backup" ansible-playbook teardown.yaml -i deployment_spec.yaml -e "resource_type=BackupPlan" -e "resource_name=pgb-plan" Kemudian, tentukan DBCluster sebagai resource_type dan hapus cluster database itu sendiri:ansible-playbook teardown.yaml -i deployment_spec.yaml -e "resource_type=PgBouncer" -e "resource_name=pgbouncer-pooler"ansible-playbook teardown.yaml -i deployment_spec.yaml -e "resource_type=DBCluster" -e "resource_name=$CLUSTER" - Setelah cluster dihapus, logout dari node kontrol, kembali ke terminal, dan buka direktori kerja Terraform Anda.
Catatan: jika Anda baru saja login ke Cloud Shell, ingatlah untuk menetapkan hal berikut:export PROJECT="your-project-id" export CLUSTER="your-cluster-name" - Hapus aturan firewall VRRP dan hancurkan resource yang dikelola oleh Terraform:
gcloud compute firewall-rules delete -q "$CLUSTER-allow-vrrp" --project="$PROJECT" gcloud compute firewall-rules delete -q "$CLUSTER-allow-ssh" --project="$PROJECT" terraform destroy - Konfirmasi penghancuran saat diminta. Karena resource atau rute jaringan yang tersisa terkadang dapat mencegah penghancuran lengkap, jalankan perintah pembersihan aman berikut untuk memastikan semua aturan firewall, gateway NAT, router, rute, subnet, dan jaringan terkait dihapus sepenuhnya. Ganti
REGIONdengan region deployment tertentu, seperti 'us-central1':# Delete any remaining firewall rules associated with the cluster gcloud compute firewall-rules list --project=$PROJECT 2> /dev/null | grep ^$CLUSTER- | cut -f1 -d' ' | \ while read rule; do gcloud compute firewall-rules delete --project=$PROJECT --quiet $rule; done # Delete the Cloud NAT gateway and router if they still exist gcloud compute routers nats describe $CLUSTER-nat-gw --router=$CLUSTER-router --region=REGION --project=$PROJECT 2>/dev/null \ && gcloud compute routers nats delete $CLUSTER-nat-gw --router=$CLUSTER-router --region=REGION --project=$PROJECT --quiet gcloud compute routers describe $CLUSTER-router --region=REGION --project=$PROJECT 2>/dev/null \ && gcloud compute routers delete $CLUSTER-router --region=REGION --project=$PROJECT --quiet # Delete any remaining custom routes gcloud compute routes list --project=$PROJECT --filter="network:$CLUSTER" --format="value(name)" 2>/dev/null | \ while read route; do gcloud compute routes delete --project=$PROJECT --quiet $route 2>/dev/null || true; done # Delete the subnet and network if they still exist gcloud compute networks subnets describe $CLUSTER --region=REGION --project=$PROJECT 2>/dev/null \ && gcloud compute networks subnets delete $CLUSTER --region=REGION --project=$PROJECT --quiet gcloud compute networks describe $CLUSTER --project $PROJECT 2> /dev/null \ && gcloud compute networks delete $CLUSTER --project $PROJECT --quiet
11. Selamat
Selamat, Anda telah menyelesaikan codelab.
Yang telah kita bahas
- Cara membuat dan menyiapkan VM GCE untuk AlloyDB Omni.
- Cara menginstal dan menjalankan Orchestrator RPM AlloyDB Omni.
- Cara menginstal dan mengonfigurasi RPM AlloyDB Omni untuk arsitektur referensi HA.
Anda dapat membaca lebih lanjut tentang AlloyDB Omni dalam dokumentasi.