Menggunakan tar dan rsync untuk ketersediaan tinggi

13

Saya memiliki server cloud Ubuntu yang saya tidak memiliki akses langsung tetapi dengan ssh. Saya menggunakan 'tar' untuk mengkloning atau memiliki ketersediaan tinggi server ini. Saya mengikuti tutorial dari tautan [tautan teks] [1]. Saya mencoba menginstal server baru dengan versi yang sama. Ketika saya mengekstrak tar (tar -xvpzf ~ / clone.tgz -C /) pada tujuan (baru), pada akhirnya diakhiri dengan keluaran berikut yang mirip dengan di bawah ini (tidak tahu apakah itu kesalahan).

tar: var/run: time stamp 2010-11-09 17:09:11 is 7335.159880406 s in the future
tar: var/spool/postfix/usr/lib/zoneinfo: time stamp 2010-11-09 17:08:26 is 7290.159730037 s in the future
tar: var/lib: time stamp 2010-11-09 17:27:51 is 8455.159349527 s in the future
tar: usr/bin: time stamp 2010-11-09 17:28:02 is 8466.159254097 s in the future
tar: usr/share/sgml: time stamp 2010-11-09 17:27:47 is 8451.158909506 s in the future
tar: usr/share/man/man7: time stamp 2010-11-09 17:27:50 is 8454.158393583 s in the future
tar: usr/share/man/man1: time stamp 2010-11-09 17:28:02 is 8466.158166556 s in the future
tar: usr/share/man/man8: time stamp 2010-11-09 17:27:51 is 8455.158057701 s in the  future
tar: usr/share/omf/time-admin: time stamp 2010-11-09 17:27:52 is 8456.157830449 s in the future
---------------------------------------------
---------------------------------------------
---------------------------------------------

Saya menggunakan perintah berikut untuk membuat file tar dari direktori yang ditentukan pada sistem sumber.

tar -cvzf ~/clone.tgz --exclude ~/clone.tgz --exclude /etc/hosts --exclude /etc/hostname --exclude /etc/udev/ --exclude /etc/network/interfaces --exclude /etc/resolv.conf  /etc /home /opt /tmp /usr /var /mnt
  • Apakah ada tindakan pencegahan sebelum menggunakan tar? (tar adalah satu kali penciptaan sejak saat itu saya akan menggunakan rsync)
  • Haruskah saya memasukkan direktori lagi seperti bin atau lib? - sarankan saya
  • Haruskah saya mengecualikan direktori apa pun? Seperti saya punya masalah perangkat jaringan (eth0) (gagal memulai eth0). Jadi dalam perintah di atas saya telah mengecualikan "/ etc / udev /" dan setelah ini saya merasa ini baik-baik saja. Seperti ini, apakah ada hal yang harus saya kecualikan dari / etc / atau dari direktori yang saya sertakan? - sarankan saya.
  • Bagaimana saya bisa menjadwalkan rsync (incremental bkp) dengan kombinasi ssh untuk menyinkronkan direktori (ditentukan dalam tar) ke lokasi jarak jauh (misalnya / mnt / newdir) yang dapat saya tar dan ekstrak nanti jika terjadi kegagalan sistem. Rsync dapat dijadwalkan untuk dijalankan sebagai pengguna root tetapi ssh akan meminta kata sandi. FYI, sudo sepenuhnya dinonaktifkan dan juga ssh login langsung ke root juga dinonaktifkan.

Jika ada cara yang lebih baik tanpa membahayakan server untuk mencapai ini, bisa menyarankan.

[1]: http://ubuntuforums.org/showthread.php ? t = 525660

pengguna3215
sumber

Jawaban:

9

Saya akan merekomendasikan Anda untuk menggunakan rsync sebagai gantinya, ini akan memungkinkan Anda untuk melakukan sistem langsung ke sistem sinkronisasi nyata tanpa perlu file sementara. Ini juga memberikan manfaat melakukan pembaruan tambahan saat Anda perlu memperbarui klon.

Saya hanya akan mengecualikan: / proc / / sys / dev / tmp / mnt Pada sistem klon Anda perlu memastikan / etc / fstab dan /boot/grub/grub.cfg diperbarui dengan UUID partisi sistem clone.

Jika Anda memiliki database seperti mysql, Anda harus berhati-hati dan menghentikan DB sebelum melakukan copy.

João Pinto
sumber
ya, diingatkan dengan baik, saya pikir saya harus mengecualikan '/ etc / fstab' dan '/ boot / gru/grub.cfg'. Apakah ini bagus? Silakan letakkan perintah untuk sinkronisasi rsync dari direktori yang ditentukan.
user3215
Ofcourse /boot/grub/grub.cfg sama sekali tidak termasuk
user3215
Bagaimana cara saya memperbarui UUID sistem klon.
user3215
Anda perlu mengganti UUID dari partisi asli di konfigurasi fstab dan grub dengan UUID partisi dari sistem klon. Anda dapat mencantumkan id partisi dengan: blkid.
João Pinto
Anda bermaksud mengatakan bahwa UUID harus sama pada kedua sistem.
user3215
6

