jump to navigation

Web Server mirror / mirroring / duplikasi menggunakan Rsync March 30, 2010

Posted by yanadie in Linux.
Tags:
trackback

Tutorial ini menunjukkan cara melakukan miror terhadap server backup dimana keduanya menggunakan server Fedora 10 .

Tools yang digunakan adalah rsync dan akan dilakukan cron job untuk menjalankan perintah rsync tersebut dengan interval waktu tertentu . rsync hanya mengupdate file yang perlu diupdate saja . Sebagai tambahan dibutuhkan permission file untuk melakukan perubahan terhadap file yang akan dirubah. Rsync dijalankan sebagai root , dan menggunakan protokol ssh 22 untuk menjalankkannya .

Dengan menggunakan ssh dan login root maka diperlukan public keys bila kondisi dimana log in yang dilakukan tidak harus melakukan entry untuk password . Public keys tersebut disimpan di server backup dan diserver remote .

Seharusnya bisa digunakan untuk Fedora 11 atau Centos 5 , Centos 5.2 .

Konfigurasi:
Server utama (Fedora 10): server1.example.com (server1) – IP address: 192.168.0.100
Server Mirror/backup (Fedora 10): server2.example.com (server2) – IP address: 192.168.0.101
Web Site yang akan dimirrorkan terletak di   /var/www/html on server1.example.com.

rsync hanya melakukan mirroring files dan direktori saja ;  kalau ingin melakukan duplikasi database / mirror database mysql dapat dibaca di tutorial berikut:

Cara set up mysql database repliation / replika di fedora 10 / Centos 5.2 .

1. Install rsyncinstall rsync di server1.example.com dan server2.example.com:

server1/server2:

sebagai root, lakukan :

yum install rsync

2 Create sebuah Unprivileged User di server1.example.com

Buat sebuah user disebut saja someuser di server1.example.com yang akan digunakan oleh rsync di server2.example.com untuk melakukan mirror direktori di /var/www/html ( someuser harus memiliki permission untuk membaca file/direktori di /var/www/html di server1.example.com

server1:

(sebagai root!)

useradd -d /home/someuser -m -s /bin/bash someuser

Akan dicreate user someuser dengan home directory /home/someuser dan  login shell /bin/bash (sangat penting bahwa user someuser memiliki login shell yang valid .

Berikan user someuser sebuah password:

passwd someuser

3. Test rsync

Berikutnya kita akan melakukan  test rsync di server2.example.com. Sebagai root lakukan

Di server2:

rsync -avz -e ssh someuser@server1.example.com:/var/www/html/ /var/www/html/

Akan tampil seperti berikut :

[root@server2 ~]# rsync -avz -e ssh someuser@server1.example.com:/var/www/html/ /var/www/html/
The authenticity of host ’server1.example.com (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

Masukkan someuser password dan akan dapat dilihat di server1.example.com /var/www/html direktori telah dimirrorkan ke /var/www/html di server2.example.com

Dapat dilakukan pengecekan di kedua server tersebut :

server1/server2:

ketikkan :

ls -la /var/www/html

Akan terlihat bahwa seluruh file dan direktori yang sudah dimirorkan di server2.example.com, dan file serta diretori memiliki  permissions/ownerships yang sama seperti di server1.example.com.
4 Create Keys di server2.example.com

Lakukan create private/public key di server2.example.com:

server2:

(Lakukan sebagai root!)

mkdir /root/rsync
ssh-keygen -t dsa -b 1024 -f /root/rsync/mirror-rsync-key

Akan tampil sebagai berikut :

[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): <– ENTER
Enter same passphrase again: <– ENTER
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 ~]#

Diperlukan tekan enter . atau proses mirror tidak akan berjalan baik .

Kemudian copy public k eke server1.example.com

server2:

(masih, sebagai root.) :

scp /root/rsync/mirror-rsync-key.pub someuser@server1.example.com:/home/someuser/

Public key mirror-rsync-key.pub  seharusnya akan berada di /home/someuser on server1.example.com.
5. Konfigurasi di server1.example.com

login dengan SSH di server1.example.com sebagai someuser (non root!)…

server1:

su someuser

… and do this:

server1:

(Lakukan perintah berikut sebagai someuser!)

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

Dengan melakukan hal tersebut, sudah dilakukan append terhadap content dari mirror-rsync-key.pub ke file /home/someuser/.ssh/authorized-keys.   , home/someuser/.ssh/authorized-keys. Akan kelihatan seperti berikut :

server1:

(masih sebagai someuser!)

vi /home/someuser/.ssh/authorized_keys
ssh-dss AAAAB3NzaC1[…]qqOyXtbUx7HOMEw== root@server2.example.com

Berikut akan diperbolehkan koneksi hanya dari server2.example.com dan user yang terkoneksi hanya bisa diperbolehkan untuk menggunakan rsync saja.

Tambahkan baris berikut

command=”/home/someuser/rsync/checkrsync”,from=”server2.example.com”,no-port-forwarding,no-X11-forwarding,no-pty

tepat di awal baris  /home/someuser/.ssh/authorized_keys:

server1:

(masih sebagai someuser!)

vi /home/someuser/.ssh/authorized_keys
command=”/home/someuser/rsync/checkrsync”,from=”server2.example.com”,no-port-forwarding,no-X11-forwarding,no-pty ssh-dss AAAAB3NzaC1[…]qqOyXtbUx7HOMEw== root@server2.example.com

Sanat penting untuk menggunakan FQDN seperti server2.example.com selain menggunakan ip address yang ada , kalau tidak mirroring otomatis tidak akan berjalan .

Buat script /home/someuser/rsync/checkrsync yang akan mereject semua command kecuali rsync saja .

server1:

(lakukan sebagai someuser!)

mkdir ~/rsync
vi ~/rsync/checkrsync

hasilnya :
#!/bin/sh

case “$SSH_ORIGINAL_COMMAND” in
*&*)
echo “Rejected”
;;
*(*)
echo “Rejected”
;;
*{*)
echo “Rejected”
;;
*;*)
echo “Rejected”

