Çalışan bir örneğe bir anahtar çifti uygulayamazsınız. Yeni anahtar çiftini yalnızca yeni bir örnek başlatmak için kullanabilirsiniz.
Kurtarma için, bir EBS önyükleme AMI'sı ise, durdurabilir, birimin anlık görüntüsünü alabilirsiniz. Buna dayanarak yeni bir birim oluşturun. Eski örneği başlatmak, yeni bir görüntü oluşturmak veya verileri kurtarmak için tekrar kullanabilirsiniz.
Geçici depolamadaki veriler kaybolur.
Bu soru ve cevabın popülaritesi nedeniyle, Rodney'in yorumuna gönderdiği bağlantıdaki bilgileri yakalamak istedim.
Kredi gider Eric Hammond için bu bilgiler .
EC2 Örneğinin Kök EBS Birimindeki Dosyaları Düzeltme
Bir EC2 örneğinde kök EBS birimindeki dosyaları, aşağıdakiler gibi feci bir durum olarak görseniz bile inceleyebilir ve düzenleyebilirsiniz:
- Ssh anahtarınızı kaybettiniz veya şifrenizi unuttunuz
- / Etc / sudoers dosyasını düzenlerken bir hata yaptınız ve düzeltmek için sudo ile artık root erişimi alamıyorsunuz
- Uzun süredir çalışan örneğiniz bir nedenle askıya alındı, iletişim kurulamıyor ve düzgün önyükleme yapamıyor
- Dosyaları örnekten kurtarmanız gerekir, ancak dosyaya erişemezsiniz
Masanızda oturan fiziksel bir bilgisayarda, sistemi bir CD veya USB çubuğuyla önyükleyebilir, sabit sürücüyü monte edebilir, dosyaları kontrol edip düzeltebilir, ardından bilgisayarı yeniden işe başlamak için yeniden başlatabilirsiniz.
Ancak uzak bir EC2 örneği, bu durumlardan birindeyken uzak ve erişilemez görünür. Neyse ki, AWS, EBS önyükleme örneklerini çalıştırmamız ve örnek deposu değil, böyle bir sistemi kurtarabilmemiz için güç ve esneklik sağlar.
EC2'deki yaklaşım biraz fiziksel çözüme benziyor, ancak hatalı "sabit sürücüyü" (kök EBS birimi) farklı bir örneğe taşıyacak ve monte edeceğiz, düzelteceğiz, sonra geri taşıyacağız.
Bazı durumlarda, yeni bir EC2 örneği başlatmak ve kötü olanı atmak daha kolay olabilir, ancak dosyalarınızı gerçekten düzeltmek istiyorsanız, birçokları için işe yarayan yaklaşım şöyledir:
Kurmak
Görüntülemek ve düzenlemek istediğiniz dosyalarla birlikte bozuk kök EBS birimini içeren orijinal örneği (A) ve birimi belirleyin.
instance_a=i-XXXXXXXX
volume=$(ec2-describe-instances $instance_a |
egrep '^BLOCKDEVICE./dev/sda1' | cut -f3)
Orijinal EBS birimindeki dosyaları düzeltmek için kullanacağınız ikinci EC2 örneğini (B) tanımlayın. Bu örnek, EBS biriminin kendisine eklenebilmesi için A örneğiyle aynı kullanılabilirlik bölgesinde çalışıyor olmalıdır. Halihazırda çalışan bir örneğiniz yoksa geçici bir tane başlatın.
instance_b=i-YYYYYYYY
Bozuk A örneğini durdurun (tamamen durmasını bekleyin), kök EBS birimini örnekten ayırın (ayrılmasını bekleyin), ardından birimi kullanılmayan bir aygıtta B örneğine ekleyin.
ec2-stop-instances $instance_a
ec2-detach-volume $volume
ec2-attach-volume --instance $instance_b --device /dev/sdj $volume
ssh dosyasını B örneğine getirin ve birimi, dosya sistemine erişebilmeniz için bağlayın.
ssh ...instance b...
sudo mkdir -p 000 /vol-a
sudo mount /dev/sdj /vol-a
Düzelt
Bu noktada, A örneğindeki tüm kök dosya sisteminiz B örneğindeki / vol-a altında görüntülenebilir ve düzenlenebilir. Örneğin, aşağıdakileri yapmak isteyebilirsiniz:
- /Vol-a/home/ubuntu/.ssh/authorized_keys içine doğru ssh anahtarlarını koyun
- / Vol-a / etc / sudoers öğesini düzenleyin ve düzeltin
- / Vol-a / var / log / syslog içindeki hata iletilerini arayın
- / Vol-a /… 'dan önemli dosyaları kopyala
Not: İki örnekteki uids aynı olmayabilir, bu nedenle root olmayan kullanıcılara ait dosyalar oluştururken, düzenlerken veya kopyalarken dikkatli olun. Örneğin, A örneğindeki mysql kullanıcınız, B örneğindeki postfix kullanıcınızla aynı UID'ye sahip olabilir; bu da, bir ada sahip dosyaları seçip birimi A'ya taşırsanız sorunlara neden olabilir.
Sarmak
İşiniz bittikten ve / vol-a altındaki dosyalardan memnun kaldıktan sonra, dosya sistemini çıkarın (yine de örnek B'de):
sudo umount /vol-a
sudo rmdir /vol-a
Şimdi, ec2-api-tools ile sisteminize geri dönün, EBS birimini orijinal A örneğindeki yerine geri taşımaya devam edin ve örneği tekrar başlatın:
ec2-detach-volume $volume
ec2-attach-volume --instance $instance_a --device /dev/sda1 $volume
ec2-start-instances $instance_a
Umarım, sorunu çözdünüz, A örneği gayet iyi gelir ve başlangıçta yapmak istediklerinizi başarabilirsiniz. Değilse, çalışana kadar bu adımları tekrarlamaya devam etmeniz gerekebilir.
Not: Durdurduğunuzda A örneğine atanmış bir Elastik IP adresiniz varsa, yeniden başlattıktan sonra yeniden ilişkilendirmeniz gerekir.
Hatırlamak! B örneğiniz yalnızca bu işlem için geçici olarak başlatıldıysa, şimdi sonlandırmayı unutmayın.
ssh-add
İhtiyacınız olanı yapmalısınız.