Kita mungkin telah mengenal dengan istilah synchronize yang bekerja dengan menyinkronkan sebuah file dari satu tempat ke tempat lain. Umumnya proses synchronization berada pada background data yang ditangani langsung oleh server. Kali ini saya akan mencoba membuat syncronization pada 2 buah server dengan menggunakan Unison.
Unison adalah merupakan tool file-synchronization yang mirip dengan rsync, tetapi yang membedakannya yaitu Unison akan menyinkronkan segala perubahan yang terjadi langsung pada kedua object file (istilah yang dikenal replikasi), misalnya file yang diubah pada server1 akan direplikasi pada server2 dan begitu sebaliknya.
Pada proses yang saya lakukan ini akan saya gunakan 2 Debian server:
- server1 = 10.20.30.10
- server2 = 10.20.30.11
Saya akan mencoba melakukan sinkronisasi pada direktori /var/www.
Install Unison
Proses installasi dilakukan pada kedua server dengan perintah sebagai berikut:
# apt-get install unison
Membuat Private/Public Key
Private/public key kita buat pada server1 dengan perintah berikut:
# ssh-keygen -t dsa
**saat proses muncul, tekan saja ENTER hingga selesai jangan isikan apapun.
Proses akan muncul dan meminta passphrase, jangan diisi karena proses replikasi tidak akan berjalan jika tidak ada interaksi terhadap user/admin untuk mengetikkan passphrase tersebut.
Selanjutnya copy private/public key yang sudah kita buat ke server2:
# ssh-copy-id -i $HOME/.ssh/id_dsa.pub root@10.20.30.11 <== lakukan dari server1
**saat proses muncul, pertama ketik "yes" dan kemudian isikan password server2
Setelah berhasil kita dapat memeriksa apakah key file tersebut sudah berhasil masuk pada server2, lakukan dengan perintah berikut ini di server2:
# cat $HOME/.ssh/authorized_keys
Menjalankan Unison
Lakukan terlebih dahulu pada server1, seperti yang sebelumnya saya katakan akan menyinkronkan direktori /var/www pada kedua server.
# unison /var/www ssh://10.20.30.11//var/www <== dari server1
output yang muncul yaitu:
Press return to continue.[] <== tekan ENTER
Waiting for changes from serverReconciling changes
local debianhos...dir ----> / [f] <== tekan ENTER
Proceed with propagating updates? [] y <== tekan huruf "y"
Propagating updates
### tunggu proses hingga selesai akan muncul seperti dibawah ini ###
[END] Copying UNISON 2.40.65 finished propagating changes at 08:57:57.54 on 02 Oct 2015Saving synchronizer
stateSynchronization complete at 08:57:57 (1 item transferred, 0 skipped, 0 failed)
Waiting for changes from serverReconciling changes
local debianhos...dir ----> / [f] <== tekan ENTER
Proceed with propagating updates? [] y <== tekan huruf "y"
Propagating updates
### tunggu proses hingga selesai akan muncul seperti dibawah ini ###
[END] Copying UNISON 2.40.65 finished propagating changes at 08:57:57.54 on 02 Oct 2015Saving synchronizer
stateSynchronization complete at 08:57:57 (1 item transferred, 0 skipped, 0 failed)
Setelah proses selesai, dapat langsung memeriksa direktori /var/www pada kedua server, pastinya akan terdapat isi yang sama dengan size file yang sama pula.
Proses diatas kita lakukan dengan interaksi langsung oleh user/admin, jika kita ingin melakukan proses tersebut tanpa interaksi langsung dapat dibuat konfigurasi terhadap unison, seperti contoh berikut:
# Roots of the synchronization
# nano /root/.unison/default.prf
root = /var/www
root = ssh://192.168.1.102//var/www
# Paths to synchronize
#path = current
#path = common
#path = .netscape/bookmarks.html
# Some regexps specifying names and paths to ignore
#ignore = Path stats ## ignores /var/www/stats
#ignore = Path stats/* ## ignores /var/www/stats/*
#ignore = Path */stats ## ignores /var/www/somedir/stats, but not /var/www/a/b/c/stats
#ignore = Name *stats ## ignores all files/directories that end with "stats"
#ignore = Name stats* ## ignores all files/directories that begin with "stats"
#ignore = Name *.tmp ## ignores all files with the extension .tmp
auto=true
batch=true
confirmbigdel=true
fastcheck=true
group=true
owner=true
prefer=newer
silent=true
times=true
# nano /root/.unison/default.prf
root = /var/www
root = ssh://192.168.1.102//var/www
# Paths to synchronize
#path = current
#path = common
#path = .netscape/bookmarks.html
# Some regexps specifying names and paths to ignore
#ignore = Path stats ## ignores /var/www/stats
#ignore = Path stats/* ## ignores /var/www/stats/*
#ignore = Path */stats ## ignores /var/www/somedir/stats, but not /var/www/a/b/c/stats
#ignore = Name *stats ## ignores all files/directories that end with "stats"
#ignore = Name stats* ## ignores all files/directories that begin with "stats"
#ignore = Name *.tmp ## ignores all files with the extension .tmp
auto=true
batch=true
confirmbigdel=true
fastcheck=true
group=true
owner=true
prefer=newer
silent=true
times=true
Contoh diatas terdapat bagian tanda "#" dengan perintah path, itu bukanlah untuk membuat komentar tapi memang seperti itulah isi konfigurasi untuk path pada unison. Path dibuat untuk menspesifikasikan direktori root (contoh diatas: root=/var/www dengan path=current akan menjadi /var/www/current) dengan begitu hanya direktori yang sudah ditentukan yang akan disinkronisasi, jika tidak menspesifikasikan path maka seluruh direktori root akan dianggap sebagai file yang akan disinkron. Untuk lebih lanjut mengenai konfigurasi ini dapat dilihat langsung melalui man unison.
Jika telah membuat konfigurasi diatas, maka perintah untuk menjalankan unison cukup seperti berikut ini:
# unison
Tidak ada argumen yang mengikuti perintah tersebut karena semua telah berada dalam konfigurasi.
Membuat Cron Job Untuk Unison
Cron job dibuat agar proses sinkronisasi berjalan otomati dibelakang layar, dan untuk melakukan ini tentunya harus menentukan dulu dimana server utama, dalam kasus ini server1 adalah server utama yang akan menyinkron ke server2, sehingga cron job dilakukan pada server1. Berikut cara untuk membuat cron job:
# crontab -e
*/1 * * * * /usr/bin/unison &> /dev/null
*/1 * * * * /usr/bin/unison &> /dev/null
Cron job diatas akan berjalan untuk setiap 1 menit, dan /usr/bin/unison merupakan path aplikasi unison pada komputer saya jadi kemungkinan berbeda dengan yang lain, untuk memeriksanya lakukan dengan perintah:
# which unison
Jika ingin lebih lanjut mengetahui cara membuat cron job, silakan baca cara menggunakan crontab di linux yang sudah pernah saya buat sebelumnya.Uji Coba Unison Cron Job
Saya akan melakukan uji coba sinkronisasi yang kedua setelah konfigurasi yang dilakukan dan pembuatan cron job untuk mengetahui apakah unison sudah bejalan dengan baik.
Pertama lakukan pada server1 untuk membuat sebuah file, semisal file sinkronisasi dengan isi file tulisan "sinkron berhasil":
# echo "sinkron berhasil" > /var/www/sinkronisasi.txt
Selanjutnya kita menunggu cron job bekerja selama satu menit sesuai waktu yang sudah kita tentukan sebelumnya. Dan setelah berjalan 1 menit periksa pada server2, jika berhasil maka akan tampak file sinkronisasi dengan isi file tulisan "sinkron berhasil".
Tampak dari gambar diatas, proses sinkronisasi yang dilakukan telah berhasil. Melakukan hal semacam ini memang perlu apalagi jika mengelola sebuah server kita harus menentukan cara dan langkah yang tepat untuk mengelolanya baik salah satunya dengan sinkronisasi seperti cara diatas yang memudahkan kita untuk menyinkronkan file antara server1 dengan server2 tanpat harus berinteraksi langsung dalam proses sinkronnya. Selamat mencoba dan semoga bermanfaat.
wah buat linux ya gan,pengunna windows nyimak aja deh.. nice post gan
ReplyDeletePengguna windows juga bisa kok gan, tapi ya harus install didalam aplikasi virtual machine :)
Deletemantep nyimak dulu aja deh kalo punya linux saya coba
ReplyDeleteSaya coba dulu ya sob
ReplyDeleteTutorialnya keren gan, Bisa dicoba Nih :D
ReplyDeleteNyimak gan :D
ReplyDeleteLangsung dicoba gan, sekalian belajar linux, pake virtualbox juga gak masalah kok :)
ReplyDeleteklo work on windows langsung ane bookmark deh :D pengen nyoba nih
ReplyDeleteWork gan tapi harus install virtual machine dulu seperti virtualbox ataupun vmware :)
DeleteAne nyoba deh buat di laptop ane kapan2 yang machintos gan
ReplyDeleteHaduh kalo mac sepertinya gak bisa deh, karena saya gak punya perangkatnya gan :D
Deletenyimak aja gan,
ReplyDeletekarena kurang ngerti yang gini2an
Semoga nantinya bisa mengerti dan berniat utk pelajarinya :D
DeleteNice share gan, tapi masih kurang paham sama tutor nya. Nanti ane coba deh
ReplyDeleteHmm memang sulit gan kalo gak punya dasar penggunaan Linux, coba deh belajar Linux :)
Deleteyg ini kok gagal terus ya gan
ReplyDeletessh-copy-id -i $HOME/.ssh/id_dsa.pub
ssh-copy-id -i $HOME/.ssh/id_dsa.pub root@10.20.30.11 (lakukan dari server1)
Deletelupa alamat server2 mungkin gan, seharusnya kayak diatas, setelah $HOME/.ssh/id_dsa.pub langsung arahkan ke root@10.20.30.11