Mengonfigurasi spesifikasi ketersediaan tinggi
Untuk mengonfigurasi ketersediaan tinggi, isi informasi berikut dalam spesifikasi
DBCluster Anda:
DBCluster:
metadata:
...
spec:
...
readOnlyPort: READ_ONLY_PORT
availability:
numberOfStandbys: NUMBER_OF_STANDBYS
enableStandbyAsReadReplica: true
enableAutoFailover: true
enableAutoHeal: true
replayReplicationSlotsOnStandbys: true
healthcheckPeriodSeconds: HEALTHCHECK_PERIOD
autoFailoverTriggerThreshold: AUTOFAILOVER_TRIGGER_THRESHOLD
autoHealTriggerThreshold: AUTOHEAL_TRIGGER_THRESHOLD
Ganti variabel berikut:
NUMBER_OF_STANDBYS: jumlah node standby yang akan disiapkan. Menetapkan nilai ini ke0akan menonaktifkan ketersediaan tinggi. Nilai maksimum adalah5. Jika Anda tidak yakin jumlah node standby yang diperlukan, mulailah dengan2untuk ketahanan tinggi.(Opsional)
READ_ONLY_PORT: port pada load balancer atau alamat IP virtual yang digunakan untuk endpoint standby hanya baca. Nilai defaultnya adalah5433(port utama ditambah 1).(Opsional)
HEALTHCHECK_PERIOD: jumlah detik untuk menunggu di antara setiap health check. Nilai defaultnya adalah30. Nilai minimumnya adalah1. Nilai maksimumnya adalah86400(satu hari).(Opsional)
AUTOFAILOVER_TRIGGER_THRESHOLD: jumlah kegagalan health check yang dapat terjadi sebelum failover terjadi. Nilai defaultnya adalah3. Nilai minimum adalah0, tetapi jika nilai disetel ke0, AlloyDB Omni akan menggunakan nilai default.Failover otomatis terjadi jika health check gagal
AUTOFAILOVER_TRIGGER_THRESHOLDkali atau selamaHEALTHCHECK_PERIOD * AUTOFAILOVER_TRIGGER_THRESHOLDdetik (90 detik secara default).(Opsional)
AUTOHEAL_TRIGGER_THRESHOLD: jumlah kegagalan health check sebelum pemulihan otomatis dimulai. Nilai defaultnya adalah5. Nilai minimum adalah0, tetapi jika nilai disetel ke0, AlloyDB Omni akan menggunakan nilai default.Pemulihan otomatis terjadi jika health check gagal
AUTOHEAL_TRIGGER_THRESHOLDkali atau selamaHEALTHCHECK_PERIOD * AUTOHEAL_TRIGGER_THRESHOLDdetik.
Memverifikasi endpoint standby hanya baca
Saat Anda menyetel enableStandbyAsReadReplica: true, load balancer (alamat IP virtual HAProxy dan Keepalived) akan otomatis mengekspos endpoint khusus hanya baca selain endpoint baca-tulis utama.
HAProxy merutekan traffic di seluruh standby aktif sebagai berikut:
- Menjalankan health check pada semua node standby menggunakan
GET /isstandby. - Mendistribusikan kueri baca di seluruh standby aktif menggunakan load balancing
leastconn. - Memperbarui perutean secara otomatis saat terjadi failover tanpa menghentikan koneksi klien ke topologi standby baru.
Untuk memverifikasi endpoint cluster Anda, jalankan salah satu perintah berikut:
alloydbctl
alloydbctl get -d "DEPLOYMENT_SPEC" -t DBCluster -n DBCLUSTER_NAMEGanti variabel berikut:
DEPLOYMENT_SPEC: jalur ke spesifikasi deployment yang Anda buat di Menginstal komponen AlloyDB Omni.DBCLUSTER_NAME: nama cluster database yang Anda tentukan di Membuat cluster.
Ansible
Buat playbook Ansible untuk peran
google.alloydbomni_orchestrator.status. Misalnya,status.yaml:- name: STATUS_PLAYBOOK_NAME hosts: localhost vars: ansible_user: ANSIBLE_USER ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE roles: - role: google.alloydbomni_orchestrator.statusGanti variabel berikut:
STATUS_PLAYBOOK_NAME: nama playbook Ansible Anda. Contoh,My cluster status.ANSIBLE_USER: Pengguna OS yang digunakan Ansible untuk login ke node AlloyDB Omni.ANSIBLE_SSH_PRIVATE_KEY_FILE: kunci pribadi yang digunakan Ansible untuk terhubung ke node AlloyDB Omni Anda menggunakan SSH.
Jalankan playbook:
ansible-playbook status.yaml -i "DEPLOYMENT_SPEC" -e resource_type=DBCluster \ -e resource_name=DBCLUSTER_NAMEGanti variabel berikut:
DEPLOYMENT_SPEC: jalur ke spesifikasi deployment yang Anda buat di Menginstal komponen AlloyDB Omni.DBCLUSTER_NAME: nama cluster database yang Anda tentukan di Membuat cluster.
Endpoint dilaporkan di bagian status.primary.endpoints:
- Read-Write: VIRTUAL_IP:5432
- Read-Only: VIRTUAL_IP:5433
Menerapkan spesifikasi DBCluster Anda
Untuk menerapkan spesifikasi DBCluster yang telah dikonfigurasi, jalankan salah satu perintah berikut:
alloydbctl
alloydbctl apply -d "DEPLOYMENT_SPEC" -r "DBCLUSTER_SPECIFICATION"Ganti variabel berikut:
DEPLOYMENT_SPEC: jalur ke spesifikasi deployment yang Anda buat di Menginstal komponen AlloyDB Omni.DBCLUSTER_SPECIFICATION: jalur ke spesifikasiDBClusteryang Anda buat di Membuat cluster.
Ansible
ansible-playbook DBCLUSTER_PLAYBOOK -i "DEPLOYMENT_SPEC" \
-e resource_spec="DBCLUSTER_SPECIFICATION"Ganti variabel berikut:
RESTORE_PLAYBOOK: jalur ke playbook yang Anda buat untuk CRDDBCluster.DEPLOYMENT_SPEC: jalur ke spesifikasi deployment yang Anda buat di Menginstal komponen AlloyDB Omni.DBCLUSTER_SPECIFICATION: jalur ke spesifikasiDBClusteryang Anda buat di Membuat cluster.
Pengalihan ke instance standby
Anda dapat melakukan pengalihan saat perlu menguji penyiapan ketersediaan tinggi atau aktivitas pemeliharaan terencana lainnya yang memerlukan pengalihan replika utama dan siaga. Setelah pengalihan terjadi, arah replikasi dan peran utama serta siaga akan dibalik.
Pengalihan melakukan tindakan berikut:
Orchestrator AlloyDB Omni membuat server utama offline.
Orchestrator AlloyDB Omni mempromosikan standby menjadi primer baru.
Orchestrator AlloyDB Omni mengonversi primer menjadi standby.
AlloyDB Omni memulai standby yang baru dikonversi.
Melakukan pengalihan
Untuk melakukan pengalihan, selesaikan langkah-langkah berikut:
Pastikan instance utama dan standby Anda responsif.
Verifikasi bahwa
status.phaseketersediaan tinggi adalahReady.alloydbctlalloydbctl get -d "DEPLOYMENT_SPEC" -t DBCluster -n DBCLUSTER_SPECIFICATION -o yamlGanti variabel berikut:
DEPLOYMENT_SPEC: jalur ke spesifikasi deployment yang Anda buat di Menginstal komponen AlloyDB Omni.DBCLUSTER_SPECIFICATION: nama spesifikasiDBClusteryang Anda tentukan di Membuat cluster.
Ansible
ansible-playbook status.yaml -i DEPLOYMENT_SPEC -e resource_type=DBCluster \ -e resource_name=DBCLUSTER_SPECIFICATIONGanti variabel berikut:
DEPLOYMENT_SPEC: jalur ke spesifikasi deployment yang Anda buat di Menginstal komponen AlloyDB Omni.DBCLUSTER_SPECIFICATION: nama spesifikasiDBClusteryang Anda tentukan di Membuat cluster.
Buat spesifikasi
Switchovermenggunakan format berikut:Switchover: metadata: name: SWITCHOVER_NAME spec: dbClusterRef: DBCLUSTER_NAME newPrimary: NEW_PRIMARY_NAMEGanti variabel berikut:
SWITCHOVER_NAME: nama untuk spesifikasiSwitchoverini. Contohnya,my-switchover-1. Nama ini harus unik setiap kali pengalihan dilakukan.DBCLUSTER_NAME: nama cluster database yang Anda tentukan di Membuat cluster.(Opsional)
NEW_PRIMARY_NAME: adalah instance standby yang menjadi instance utama baru. Untuk memetakan nama instance ke host, lihat kolominstanceListdi statusDBClusteryang dirujuk.
Jika Anda menggunakan Ansible, buat playbook untuk spesifikasi
SwitchoverAnda.- name: SWITCHOVER_PLAYBOOK_NAME hosts: localhost vars: ansible_user: ANSIBLE_USER ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE roles: - role: google.alloydbomni_orchestrator.switchoverGanti variabel berikut:
SWITCHOVER_PLAYBOOK_NAME: nama playbook Ansible Anda. Contoh,My Switchover.ANSIBLE_USER: Pengguna OS yang digunakan Ansible untuk login ke node AlloyDB Omni.ANSIBLE_SSH_PRIVATE_KEY_FILE: kunci pribadi yang digunakan Ansible untuk terhubung ke node AlloyDB Omni Anda menggunakan SSH.
Terapkan spesifikasi
SwitchoverAnda.alloydbctlalloydbctl apply -d "DEPLOYMENT_SPEC" -r "SWITCHOVER_SPECIFICATION"Ganti variabel berikut:
DEPLOYMENT_SPEC: jalur ke spesifikasi deployment yang Anda buat di Menginstal komponen AlloyDB Omni.SWITCHOVER_SPECIFICATION: jalur ke spesifikasiSwitchoveryang Anda buat di langkah ketiga.
Ansible
ansible-playbook SWITCHOVER_PLAYBOOK -i "DEPLOYMENT_SPEC" \ -e resource_spec="SWITCHOVER_SPECIFICATION"Ganti variabel berikut:
SWITCHOVER_PLAYBOOK: jalur ke playbook yang Anda buat untuk CRDSwitchoverdi langkah empat.DEPLOYMENT_SPEC: jalur ke spesifikasi deployment yang Anda buat di Menginstal komponen AlloyDB Omni.SWITCHOVER_SPECIFICATION: jalur ke spesifikasiSwitchoveryang Anda buat di langkah ketiga.
Load balancer untuk ketersediaan tinggi
Load balancer (HAProxy) mencapai ketersediaan tinggi dengan menyambungkan nodenya dengan Keepalived dan IP virtual. Keepalived menggunakan Virtual Router Redundancy Protocol (VRRP) untuk mengontrol IP virtual mengambang. Aplikasi klien database terhubung ke IP virtual ini, bukan alamat IP node database.
Dalam konfigurasi yang tidak menggunakan load balancer khusus, Keepalived diinstal langsung di node database. Dalam skenario ini, ketersediaan tinggi dicapai dengan menetapkan IP virtual secara dinamis ke node utama saat ini, sehingga memastikan failover yang lancar jika node utama menjadi tidak tersedia.
Untuk melakukan pemilihan yang stabil, Keepalived menetapkan prioritas VRRP ke node cluster database. Node load balancer pertama mengambil peran utama
dengan prioritas Keepalived yang lebih tinggi—misalnya, 110. Node berikutnya
bertindak sebagai node sekunder dengan prioritas yang lebih rendah—misalnya, 100.
Untuk memastikan bahwa IP virtual mengarah ke node yang responsif, Keepalived menjalankan health check berkelanjutan setiap dua detik. Tindakan ini memverifikasi status proses HAProxy
systemd. Jika layanan HAProxy di server utama gagal, Keepalived akan memigrasikan IP virtual ke node sekunder yang responsif.
Jika keanggotaan node database berubah, HAProxy dan Keepalived akan otomatis menunjuk ke node database aktif yang baru. Konfigurasi perutean pokok diperbarui tanpa menghentikan koneksi klien aktif.
Mengonfigurasi load balancer
Untuk mengonfigurasi IP virtual bagi node load balancer, tambahkan kolom
dbLoadBalancerOptions berikut ke kolom primarySpec dalam spesifikasi
DBCluster Anda:
DBCluster:
spec:
primarySpec:
...
dbLoadBalancerOptions:
onprem:
loadBalancerIP: "VIRTUAL_IP"
loadBalancerType: "internal"
loadBalancerInterface: "VIRTUAL_IP_INTERFACE"
Ganti variabel berikut:
VIRTUAL_IP: alamat IP statis yang digunakan untuk IP virtual mengambang. Aplikasi klien database menggunakan alamat IP yang ditentukan di sini. Untuk memastikan Keepalived dapat menyiarkan ARP gratis dengan berhasil, alamat IP ini harus tersedia; tidak dapat melakukan loopback; dan dalam kasus infrastruktur lokal, termasuk dalam subnet yang sama dengan antarmuka node utama Anda.VIRTUAL_IP_INTERFACE: antarmuka jaringan tempatVIRTUAL_IPdikonfigurasi. Nilai defaultnya adalaheth0.