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 sudah 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 Anda butuhkan
- Dapatkan link URL ke RPM AlloyDB Omni dan orchestrator RPM. Untuk melakukannya, Anda harus mengisi formulir pendaftaran omni AlloyDB. Link dikirim ke email Anda yang merupakan server URL repositori. Lakukan 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
Buat 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:

Virtual machine ini berisi semua alat developer 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: ID project Google Cloud hanya boleh terdiri dari 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 seperti yang tercantum dalam 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 dan Memvalidasi skrip Terraform
- Sekarang Anda dapat menyediakan VM.
terraform init - Sebelum membuat VM, pastikan Anda memiliki akses yang diperlukan untuk membuat VM dan resource lainnya. Singkatnya, Anda 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 ZONE untuk node kontrol. Kita akan memerlukannya nanti selama codelab ini.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 perlu 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 telah 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 -f $(id -un) sudo usermod -aG $(id -un) $(id -un) - Penyiapan Terraform membuat beberapa skrip konfigurasi dan menahapkannya 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 dalam 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 juga.
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. Instal 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 prompt ssh VM kontrol, file lingkungan sumber.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 RPM Orchestrator, lalu instal file tersebut.
Perintahgcloud storage cp "gs://${ORCHESTRATOR_ANSIBLE_COLLECTION_PATH#https://storage.googleapis.com/}google-alloydbomni_orchestrator-*.tar.gz" . COLLECTION_FILE=$(ls -1 google-alloydbomni_orchestrator-*.tar.gz \ | sort -V | tail -n 1) ansible-galaxy collection install "$COLLECTION_FILE" ansible-galaxy collection list | grep alloydbomni_orchestratorsort -Vdantail -n 1memilih file dengan versi terbaru. Catatan: Pastikan variabel ORCHESTRATOR_ANSIBLE_COLLECTION_PATH memiliki "/" di bagian akhir. - Pengelola 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 pada 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 pada 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. Bootstrapping Cluster AlloyDB Omni
Pada tahap ini, kita telah menginstal semua komponen yang diperlukan di semua node. Kita siap melakukan bootstrapping cluster AlloyDB Omni.
- Hubungkan ke VM kontrol melalui SSH, jika belum berada di node kontrol.
Setelah Anda berada di prompt ssh VM kontrol, file lingkungan sumber.gcloud compute ssh "$CLUSTER-control" --zone=$ZONE --project=$PROJECTsource ~/.codelab.env - Buat hash untuk sandi Anda dan ambil versi database AlloyDB Omni yang diinstal:
encoded_password=$(echo -n "your unique password" | base64) DB_VERSION=$(/tmp/run-all.sh -t db 'rpm -q --qf "%{VERSION}\n" alloydbomni18' | tail -n 1) echo "$DB_VERSION" - 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: $DB_VERSION 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 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 tepat 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 - Lakukan bootstrap pada 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. Verifikasi 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 Anda enkode 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 bahwa 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 pencadangan langsung ke Cloud Storage. Anda dapat mengonfigurasi rencana pencadangan dan memicu pencadangan on-demand ke bucket GCS yang dibuat oleh penyiapan Terraform Anda.
- Buat file spesifikasi rencana pencadangan 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 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 on-demand 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 pencadangan, buat playbook status.yaml:
cat > status.yaml <<EOF
- name: Fetch AlloyDB Omni Resource Status
hosts: localhost
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 menggunakan deployment, Anda dapat menghancurkan resource yang disediakan untuk menghindari timbulnya biaya.
- Buat playbook bernama teardown.yaml:
cat > teardown.yaml <<EOF - name: Tear down AlloyDB Omni cluster hosts: localhost roles: - role: google.alloydbomni_orchestrator.delete EOF - Jalankan playbook menggunakan ansible-playbook. Jika Anda mengonfigurasi pencadangan, hapus resource Backup dan BackupPlan terlebih dahulu:
Jika Anda mengonfigurasi PgBouncer, hapus resource penggabungan 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, beralih kembali ke terminal, dan buka direktori kerja Terraform Anda.
Catatan: jika Anda baru saja login ke Cloud Shell, jangan lupa untuk menyetel 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 rute atau resource jaringan yang masih ada terkadang dapat mencegah penonaktifan sepenuhnya, jalankan perintah pembersihan aman berikut untuk memastikan semua aturan firewall, gateway NAT, router, rute, subnet, dan jaringan terkait dihapus sepenuhnya. Ganti
REGIONdengan region deployment spesifik Anda, 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 AlloyDB Omni dalam dokumentasi.