Müşterilerimiz üzerinde yaptığımız araştırmalara göre en çok kullanılan sanallaştırma uygulamasının HyperVM olduğunu gördük. Bu konuda yine aldığımız destek biletlerine bakarak en sık sorulanın bir sanal sunucunun diğer sanal sunucu ana makinesine nasıl otomatik aktarılacağıydı. Buna göre bizde konuyu açıklayan ufak bir dokuman hazırlamak istedik.
HyperVM bir sunucuyu diğerine bir çok yolla taşımanız mümkün ancak bunlardan en basit olanı openvz’nin vzmigrate komutu.. Master sunucu Slave sunucu olaylarını birbirine karıştırmadan basitçe bir sanal makineyi farklı bir sanal makine ana sunucusuna vzmigrate komutu ile taşımak mümkün.
Öncelikle bu işlemi yapmadan önce vzmigrate komutunun çalışması için eski sunucunun yeni sunucuya ssh üzerinden şifresiz erişebilmesi gerekmekte bunu mümkün kılan komutlar giriş seviyesi kullanıcıların kafasını karıştırabilir ssh-keygen uygulaması, rsa idleri, authorized_key dosyası buna benzer bir çok ayarı otomatik yapabileceğiniz Kir Kolyshkin tarafından hazırlanmış ufak bir bashscript ile tüm ayarları yaparak sunucuyu vzmigrate komutunu kullanmaya hazır hale getirebileceksiniz. Alt kısımdaki işlemleri taşınacak sanal sunucunun eski ana makinesi üzerinden yapacaksınız.
nano -w /usr/local/bin/ssh-keyput
Yukarıdaki komut ile ilgili dizine ssh-keyput adında bir dosya oluşturuyoruz ve içeriğine alt kısımdaki kodları direk kopyala-yapıştır yöntemi ile kopyalıyoruz.
#!/bin/bash # # ssh-keyput -- set up passwordless openssh login. # # Copyright (C) 2001, 2002, 2006 by SWsoft. # Author: Kir Kolyshkin # # This script is used to put your public ssh keys to another host's # authorized_keys[2], so you will be able to ssh login without entering # a password. Key pairs are generated if needed, and connectivity # is checked after putting the keys. PROGNAME=`basename $0` function usage() { echo "Usage: $PROGNAME [user@]IP [[user@]IP ...]" 1>&2 exit 0 } # Check for correct number of parameters test $# -gt 0 || usage; SSH_KEYGEN=`which ssh-keygen` if test $? -ne 0; then # Error message is printed by 'which' exit 1 fi SSH_DIR=~/.ssh if ! test -d $SSH_DIR; then mkdir $SSH_DIR fi chmod 700 $SSH_DIR if [ ! -f $SSH_DIR/identity ] || [ ! -f $SSH_DIR/identity.pub ]; then echo "Generating ssh1 RSA keys - please wait..." rm -f $SSH_DIR/identity $SSH_DIR/identity.pub $SSH_KEYGEN -t rsa1 -f $SSH_DIR/identity -P '' if [ $? -ne 0 ]; then echo "Command \"$SSH_KEYGEN -t rsa1 -f $SSH_DIR/identity" \ "-P ''\" failed" 1>&2 exit 1 fi else echo "ssh1 RSA key is present" fi if [ ! -f $SSH_DIR/id_dsa ] || [ ! -f $SSH_DIR/id_dsa.pub ]; then echo "Generating ssh2 DSA keys - please wait..." rm -f $SSH_DIR/id_dsa $SSH_DIR/id_dsa.pub $SSH_KEYGEN -t dsa -f $SSH_DIR/id_dsa -P '' if test $? -ne 0; then echo "Command \"$SSH_KEYGEN -t dsa -f $SSH_DIR/id_dsa" \ "-P ''\" failed" 1>&2 exit 1 fi else echo "ssh2 DSA key is present" fi SSH1_RSA_KEY=`cat $SSH_DIR/identity.pub` SSH2_DSA_KEY=`cat $SSH_DIR/id_dsa.pub` for IP in $*; do echo "You will now be asked for password for $IP" # set -x ssh -oStrictHostKeyChecking=no $IP "mkdir -p ~/.ssh; chmod 700 ~/.ssh; \ echo \"$SSH1_RSA_KEY\" >> ~/.ssh/authorized_keys; \ echo \"$SSH2_DSA_KEY\" >> ~/.ssh/authorized_keys2; \ chmod 600 ~/.ssh/authorized_keys ~/.ssh/authorized_keys2" # set +x if test $? -eq 0; then echo "Keys were put successfully" else echo "Error putting keys to $IP" 1>&2 fi done for IP in $*; do for ver in 1 2; do echo -n "Checking $IP connectivity by ssh$ver... " ssh -q -oProtocol=${ver} -oBatchMode=yes \ -oStrictHostKeyChecking=no $IP /bin/true if [ $? -eq 0 ]; then echo "OK" else echo "failed" 1>&2 fi done done
Komutları kopyaladıktan sonra dosyayı kaydedip çıkıyor ve dosyayı çalıştırılabilir hale getirmek için alt kısımdaki komutu giriyoruz.
chmod a+x /usr/local/bin/ssh-keyput
İşlemleri tamamladığınızda ssh-keyput isimli bash programınız çalışır hale gelecektir. Bu aşamadan sonra 2 sunucuyu birbirine şifresiz bağlamak için alt kısımdaki komutu giriyoruz. (Taşınacak sunucu için örnek IP adresi 10.0.0.3)
ssh-keyput 10.0.0.3
Yukarıdaki komut uygulandığında çıktılar alt kısımdaki örnekte yer alan şekilde olmalı.. Size komutu uyguladığınızda taşınacak sanal sunucu ana makinesinin root şifresini soracak burada yeni taşınacak sunucunun root şifresini yazarak işlemi tamamlıyorsunuz.
root@eskisunucu [~]# ssh-keyput 10.0.0.3
Generating ssh1 RSA keys - please wait...
Generating public/private rsa1 key pair.
Your identification has been saved in /root/.ssh/identity.
Your public key has been saved in /root/.ssh/identity.pub.
The key fingerprint is:
7f:78:16:50:64:de:4f:1a:fe:03:9c:fa:a8:30:d6:ce root@eskisunucu.example.com
Generating ssh2 DSA keys - please wait...
Generating public/private dsa key pair.
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
f0:da:8e:9e:1a:d4:e0:be:54:26:48:dd:6d:fc:c5:5a root@eskisunucu.example.com
You will now be asked for password for 10.0.0.3
Warning: Permanently added '10.0.0.3' (RSA) to the list of known hosts.
root@10.0.0.3's password:
stdin: is not a tty
Keys were put successfully
Checking 10.0.0.3 connectivity by ssh1... failed
Checking 10.0.0.3 connectivity by ssh2... stdin: is not a tty
OK
root@eskisunucu [~]#
Bundan sonra bir sanal sunucuyu diğer sanal sunucu ana makinesine taşımakta işlem.. Yukarıda anlatılanlar uzun olunca bu konunun da uzun olduğunu düşünmeyin tüm işi tek bir komut ve bunun parametreleri yapıyor.. Yukarda bahsettiğim vzmigrate komutu. Yapmanız gereken taşınacak sanal sunucunun ana makinesine ssh bağlantısı yaparak alt kısımdan VEID sini öğrenmek..
vzlist -a
Yukarıdaki komut açık veya kapalı sunucuları ekranınıza listeler ve hangi sunucuyu taşıyacagınızı bu şekilde öğrenirsiniz. Örnek çıktı alt kısımda
VEID NPROC STATUS IP_ADDR HOSTNAME
102 9 running 10.0.0.5 vm1.example.com
103 11 running 10.0.0.3 vm2.example.com
Yukarda listelenen sanal sunuculardan 10.0.0.7 IP adresine sahip olanı taşımak isterseniz VEID kısmındaki 103 numarası ile vzmigrate aracı ile bunu nasıl yapacağımızın komutunu alt kısımda veriyorum.
vzmigrate --online 10.0.0.3 103
Yukarıdaki komutu uyguladıktan sonra bir çay veya kahve molası verip tekrar geri döndüğünüzde VEID 103 numaralı sanal sunucu yeni sanal sunucu ana makinesine taşınmış olacaktır. Üstelik bu işlem sırasında taşınan sanal sunucu herhangi bir şekilde kapalı kalmayacaktır. Online taşımada bazen versiyon farkları veya quota sorunu nedeni ile sorun oluşabilir bu gibi durumlarda –online parametresini kaldırarak sunucuyu kapalı bir şekilde taşıyabilirsiniz. Kapalı taşıma normal Online taşımadan çok daha hızlı tamamlanmaktadır.
Tüm bunların dışında aktarılan sanal sunucunun HyperVM panelde görünmesi için yapmanız gereken ufak bir işlem daha var.. Server sekmesini açıp en alt kısımda bulunan Import Raw VPS butonuna basmak ve açılan diğer sayfada tekrar Import tuşuna basarak taşınmış sanal sunucuyu VEID adı ile HyperVM’e aktarmak. Bu bu yöntemle taşınan sunucuların HyperVM kullanıcı adları ve HyperVM ile ilgili ayarları sıfırlanmakta bunları taşıdıktan sonra baştan yaratmanız gerekiyor.
Tüm bu konularla ilgili sormak istediklerinizi dokümanın altından yorum bırakarak yazabilirsiniz.