Yüksek kullanılabilirlik için tar ve rsync kullanma


13

Ubuntu bulut sunucularım var, bu da doğrudan erişimim yok ama ssh ile. Bu sunucuyu klonlamak veya yüksek kullanılabilirliğe sahip olmak için 'tar' kullanıyorum. Öğreticiyi [link text] [1] linkinden takip ettim. Aynı sürümde yeni bir sunucu yüklemeyi denedim. Hedefteki katranı (tar -xvpzf ~ / clone.tgz -C /) ayıkladığımda (yeni), sonunda aşağıdaki çıktıya benzer aşağıdaki çıktıyla bitiyor (hata olup olmadığını bilmiyorum).

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
---------------------------------------------
---------------------------------------------
---------------------------------------------

Kaynak sistemde belirtilen dizinlerin bir tar dosyası oluşturmak için aşağıdaki komutu kullanıyorum.

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
  • Katran kullanmadan önce herhangi bir önlem var mı? (katran bir kez yaratıldıktan sonra rsync kullanacağım)
  • Bin veya lib gibi başka bir dizin eklemem gerekir mi? - bana Öner
  • Herhangi bir dizini hariç tutmam gerekir mi? Bir ağ cihazı (eth0) sorunum varmış gibi (eth0 başlatılamadı). Yukarıdaki komutta "/ etc / udev /" komutunu hariç tuttum ve bundan sonra bunun iyi olduğunu hissettim. Bu şekilde, / etc / dizininden veya dahil ettiğim herhangi bir dizinden hariç tutmam gereken herhangi bir şey var mı? - bana Öner.
  • Nasıl rsync (artımlı bkp) ssh kombinasyonu ile (tar içinde belirtilen) dizinleri uzak konum (örneğin / mnt / newdir) ile senkronize edebilir ve sistem arızası durumunda daha sonra çıkarabileceğim. Rsync kök kullanıcı olarak çalışacak şekilde zamanlanabilir, ancak ssh parola ister. FYI, sudo tamamen devre dışıdır ve ayrıca doğrudan ssh köküne giriş de devre dışıdır.

Bunu başarmak için sunucuya zarar vermeden daha iyi bir yol varsa, önerebilir.

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

Yanıtlar:


9

Bunun yerine rsync kullanmanızı öneririm, geçici dosyalara ihtiyaç duymadan gerçek senkronizasyonu sisteminize canlı bir sistem yapmanıza izin verir. Ayrıca, klonu güncellemeniz gerektiğinde artımlı güncellemeler yapma avantajı sağlar.

Sadece hariç tutacağım: / proc / / sys / dev / tmp / mnt Klon sisteminde / etc / fstab ve /boot/grub/grub.cfg dosyalarının klon sistemi bölümlerinin UUID'leriyle güncellendiğinden emin olmanız gerekir.

Eğer mysql gibi bir veritabanınız varsa, kopyayı gerçekleştirmeden önce dikkatli olmanız ve DB'yi durdurmanız gerekir.


evet, hatırlattı, '/ etc / fstab' ve '/boot/gru/grub.cfg' yi hariç tutmak zorunda kalacağımı düşünüyorum. Bu iyi mi? Lütfen belirtilen dizinlerin rsync artımlı senkronizasyonu için komutları yerleştirin.
user3215


Klon sisteminin UUID'lerini nasıl güncelleyebilirim.
user3215

Fstab ve grub config içindeki orijinal bölümlerden UUID'leri klon sisteminin bölümlerinin UUID'leriyle değiştirmeniz gerekir. Bölüm kimlikleri: blkid ile listelenebilir.
João Pinto

UUID'lerin her iki sistemde de aynı olması gerektiğini söylüyorsunuz.
user3215

6

Öncelikle, IaaS bulut sağlayıcılarının çoğu bunu kolayca çözen güçlü anlık görüntü özellikleri sunar.

EC2'de, EBS tabanlı bir sistem çalıştırırsanız, periyodik olarak anlık görüntü alabilirsiniz. Kaynak örneğe korkunç bir şey olursa, yepyeni bir örnekte önceki anlık görüntüye geri dönebilirsiniz. Anlık görüntüyü arşivlemek istiyorsanız, ekli başka bir örneği önyükleyebilir ve üretim kutusunu olumsuz etkilemeden tar + s3 gibi bir şey kullanabilirsiniz.

