Praktik terbaik cadangan standar berlaku saat membuat kebijakan cadangan OpenStack Anda. Misalnya, seberapa sering membuat cadangan data Anda terkait erat dengan seberapa cepat Anda perlu pulih dari kehilangan data.
Catatan
Jika Anda tidak dapat kehilangan data sama sekali, Anda juga harus fokus pada penyebaran yang sangat tersedia. The OpenStack High Availability Guide menawarkan saran untuk menghilangkan satu titik kegagalan yang dapat menyebabkan gangguan sistem. Meskipun ini bukan dokumen yang sepenuhnya preskriptif, ia menawarkan metode dan teknik untuk menghindari downtime dan kehilangan data.
Pertimbangan cadangan lainnya termasuk:
Berapa banyak cadangan yang harus disimpan?
Haruskah cadangan disimpan off-site?
Seberapa sering cadangan harus diuji?
Sama pentingnya dengan kebijakan cadangan adalah kebijakan pemulihan [atau setidaknya pengujian pemulihan].
Yang Harus Dicadangkan
Sementara OpenStack terdiri dari banyak komponen dan komponen yang bergerak, membuat cadangan data penting cukup sederhana.
Bab ini hanya menjelaskan cara mencadangkan file konfigurasi dan database yang harus dijalankan oleh berbagai komponen OpenStack. Bab ini tidak menjelaskan cara membuat cadangan objek di dalam Object Storage atau data yang terkandung di dalam Block Storage. Umumnya area ini dibiarkan bagi pengguna untuk membuat cadangan sendiri.
Backup Database
Contoh arsitektur OpenStack menunjuk pengontrol cloud sebagai server MySQL. Server MySQL ini meng-host basis data untuk nova, glance, cinder, dan keystone. Dengan semua basis data ini di satu tempat, sangat mudah untuk membuat cadangan basis data:
# mysqldump --opt --all-databases > openstack.sql
Jika Anda hanya ingin membuat cadangan satu database, Anda dapat menjalankan:
# mysqldump --opt nova > nova.sql
di mana nova
adalah basis data yang ingin Anda buat cadangannya.
Anda dapat dengan mudah mengotomatiskan proses ini dengan membuat tugas cron yang menjalankan skrip berikut sekali sehari:
#!/bin/bash backup_dir="/var/lib/backups/mysql" filename="${backup_dir}/mysql-`hostname`-`eval date +%Y%m%d`.sql.gz" # Dump the entire MySQL database /usr/bin/mysqldump --opt --all-databases | gzip > $filename # Delete backups older than 7 days find $backup_dir -ctime +7 -type f -delete
Skrip ini membuang seluruh database MySQL dan menghapus cadangan yang lebih lama dari tujuh hari.
Cadangan Sistem File
Bagian ini membahas file dan direktori mana yang harus didukung secara teratur, yang diatur oleh layanan.
Compute
Direktori /etc/nova
pada cloud controller dan compute node harus secara teratur dicadangkan.
/var/log/nova
tidak perlu dicadangkan jika semua log masuk ke area pusat. Sangat disarankan untuk menggunakan server logging pusat atau membuat cadangan direktori log.
# mysqldump --opt nova > nova.sql0 adalah direktori penting lainnya untuk dicadangkan. Pengecualian untuk hal ini adalah subdirektori
# mysqldump --opt nova > nova.sql1 pada compute node. Subdirektori ini berisi image KVM dari instance yang sedang berjalan. Anda ingin mencadangkan direktori ini hanya jika Anda perlu mempertahankan salinan cadangan dari semua instance. Dalam sebagian besar keadaan, Anda tidak perlu melakukan ini, tetapi ini dapat bervariasi dari cloud ke cloud dan tingkat layanan Anda. Perlu diketahui juga bahwa membuat cadangan instance KVM langsung dapat menyebabkan instance tersebut tidak bisa boot dengan benar jika pernah dipulihkan dari cadangan.
Katalog Image dan Pengiriman
# mysqldump --opt nova > nova.sql2 and
# mysqldump --opt nova > nova.sql3 ikuti aturan yang sama dengan counterpart Nova mereka.
# mysqldump --opt nova > nova.sql4 juga harus didukung. Perhatikan
# mysqldump --opt nova > nova.sql5.Jika Anda menggunakan back end berbasis file dari glance,
# mysqldump --opt nova > nova.sql5 Di sinilah image disimpan dan perawatan harus diambil.
Ada dua cara untuk memastikan stabilitas dengan direktori ini. Yang pertama adalah memastikan direktori ini dijalankan pada array RAID. Jika disk gagal, direktori tersedia. Cara kedua adalah menggunakan alat seperti rsync untuk mereplikasi image ke server lain:
# rsync -az --progress /var/lib/glance/images backup-server:/var/lib/glance/images/
Identity
# mysqldump --opt nova > nova.sql7 and
# mysqldump --opt nova > nova.sql8 ikuti aturan yang sama dengan komponen lainnya.
# mysqldump --opt nova > nova.sql9, meskipun tidak boleh berisi data apa pun yang digunakan, juga dapat dicadangkan untuk berjaga-jaga.
Block Storage
#!/bin/bash backup_dir="/var/lib/backups/mysql" filename="${backup_dir}/mysql-`hostname`-`eval date +%Y%m%d`.sql.gz" # Dump the entire MySQL database /usr/bin/mysqldump --opt --all-databases | gzip > $filename # Delete backups older than 7 days find $backup_dir -ctime +7 -type f -delete0 and
#!/bin/bash backup_dir="/var/lib/backups/mysql" filename="${backup_dir}/mysql-`hostname`-`eval date +%Y%m%d`.sql.gz" # Dump the entire MySQL database /usr/bin/mysqldump --opt --all-databases | gzip > $filename # Delete backups older than 7 days find $backup_dir -ctime +7 -type f -delete1 ikuti aturan yang sama dengan komponen lainnya.
#!/bin/bash backup_dir="/var/lib/backups/mysql" filename="${backup_dir}/mysql-`hostname`-`eval date +%Y%m%d`.sql.gz" # Dump the entire MySQL database /usr/bin/mysqldump --opt --all-databases | gzip > $filename # Delete backups older than 7 days find $backup_dir -ctime +7 -type f -delete2 juga harus didukung.
Networking [jaringan]
#!/bin/bash backup_dir="/var/lib/backups/mysql" filename="${backup_dir}/mysql-`hostname`-`eval date +%Y%m%d`.sql.gz" # Dump the entire MySQL database /usr/bin/mysqldump --opt --all-databases | gzip > $filename # Delete backups older than 7 days find $backup_dir -ctime +7 -type f -delete3 and
#!/bin/bash backup_dir="/var/lib/backups/mysql" filename="${backup_dir}/mysql-`hostname`-`eval date +%Y%m%d`.sql.gz" # Dump the entire MySQL database /usr/bin/mysqldump --opt --all-databases | gzip > $filename # Delete backups older than 7 days find $backup_dir -ctime +7 -type f -delete4 ikuti aturan yang sama dengan komponen lainnya.
#!/bin/bash backup_dir="/var/lib/backups/mysql" filename="${backup_dir}/mysql-`hostname`-`eval date +%Y%m%d`.sql.gz" # Dump the entire MySQL database /usr/bin/mysqldump --opt --all-databases | gzip > $filename # Delete backups older than 7 days find $backup_dir -ctime +7 -type f -delete5 juga harus didukung.
Object Storage
#!/bin/bash backup_dir="/var/lib/backups/mysql" filename="${backup_dir}/mysql-`hostname`-`eval date +%Y%m%d`.sql.gz" # Dump the entire MySQL database /usr/bin/mysqldump --opt --all-databases | gzip > $filename # Delete backups older than 7 days find $backup_dir -ctime +7 -type f -delete6 sangat penting untuk didukung. Direktori ini berisi file konfigurasi swift serta file ring dan ring , yang jika hilang, membuat data di cluster Anda tidak dapat diakses. Praktik terbaik adalah menyalin file pembangun ke semua node penyimpanan bersama dengan file ring. Beberapa salinan cadangan tersebar di seluruh kluster penyimpanan Anda.
Telemetry
Cadangkan direktori
#!/bin/bash backup_dir="/var/lib/backups/mysql" filename="${backup_dir}/mysql-`hostname`-`eval date +%Y%m%d`.sql.gz" # Dump the entire MySQL database /usr/bin/mysqldump --opt --all-databases | gzip > $filename # Delete backups older than 7 days find $backup_dir -ctime +7 -type f -delete7 yang berisi file konfigurasi Telemetry.
Orchestration
Buat cadangan file templat HOT
#!/bin/bash backup_dir="/var/lib/backups/mysql" filename="${backup_dir}/mysql-`hostname`-`eval date +%Y%m%d`.sql.gz" # Dump the entire MySQL database /usr/bin/mysqldump --opt --all-databases | gzip > $filename # Delete backups older than 7 days find $backup_dir -ctime +7 -type f -delete8, dan direktori
#!/bin/bash backup_dir="/var/lib/backups/mysql" filename="${backup_dir}/mysql-`hostname`-`eval date +%Y%m%d`.sql.gz" # Dump the entire MySQL database /usr/bin/mysqldump --opt --all-databases | gzip > $filename # Delete backups older than 7 days find $backup_dir -ctime +7 -type f -delete9 yang berisi file konfigurasi Orchestration.
Memulihkan Cadangan
Memulihkan cadangan adalah proses yang cukup sederhana. Untuk memulai, pertama pastikan bahwa layanan yang Anda pulihkan tidak berjalan. Misalnya, untuk melakukan pemulihan penuh nova
pada pengontrol cloud, pertama-tama hentikan semua layanan nova
:
# stop nova-api # stop nova-consoleauth # stop nova-novncproxy # stop nova-objectstore # stop nova-scheduler
Sekarang Anda dapat mengimpor basis data yang dicadangkan sebelumnya:
Anda juga dapat mengembalikan direktori nova yang didukung:
# mv /etc/nova{,.orig} # cp -a /path/to/backup/nova /etc/
Setelah file dipulihkan, mulai kembali semuanya:
# start mysql # for i in nova-api nova-consoleauth nova-novncproxy \ nova-objectstore nova-scheduler > do > start $i > done
Layanan lain mengikuti proses yang sama, dengan direktori dan database masing-masing.
Ringkasan
Pencadangan dan pemulihan selanjutnya adalah salah satu tugas pertama yang dipelajari oleh administrator sistem. Namun, setiap sistem memiliki item berbeda yang perlu diperhatikan. Dengan menjaga basis data, layanan gambar, dan lokasi sistem file yang sesuai, Anda dapat yakin bahwa Anda dapat menangani segala peristiwa yang membutuhkan pemulihan.