Pertama, banyak penyedia cloud IaaS menawarkan kemampuan snapshot yang kuat yang menyelesaikan ini dengan mudah.

Pada EC2, jika Anda menjalankan sistem berbasis EBS, Anda bisa memotretnya secara berkala. Jika sesuatu yang buruk terjadi pada instance sumber, Anda dapat memutar kembali ke snapshot sebelumnya pada instance baru. Jika Anda ingin mengarsipkan snapshot, Anda dapat mem-boot instance lain dengan itu dilampirkan, dan menggunakan sesuatu seperti tar + s3 tanpa berdampak negatif pada kotak produksi.

Ada sejumlah masalah dengan pendekatan ini yang mungkin tidak terlihat saat ini.

  1. Anda mengunci diri Anda menjadi satu teknologi. Jika Anda menjalankan ini di Ubuntu 10.10, dan Anda ingin pergi ke 11.04, Anda harus memutakhirkan sistem sumber, lalu potret kembali. Demikian juga, jika Anda menggunakan snapshot EBS EC2, Anda memerlukan solusi baru jika Anda pergi ke cloud rackspace.
  2. Anda tidak memiliki riwayat perubahan jika Anda menggunakan rsync. Jika Anda memodifikasi sesuatu pada sistem 1, maka sesuatu rusak, Anda mungkin akan merusak sistem cadangan Anda juga saat Anda rsync.
  3. Rsync dapat sangat berdampak besar pada sistem produksi Anda.

Yang Anda inginkan adalah sistem manajemen konfigurasi, dan ketersediaan data yang tinggi.

Saya sarankan Anda memilih sistem manajemen konfigurasi, seperti boneka (terutama!), Koki, atau cfengine. Mulai lakukan semua konfigurasi Anda di sistem manajemen konfigurasi, dan kemudian Anda bisa mem-boot sistem generik, dan menerapkan manajemen konfigurasi untuk itu. Tambahkan 'etckeeper' dan Anda memiliki riwayat.

Untuk ketersediaan data yang tinggi, rsync harus berfungsi, dan jauh lebih mudah karena Anda hanya dapat menyalin data yang Anda inginkan. Ada juga drbd untuk memiliki apa yang berarti "RAID1 jaringan". Ini bukan penggantian untuk cadangan data, yang harus mencakup snapshot historis (baik melalui blokir snapshot perangkat atau sesuatu seperti tar) daripada menyinkronkan ke host pemulihan (bagaimana jika seseorang menghapus semua data yang akan disinkronkan kembali ke kotak pemulihan, menghapus semuanya disana juga?)

SpamapS
sumber
2

Pesan-pesan tersebut kemungkinan disebabkan karena jam server baru lebih lambat daripada yang lebih lama.

Jika Anda mengkloning konfigurasi manajer paket dan database (dan Anda), Anda harus mengkloning / bin, / sbin dan / lib atau sistem tujuan akan berada dalam status yang tidak konsisten. Pendekatan lain adalah dengan mengecualikan /etc/dpkg.info / etc / apt / var / lib / apt dan / var / lib / dpkg dan menginstal ulang semua paket dalam sistem target.

File-file di / var / dpkg dan / var / apt berisi info tentang apa yang diinstal di sistem Anda. Jika Anda tidak mengecualikannya, manajer paket akan percaya bahwa semua program dan dependensi dalam sistem induk diinstal pada target. Tetapi jika Anda tidak menyalin / bin, / sbin, dll ... mereka tidak akan melakukannya. Sangat mungkin terjadi sesuatu pada instalasi atau pembaruan berikutnya.

Untuk tetap disinkronkan dengan rsync, saya selalu menggunakan otentikasi berbasis sertifikat, bukan kata sandi. Pengaturannya cukup mudah, saya ingat saya baru saja membaca halaman manual pertama kali. Berikut ini adalah panduan singkat , jika Anda menginginkan informasi lebih lanjut, saya yakin ini pantas untuk pertanyaan baru.

Javier Rivera
sumber
Tidak. / Var tidak dikecualikan. Pada perintah di atas setelah "--exclude /etc/resolv.conf" semuanya termasuk dari /etc/..../var / mnt. Sebenarnya saya telah menetapkan dua spasi antara resolv.conf dan / etc. Ini tidak ditampilkan.
user3215
maaf saya lupa bagian tautan
user3215
Ok, jadi saya bahkan harus memasukkan bin, sbin, dan lib, tidak masalah di sini. Oh .. Saya harus mengecualikannya dan menginstal semua paket.
user3215
apakah benar-benar perlu untuk mengecualikan /etc/dpkg.info / etc / apt / var / lib / apt dan / var / lib / dpkg ..?
user3215
Jawaban diperbarui.
Javier Rivera