kemudian jalankan :

chmod 700 ~/rsync/checkrsync

6. Test rsync di server2.example.com

Lakukan test di server2.example.com  kalau bisa digunakan mirror ke server1.example.com tanpa harus diminta password kembali untuk password someuser  . Lakukan hal ini :

server2:

(Sebagai root!)

rsync -avz –delete –exclude=**/stats –exclude=**/error –exclude=**/files/pictures -e “ssh -i /root/rsync/mirror-rsync-key” someuser@server1.example.com:/var/www/html/ /var/www/html/

(Opsi –delete berarti file yang sudah di delete di server1.example.com akan di deleted  juga di  server2.example.com.  untuk informasi manual lebih lanjut lihat di manual rsync.

man rsync

Akan tampak tampilan mirroring sudah berjalan

[root@server2 ~]# rsync -avz –delete –exclude=**/stats –exclude=**/error –exclude=**/files/pictures -e “ssh -i /root/rsync/mirror-rsync-key” someuser@server1.example.com:/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 ~]#

.. tanpa harus diminta password kembali . sudah bisa mirror !

7. Membuat cron job ,

Kita akan melakukan mirroring secara otomatis, dan dibutuhkan sebuah cron job untuk itu di server2.example.com .

Jalankan , crontab –e sebagai root :

Server2:

(Sebagai root )

crontab -e

dan buat sebuah cron job seperti berikut:
*/5 * * * * /usr/bin/rsync -azq –delete –exclude=**/stats –exclude=**/error –exclude=**/files/pictures -e “ssh -i /root/rsync/mirror-rsync-key” someuser@server1.example.com:/var/www/html/ /var/www/html/

Perintah itu akan menjalankan rsync setiap 5 minutes; sesuaikan sesuai kebutuhan (lihat man 5 crontab).

Bisa digunakan full path untuk menjalankan rsync (/usr/bin/rsync) untuk memastikan dimana cron job tahu persis dimana rsync berada.

Untuk mengetahui dimana letak rsync , lakukan perintah berikut :

server2:

(Sebagai root!)

which rsync

sumber : http://nrspot.com/2009/07/06/web-server-mirror-mirroring-duplikasi-menggunakan-rsync-di-linux-fedora-10/

Comments»

No comments yet — be the first.

Leave a comment