Howto make Mirror Website With Rsync

By | February 9, 2009

Di Tutorial ini saya akan menyampaikan cara membuat mirror situs Web utama ke server backup keduanya menggunakan FreeBSD dimana dengan tujuan apabila website utama down web mirror ini bisa langsung mengambil alih. Tools yang digunakan adalah rsync, dijalankan oleh cron agar bisa update mirror website setiap periode tertentu.

Rsync hanya mengcopy file yang telah berubah, sehingga tidak perlu semua file di website utama, dan juga dapat menghapus file di server mirror apabila di website utama di hapus.
Rsync dalam proses mengkopi file melalui tunnel SSH agar lebih aman, sehingga port yang digunakan melalui port 22 (SSH).

Misal Website utama adalah server1.uns.ac.id dan website mirror adalah server2.uns.ac.id. kita hanya perlu menginstall Rsync di ke dua web server :

# cd /usr/ports/net/rsync/
# make install clean


Misal folder website di server1.uns.ac.id adalah : /var/www/html kemudian kita akan tempatkan mirror di folder yang sama /var/www/html di server2.uns.ac.id
perhatikan user apache yang digunakan, misal di server1.uns.ac.id adalah : www

Dari server2 kita coba lakukan rsync ke server1 :

[root@server2 ~]# rsync -avz -e ssh www@server1.uns.ac.id:/var/www/html/ /var/www/html/
The authenticity of host ‘server1.uns.ac.id (192.168.0.100)’ can’t be established.
RSA key fingerprint is 96:1e:9d:39:25:40:9d:89:53:f6:71:8f:fd:79:89:18.
Are you sure you want to continue connecting (yes/no)?
<– yes
Warning: Permanently added ‘server1.uns.ac.id’ (DSA) to the list of known hosts.
Password:
<– input password

Setelah memasukkan password proses copy file akan berjalan sampai semua file di folder /var/www/html di copy, maka di server2.uns.ac.id akan terbentuk folder /var/www/html yang berisi file identik dengan folder /var/www/html di server1.uns.ac.id

Langkah berikutnya kita akan membuat key di server2.uns.ac.id agar proses rsync bisa berjalan otomatis tidak perlu memasukkan password lagi.

#mkdir /root/rsync

[root@server2 ~]# ssh-keygen -t dsa -b 1024 -f /root/rsync/mirror-rsync-key
Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase)
:
<– (tekan tombol ENTER jangan di isi)
Enter same passphrase again: <– (tekan tombol ENTER jangan di isi)
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:
68:1e:9c:12:f1:f5:7f:53:d5:1d:d0:f2:dd:c2:88:f3 root@server2.example.com
The key’s randomart image is:
+–[ DSA 1024]—-+
|    .   .    .o.=|
|     o . .   . .+|
|    . .   .. oo +|
|     o o  o.. ooo|
|    . * S  o. o. |
|     + .    E. . |
|      .          |
|                 |
|                 |
+—————–+
[root@server2 ~]#

Kemudian copy public-key ke server1.uns.ac.id :

#scp /root/rsync/mirror-rsync-key.pub admin@server1.uns.ac.id:/home/admin/

Langkah selanjutnya login ke server2.uns.ac.id dana lakukan perintah berikut :

#su www
#mkdir ~www/.ssh
#chmod 700 ~www/.ssh
#mv ~admin/mirror-rsync-key.pub ~www/.ssh/
#cd ~www/.ssh
#touch authorized_keys
#chmod 600 authorized_keys
#cat mirror-rsync-key.pub >> authorized_keys

langkah selanjutnya tinggal mencoba kembali melakukan perintah rsync dari server2.uns.ac.id :

[root@server2 ~]# rsync -avz –delete -e “ssh -i /root/rsync/mirror-rsync-key” www@server1.uns.ac.id:/var/www/html/ /var/www/html/
receiving incremental file list

sent 62 bytes received 48 bytes 73.33 bytes/sec
total size is 20 speedup is 0.18
[root@server2 ~]#

Sudah tidak muncul prompt input password, selanjutnya tinggal menambahkan di crontab agar bisa berjalan secara kontinyu

oke deh selesai 🙂