Membuat mirroring Webserver otomatis di Ubuntu


Sebagai system administrator kita diharapkan dapat menjaga availabilitas dari server-server yang ada. Untuk beberapa server yang berfungsi sebagai cluster, aplikasi-aplikasi harus direplikasi ke beberapa server.Terkadang kita harus updating aplikasi untuk penambahan fitur. Dan untuk itu kita kadang harus copikan update tersebut kesetiap webserver yang ada secara manual. Untuk beberapa server mungkin tak jadi masalah, untuk jumlah server yang mencapai puluhan dan berada tidak satu lokasi tentu hal ini menjadi masalah. Diperlukan satu teknik untuk replikasi/mirroring secara otomatis untuk aplikasi yang terupdate.Salah satu caranya adalah dengan menggunakan rsync di ubuntu linux.
Istilah yang dipakai:

  1. Server yang akan dibuat rsync server adalah dengan ip =192.168.0.158 dengan FQDN=pclama-desktop  (kalau tidak tahu FQDN nya bisa mengetikkan hostname pad terminal)
  2. Mirror dengan ip=192.168.0.153 dengan FQDN =ubuntulaptop
  3. Tulisan ini dibuat untuk mirroring webserver

Tahapan:
Instalasi pada server dan mirror package rsync
caranya:
sudo apt-get install rsync

Pada Server:
buat user dengan nama someuser (isikan juga password yang dikendaki):
sudo useradd -d /home/someuser -m -s /bin/bash someuser
sudo passwd someuser

Untuk mengetest apakah sudah terjadi mirroring :
Pada mirror ketikkan
sudo rsync -avz -e ssh someuser@192.168.0.158:/var/www/ /var/www/

akan muncul tulisan semacam ini:
The authenticity of host ‘pclama-desktop (192.168.0.158)’ can’t be established.
RSA key fingerprint is 32:e5:79:8e:5f:5a:25:a9:f1:0d:ef:be:5b:a6:a6:23.
Are you sure you want to continue connecting (yes/no)?

Ketikkan yes

Kemudian ketikkan pada mirror dibawah ini untuk mengecek apakah content nya sudah terupdate oleh server:
ls -la /var/www

Rsync bisa berfungsi melalaui ssh, untuk itu kita perlu buat psangan kunci private/public.

Pada Mirror ketikkan perintah dibawah ini:
sudo mkdir /root/rsync
sudo ssh-keygen -t dsa -b 1024 -f /root/rsync/mirror-rsync-key

Akan muncul seperti ini:
Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase): [press enter here]
Enter same passphrase again: [press enter here]
Your identification has been saved in /root/rsync/mirror-rsync-key.
Your public key has been saved in /root/rsync/mirror-rsync-key.pub.
The key fingerprint is:
8f:09:77:f0:fb:dc:22:25:fc:17:75:1d:41:80:da:58 root@ubuntulaptop

PERHATIAN !!! :JANGAN mengisikan passphrase dengan apapun karena kalau diisi sistem akan menjadi tidak otomatis, jadi tinggalkan saja dengan
cara tekan Enter

Kemudian copy public key ke pclama-desktop:
sudo scp /root/rsync/mirror-rsync-key.pub someuser@192.168.0.158:/home/someuser/

Pada Server
Loginlah sebagai someuser
Ketikkan perintah dibawah ini secara bertahap:
mkdir ~/.ssh
chmod 700 ~/.ssh
mv ~/mirror-rsync-key.pub ~/.ssh/
cd ~/.ssh
touch authorized_keys
chmod 600 authorized_keys
cat mirror-rsync-key.pub >> authorized_keys

Masih pada server dengan login sebagai someuser, lihat isi authorized_keys dengan cara:
vi /home/someuser/.ssh/authorized_keys

Akan terlihat seperti ini:
ssh-dss AAAAB3NzaC1kc3MAAA[…}

Tambahkan script dibawah ini sebelum ssh-dss …
command=”/home/someuser/rsync/checkrsync”,from=”ubuntulaptop”,no-port-forwarding,no-X11-forwarding,no-pty

Sehingga akan seperti ini kita lihat file authorized_keys :
command=”/home/someuser/rsync/checkrsync”,from=”ubuntulaptop”,no-port-forwarding,no-X11-forwarding,no-pty ssh-dss AAAAB3NzaC1kc3MAAA[…]

PERHATIAN: agar menggunakan FQDN pada from diatas

Masih pada server dengan login someuser:
Ketikkan perintah dibawah ini secara bertahap:
mkdir ~/rsync
vi ~/rsync/checkrsync

Isikan file dibawah ini :
#!/bin/sh

case “$SSH_ORIGINAL_COMMAND” in
*&*)
echo “Rejected”
;;
*(*)
echo “Rejected”
;;
*{*)
echo “Rejected”
;;
*;*)
echo “Rejected”
;;
*<*)
echo “Rejected”
;;
*`*)
echo “Rejected”
;;
rsync –server*)
$SSH_ORIGINAL_COMMAND
;;
*)
echo “Rejected”
;;
esac

Rubah mod nya menjadi:
chmod 700 ~/rsync/checkrsync

Lakukan pada mirror untuk mengetes
sudo rsync -avz –delete –exclude=**/stats –exclude=**/error –exclude=**/files/pictures -e “ssh -i /root/rsync/mirror-rsync-key” someuser@192.168.0.158:/var/www/ /var/www/

Jika berhasil akan tampak hasil seperti dibwah ini:
receiving file list … done

sent 71 bytes  received 643 bytes  476.00 bytes/sec
total size is 64657  speedup is 90.56

INGAT : dengan melakukan sertting publik key, rsync tidak menanyakan password (enak kan :) )

Untuk membuat mirroring secara otomatiskita gunakan fungsi crontab.Misal kita ingin agar terjadi replikasi dari server ke mirror
setiap 1 menit sekali, caranya adalah:

Pada mirror:
sudo crontab -e
Setikkan perintah ini:
*/1 * * * * /usr/bin/rsync -azq –delete –exclude=**/stats –exclude=**/error –exclude=**/files/pictures -e “ssh -i /root/rsync/mirror-rsync-key” someuser@192.168.0.158:/var/www/ /var/www/

Lakukan perubahan pada server di /var/www/ dan lihat update nya di mirror 1 menit kemudian di /var/www/

Selesai

Refferensi :http://www.howtoforge.com/mirroring_with_rsync

Tinggalkan Balasan

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s