Dokumen ini menjelaskan konfigurasi deployment untuk Spanner Omni di
virtual machine (VM) atau server bare metal. Dokumen ini menjelaskan struktur dan opsi konfigurasi untuk file konfigurasi deployment YAML (deployment.yaml) yang digunakan untuk menentukan topologi deployment VM dan parameter runtime saat menggunakan Spanner Omni CLI.
Untuk mempelajari cara membuat deployment, lihat salah satu artikel berikut:
- Membuat deployment di VM
- Membuat deployment yang aman di VM
- Membuat deployment di Kubernetes
- Membuat deployment yang aman di Kubernetes
Ringkasan konfigurasi deployment
Saat membuat deployment di VM atau server bare metal, Anda meneruskan file konfigurasi ini ke perintah spanner deployment create di Spanner Omni CLI:
spanner deployment create --config-file=deployment.yaml
Konfigurasi deployment menentukan elemen utama berikut:
- Mode server tunggal: Mode pengoptimalan yang membatasi seluruh deployment ke satu server untuk pengembangan dan pengujian.
- Lokasi: Situs fisik atau region cloud tempat server Anda berada.
- Jarak lokasi: Latensi jaringan antara pasangan lokasi.
- Zona: Pengelompokan server logis yang merepresentasikan replika Paxos.
- Server root: Server khusus yang bertanggung jawab atas kuorum keanggotaan dan metadata zona.
- Jenis replika: Peran untuk setiap zona (baca-tulis, saksi, atau hanya baca).
- SLA Clock: Parameter sinkronisasi TrueTime, termasuk error jitter clock dan tingkat penyimpangan.
- Setelan deployment: Setelan global seperti lokasi pemimpin pilihan dan setelan keamanan autentikasi.
Struktur file konfigurasi
Contoh berikut menunjukkan struktur tingkat teratas file konfigurasi deployment:
# Deployment name
name: regional-deployment
# Restrict the entire deployment to a single server (optional, default: false)
single_server: false
# Physical or logical locations (regions)
location:
- name: us-central1
# Network distances between locations (optional)
location_distance:
- src: us-central1
dest: us-east1
latency_ms: 30
# Zones and root servers in the deployment
zone:
- name: us-central1-a
location: us-central1
single_server: false
replica_type: READ_WRITE
root_server:
- host: rootserver1.example.internal
port_base: 15000
# Clock synchronization SLA parameters (optional)
clock_sla:
jitter_in_s: 0.005
rate_error_in_ppm: 200
# Deployment settings (optional)
deployment_settings:
preferred_leader_location: us-central1
security_settings:
insecure_mode: true
Kolom tingkat teratas
Konfigurasi deployment mendukung kolom tingkat teratas berikut:
| Kolom | Jenis | Deskripsi |
|---|---|---|
name |
String | Nama deployment, seperti prod,
staging, atau regional-deployment. |
single_server |
Boolean | Opsional. Jika disetel ke true, menentukan bahwa seluruh
deployment adalah deployment server tunggal, yang membatasinya ke satu zona dan
satu server. Deployment yang dibuat dengan single_server: true
tidak dapat menambahkan zona atau server setelah dibuat. Jika Anda ingin menjalankan
Spanner Omni dalam mode server tunggal, Anda tidak perlu
membuat konfigurasi ini secara manual karena Spanner Omni
akan membuatnya secara otomatis saat Anda menjalankan perintah spanner
start-single-server. Default-nya adalah false. |
location |
Daftar objek | Lokasi fisik atau logis (region) dalam deployment. |
location_distance |
Daftar objek | Opsional. Latensi jaringan antara pasangan lokasi. |
zone |
Daftar objek | Wajib. Zona yang membentuk deployment. Anda harus menentukan setidaknya satu zona. |
clock_sla |
Objek | Opsional. Parameter perjanjian tingkat layanan (SLA) sinkronisasi jam untuk software TrueTime. |
deployment_settings
|
Objek | Opsional. Setelan runtime untuk penempatan pemimpin pilihan dan autentikasi keamanan. |
Nama Deployment
Kolom name menentukan nama yang dipilih pengguna untuk deployment. Anda dapat menggunakan
string apa pun yang mengidentifikasi deployment, seperti prod, staging, atau
regional-deployment.
Mode server tunggal
Kolom single_server tingkat teratas menentukan bahwa seluruh deployment adalah deployment server tunggal. Jika disetel ke true, setelan ini membatasi
deployment ke satu zona dan satu server, yang mengurangi overhead resource untuk lingkungan
pengembangan dan pengujian lokal. Deployment yang dibuat dengan
single_server:true tidak dapat menambahkan zona atau server setelah dibuat.
Jika Anda ingin menjalankan Spanner Omni dalam mode server tunggal, Anda tidak
perlu membuat konfigurasi ini secara manual. Saat Anda menjalankan perintah spanner
start-single-server, Spanner Omni akan otomatis
membuat konfigurasi ini untuk Anda. Untuk mengetahui informasi selengkapnya, lihat
Opsi A: Deployment server tunggal.
Kolom single_server tingkat teratas berbeda dengan kolom single_server tingkat zona:
- Kolom top-level
single_serverberlaku untuk seluruh deployment. - Kolom tingkat zona
single_serverhanya berlaku untuk setiap zona dalam deployment. Untuk mengetahui informasi selengkapnya, lihat Zona server tunggal.
Lokasi
Lokasi mewakili pusat data fisik atau region cloud tempat mesin berada (setara dengan region di Google Cloud).
Anda menentukan lokasi dalam daftar location:
location:
- name: us-central1
- name: europe-west2
Nama lokasi harus memenuhi persyaratan berikut:
- Harus dimulai dengan huruf dan diakhiri dengan huruf atau digit.
- Hanya boleh berisi huruf, digit, garis bawah (
_), dan tanda hubung (-). - Dapat secara opsional menyertakan awalan domain yang diikuti dengan titik dua (misalnya,
cloud.google.com:us-east1atauonprem:datacenter1). - Tidak dapat menggunakan nama yang dicadangkan
default. - Harus unik di seluruh deployment.
Jarak lokasi
Daftar location_distance menentukan latensi jaringan antara pasangan lokasi. Spanner Omni menggunakan informasi ini untuk mengoptimalkan replikasi dan perutean kueri.
location_distance:
- src: us-central1
dest: europe-west2
latency_ms: 105
- src: europe-west2
dest: us-central1
latency_ms: 110
Setiap objek jarak lokasi berisi kolom berikut:
src: Wajib diisi. Nama lokasi sumber. Harus cocok dengan lokasi yang ditentukan dalam daftarlocation.dest: Wajib diisi. Nama lokasi tujuan. Harus cocok dengan lokasi yang ditentukan dan tidak boleh sama dengansrc.latency_ms: Latensi jaringan dalam milidetik. Harus berupa bilangan bulat non-negatif. Jika tidak ada, Spanner Omni mengasumsikan bahwa latensi dapat diabaikan (di bawah milidetik).
Latensi jaringan di jaringan fisik tidak selalu simetris. Jika Anda memberikan
(src, dest) dan (dest, src), Spanner Omni akan mematuhi kedua
pengukuran tersebut. Jika Anda hanya memberikan satu arah, Spanner Omni mengasumsikan arah sebaliknya memiliki latensi yang sama.
Zona
Zona adalah pengelompokan logis dari satu atau beberapa server dalam suatu lokasi. Untuk replikasi data, setiap zona merepresentasikan replika Paxos. Deployment harus memiliki setidaknya satu zona.
zone:
- name: us-central1-a
location: us-central1
single_server: false
replica_type: READ_WRITE
root_server:
- host: rootserver1.example.internal
port_base: 15000
- host: rootserver2.example.internal
port_base: 15000
- host: rootserver3.example.internal
port_base: 15000
Setiap objek zona mendukung kolom berikut:
| Kolom | Jenis | Deskripsi |
|---|---|---|
name |
String | Wajib. Nama zona. Mengikuti aturan penamaan yang sama dengan nama lokasi. Harus unik di seluruh deployment. |
location |
String | Nama lokasi tempat zona berada. Harus cocok dengan lokasi
yang ditentukan dalam daftar location. Jika tidak ada,
Spanner Omni akan menetapkan zona ke lokasi default. |
single_server
|
Boolean | Opsional. Jika disetel ke true, menunjukkan bahwa zona ini hanya memiliki satu server (hanya dapat memiliki satu server root dan tidak ada server lain). Menghilangkan overhead replikasi metadata zona dalam zona.
Dalam deployment multi-zona, Anda dapat menyetelnya ke true untuk
zona tertentu, seperti zona replika WITNESS yang tidak
menyimpan data pengguna, sementara zona lain memiliki beberapa server. Default-nya adalah
false. |
replica_type |
String enum | Peran replika zona dalam kuorum Paxos. Nilai yang didukung adalah
READ_WRITE, WITNESS, dan
READ_ONLY. Default-nya adalah READ_WRITE. |
root_server |
Daftar objek | Wajib. Daftar server root di zona. |
Jenis replika
Spanner Omni mendukung tiga jenis replika untuk zona:
READ_WRITE: Menyimpan salinan lengkap data pengguna, melayani permintaan baca, dan memberikan suara dalam kuorum Paxos. Replika baca-tulis memenuhi syarat untuk menjadi pemimpin Paxos untuk mengusulkan penulisan.WITNESS: Memberikan suara dalam kuorum Paxos untuk membantu mencapai konsensus, tetapi tidak dapat menjadi pemimpin. Replika saksi tidak menyimpan data pengguna dan tidak dapat melayani permintaan baca. Konfigurasi ini membantu mencapai kuorum tanpa overhead penyimpanan atau latensi penulisan replika penuh di berbagai lokasi yang berjauhan.READ_ONLY: Menyimpan salinan lengkap data pengguna yang direplikasi secara asinkron dari pemimpin. Replika hanya baca tidak dapat menjadi pemimpin dan tidak memberikan suara dalam kuorum Paxos. Replika ini memindahkan traffic baca dari replika baca-tulis.
Saat mengonfigurasi jenis replika, pastikan deployment Anda memenuhi aturan berikut:
- Deployment harus berisi setidaknya satu zona
READ_WRITE. - Jumlah zona
READ_WRITEharus lebih besar daripada jumlah zonaWITNESS.
Server root
Server root memiliki tanggung jawab khusus di Spanner Omni. Server ini menyimpan metadata zona dan mengelola keanggotaan untuk server lain di zona. Jika kuorum server root tidak tersedia, seluruh zona akan menjadi tidak tersedia.
Saat mengonfigurasi server root di deployment.yaml, perhatikan panduan berikut:
- Jumlah server root per zona harus berupa bilangan ganjil antara satu dan sembilan, inklusif, untuk memastikan kuorum demi konsistensi. Jika jumlah server adalah bilangan genap, deployment mungkin gagal. Saat mengonfigurasi zona, tetapkan server sebagai server root. Sebaiknya gunakan satu untuk pengembangan atau pengujian dan tiga untuk zona produksi dengan ketersediaan tinggi.
- Hanya tentukan server root dalam file
deployment.yamlselama pembuatan deployment awal. Server non-root dapat ditambahkan nanti untuk menskalakan kapasitas komputasi dan penyimpanan.
Setiap objek server root mendukung kolom berikut:
host: Wajib diisi. Nama host atau alamat IP mesin yang menjalankan server.port_base: Opsional. Nomor port awal untuk server. Defaultnya adalah15000. Port ini menjadi port gRPC publik untuk koneksi klien. Anda harus mencadangkan port dalam rentang[port_base + 1, port_base + 31](misalnya,15001hingga15031) untuk proses Spanner Omni internal.
Zona server tunggal
Kolom single_server tingkat zona menentukan bahwa setiap zona hanya berisi satu server. Zona server tunggal hanya dapat memiliki satu server root dan tidak dapat menambahkan server lain nanti. Setelan ini menghilangkan overhead
replikasi metadata zona dalam zona tersebut.
Tidak seperti kolom single_server tingkat teratas, yang menunjukkan
bahwa seluruh deployment terdiri dari satu server, kolom
single_server tingkat zona hanya berlaku untuk zona tertentu tersebut.
Dalam deployment multi-zona, Anda dapat mengonfigurasi zona individual sebagai zona server tunggal, sementara zona lainnya berisi beberapa server. Misalnya, pertimbangkan
deployment dengan dua zona replika READ_WRITE dan satu zona replika WITNESS:
- Dua zona
READ_WRITEberisi beberapa server (single_server: false) untuk memberikan ketersediaan tinggi dan menskalakan kapasitas komputasi dan penyimpanan untuk data pengguna. - Anda dapat mengonfigurasi zona
WITNESSsebagai zona server tunggal atau zona multi-server, bergantung pada volume voting Paxos Anda:- Workload kecil hingga sedang: Jika satu VM atau server memiliki kapasitas yang memadai untuk memproses semua traffic voting Paxos untuk deployment, tetapkan
single_server: true. Karena replika saksi hanya memberikan suara dan tidak menyimpan data pengguna, penggunaan satu server akan menghilangkan overhead replikasi metadata dalam zona. - Deployment skala besar: Jika Anda memiliki throughput penulisan yang tinggi atau banyak server di setiap zona
READ_WRITE(misalnya, puluhan atau ratusan node), satu server dapat mengalami kelebihan beban dan menyebabkan kegagalan konsensus Paxos. Konfigurasi zonaWITNESSdengan beberapa server (single_server: false) untuk mendistribusikan beban kerja pemungutan suara.
- Workload kecil hingga sedang: Jika satu VM atau server memiliki kapasitas yang memadai untuk memproses semua traffic voting Paxos untuk deployment, tetapkan
Untuk contoh konfigurasi, lihat Deployment multi-lokasi dengan replika saksi.
SLA Jam
Spanner Omni mengandalkan software TrueTime untuk memberikan konsistensi eksternal tanpa memerlukan hardware GPS khusus atau jam atom. Objek
clock_sla menentukan batas sinkronisasi yang diharapkan untuk clock server
di seluruh deployment:
clock_sla:
jitter_in_s: 0.005
rate_error_in_ppm: 200
Konfigurasi clock_sla mencakup kolom berikut:
jitter_in_s: Jitter clock maksimum yang diharapkan dalam detik. Harus berupa bilangan floating point non-negatif (>= 0).rate_error_in_ppm: Error laju penyimpangan clock maksimum dalam bagian per juta (ppm). Harus berupa nilai antara0dan10000.
Untuk mengetahui informasi selengkapnya tentang sinkronisasi waktu, lihat TrueTime dan konsistensi eksternal.
Setelan deployment
Objek deployment_settings mengonfigurasi perilaku deployment global,
termasuk preferensi lokasi pemimpin dan keamanan jaringan:
deployment_settings:
preferred_leader_location: us-central1
security_settings:
insecure_mode: false
authentication_methods:
- AUTHENTICATION_METHOD_PASSWORD
- AUTHENTICATION_METHOD_CLIENT_CERTIFICATE
password_authentication_protocol: PASSWORD_AUTHENTICATION_PROTOCOL_OPAQUE
Lokasi pemimpin pilihan
Kolom preferred_leader_location menentukan lokasi tempat pemimpin Paxos
ditempatkan secara preferensial. Memilih pemimpin di dekat workload aplikasi utama Anda akan mengurangi latensi operasi tulis dengan menghindari perjalanan pulang pergi jaringan tambahan.
Saat mengonfigurasi preferred_leader_location, pastikan hal berikut:
- Lokasi yang ditentukan harus cocok dengan lokasi yang ditentukan dalam daftar
location(ataudefault). - Lokasi yang ditentukan harus berisi setidaknya satu zona
READ_WRITE.
Setelan keamanan
Objek security_settings mengonfigurasi mode autentikasi dan enkripsi:
insecure_mode: Boolean. Jika disetel ketrue, autentikasi dan otorisasi untuk koneksi masuk akan dinonaktifkan. Mode ini hanya ditujukan untuk pembuatan prototipe dan evaluasi. Default-nya adalahfalse.authentication_methods: Daftar metode autentikasi yang diaktifkan. Wajib jikainsecure_modeadalahfalse. Nilai yang didukung:AUTHENTICATION_METHOD_PASSWORD: Mengaktifkan autentikasi nama pengguna dan sandi.AUTHENTICATION_METHOD_CLIENT_CERTIFICATE: Mengaktifkan autentikasi sertifikat klien mutual TLS (mTLS).
password_authentication_protocol: Protokol yang digunakan untuk verifikasi sandi. Wajib jikaAUTHENTICATION_METHOD_PASSWORDdisertakan dalamauthentication_methods. Nilai yang didukung:PASSWORD_AUTHENTICATION_PROTOCOL_OPAQUE: Menggunakan protokol pertukaran kunci yang diautentikasi dengan sandi asimetris OPAQUE.
Untuk mengetahui informasi selengkapnya tentang cara menyiapkan enkripsi dan kredensial, lihat Membuat deployment dengan enkripsi TLS di VM.
Contoh konfigurasi deployment
Contoh berikut menunjukkan pola deployment umum.
Deployment multi-zona regional
Konfigurasi berikut membuat deployment regional dengan ketersediaan tinggi di tiga zona dalam satu lokasi:
name: regional-prod
location:
- name: us-central1
zone:
- name: us-central1-a
location: us-central1
replica_type: READ_WRITE
root_server:
- host: root-a1.example.internal
- host: root-a2.example.internal
- host: root-a3.example.internal
- name: us-central1-b
location: us-central1
replica_type: READ_WRITE
root_server:
- host: root-b1.example.internal
- host: root-b2.example.internal
- host: root-b3.example.internal
- name: us-central1-c
location: us-central1
replica_type: READ_WRITE
root_server:
- host: root-c1.example.internal
- host: root-c2.example.internal
- host: root-c3.example.internal
Deployment multi-lokasi dengan replika saksi
Konfigurasi berikut membuat deployment multi-lokasi yang mencakup dua
pusat data dan situs saksi, dengan penempatan pemimpin pilihan. Daftar
location_distance menentukan latensi jaringan asimetris yang realistis
di antara setiap pasangan lokasi. Setiap zona READ_WRITE menggunakan tiga server root untuk ketersediaan tinggi, sedangkan zona WITNESS menggunakan single_server:
true dengan satu server root karena replika saksi tidak menyimpan data pengguna:
name: multi-site-deployment
location:
- name: datacenter-east
- name: datacenter-west
- name: datacenter-central
location_distance:
- src: datacenter-east
dest: datacenter-central
latency_ms: 25
- src: datacenter-central
dest: datacenter-east
latency_ms: 27
- src: datacenter-central
dest: datacenter-west
latency_ms: 30
- src: datacenter-west
dest: datacenter-central
latency_ms: 32
- src: datacenter-east
dest: datacenter-west
latency_ms: 55
- src: datacenter-west
dest: datacenter-east
latency_ms: 58
zone:
- name: east-zone-1
location: datacenter-east
replica_type: READ_WRITE
root_server:
- host: east-root-1.example.internal
- host: east-root-2.example.internal
- host: east-root-3.example.internal
- name: west-zone-1
location: datacenter-west
replica_type: READ_WRITE
root_server:
- host: west-root-1.example.internal
- host: west-root-2.example.internal
- host: west-root-3.example.internal
- name: central-witness-zone
location: datacenter-central
single_server: true
replica_type: WITNESS
root_server:
- host: witness-root-1.example.internal
deployment_settings:
preferred_leader_location: datacenter-east
Deployment yang aman dengan TLS dan autentikasi
Konfigurasi berikut menentukan deployment dengan autentikasi sandi dan mTLS diaktifkan:
name: secure-deployment
location:
- name: us-central1
zone:
- name: us-central1-a
location: us-central1
replica_type: READ_WRITE
root_server:
- host: server-1.example.internal
port_base: 15000
- host: server-2.example.internal
port_base: 15000
- host: server-3.example.internal
port_base: 15000
deployment_settings:
security_settings:
insecure_mode: false
authentication_methods:
- AUTHENTICATION_METHOD_PASSWORD
- AUTHENTICATION_METHOD_CLIENT_CERTIFICATE
password_authentication_protocol: PASSWORD_AUTHENTICATION_PROTOCOL_OPAQUE
Langkah berikutnya
- Membuat deployment di VM
- Membuat deployment dengan enkripsi TLS di VM
- Menskalakan deployment VM
- Mempertahankan deployment