Bu yaklaşımda şu anda belirgin olmayan bir takım sorunlar var.

  1. Kendinizi tek bir teknolojiye kilitliyorsunuz. Bunu Ubuntu 10.10 üzerinde çalıştırırsanız ve 11.04'e gitmek istiyorsanız, kaynak sistemi yükseltmeniz ve sonra tekrar fotoğraflamanız gerekir. Aynı şekilde, EC2'nin EBS anlık görüntülerini kullanıyorsanız, raf alanı bulutuna giderseniz yeni bir çözüme ihtiyacınız vardır.
  2. Rsync kullanıyorsanız değişiklik geçmişiniz yok. Sistem 1'de bir şeyi değiştirirseniz, bir şey kırılırsa, rsync yaptığınızda da yedekleme sisteminizi bozarsınız.
  3. Rsync, üretim sisteminiz üzerinde son derece yüksek bir etkiye sahip olabilir.

Gerçekten istediğiniz bir yapılandırma yönetim sistemi ve yüksek veri kullanılabilirliğidir.

Kukla (ana!), Şef veya cfengine gibi bir yapılandırma yönetim sistemi seçmenizi tavsiye ederim. Yapılandırma yönetim sistemindeki tüm yapılandırmanızı yapmaya başlayın, ardından genel bir sistemi önyükleyebilir ve yapılandırma yönetimini ona uygulayabilirsiniz. 'Etckeeper' ekleyin ve geçmişiniz var.

Verilerin yüksek kullanılabilirliği için, rsync çalışmalı ve yalnızca istediğiniz verileri kopyalayabileceğinizden çok daha basit olmalıdır. Ayrıca bir "ağ RAID1" ne kadar şey var drbd var. Bunlar, bir kurtarma ana bilgisayarına senkronize etmek yerine (birileri kurtarma kutusuna yeniden gönderilen tüm verileri silerse, hepsini silerse, geçmiş anlık görüntüleri (blok cihaz anlık görüntüleri veya tar gibi bir şey aracılığıyla) içermesi gereken veri yedeklerinin yerini almaz. Orada da?)


2

İletilere büyük olasılıkla, yeni sunucu saati eskisinden daha kısa bir süre geride kalmıştır.

Paket yöneticisi yapılandırmasını ve veritabanını klonluyorsanız (ve siz), klon / bin, / sbin ve / lib klonlamalısınız yoksa hedef sistem tutarsız bir durumda olacaktır. Başka bir yaklaşım /etc/dpkg.info / etc / apt / var / lib / apt ve / var / lib / dpkg'yi hariç tutmak ve hedef paketteki tüm paketleri yeniden yüklemek olacaktır.

/ Var / dpkg ve / var / apt dosyalarındaki dosyalar, sisteminize nelerin yüklendiği hakkında bilgi içerir. Bunları hariç tutmazsanız, paket yöneticisi üst sistemdeki tüm programların ve bağımlılıkların hedefe yüklendiğine inanır. Ama / bin, / sbin vb. Bir sonraki kurulumda veya güncellemede bir şeyin kırılması muhtemeldir.

Daha sonra rsync ile senkronize tutmak için her zaman şifreleri değil, sertifikalı tabanlı kimlik doğrulamasını kullandım. Kurulumu oldukça kolay, sadece man sayfasını ilk kez okuduğumu hatırlıyorum. İşte hızlı bir rehber , daha fazla bilgi istiyorsanız, bunun yeni bir soruyu hak ettiğine inanıyorum.


No. / var hariç tutulmaz. Yukarıdaki komutta "--exclude /etc/resolv.conf" komutundan sonra her şey /etc/..../var / mnt dizininden eklenir. Aslında resolv.conf ve / etc arasında iki boşluk belirledim. İşte göstermiyor.
user3215

Üzgünüm bağlantı parçasını unuttum
user3215 10:10

Tamam, bu yüzden bin, sbin ve lib bile eklemeliyim, burada sorun yok. Oh .. Bunları hariç tutmalı ve tüm paketleri kurmalıyım.
user3215

/etc/dpkg.info / etc / apt / var / lib / apt ve / var / lib / dpkg'yı hariç tutmak gerçekten gerekli mi?
user3215

Yanıt güncellendi.
Javier Rivera
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.