Kusprayitna Blogs

Hidup untuk berbagi ilmu :: IT Linux Windows Database Oracle PHP OpenSource

Mengatasi proses cron yang dieksekusi lebih dari satu kali

Posted by Prayitna Kuswidianta on October 2nd, 2013

Di komputer khsusunya linux, jika kita memerlukan proses otomatisasi maka dapat dilakukan dengan memasukkan perintah eksekusi otomatis melalui cron atau crontab.

Sebagai contoh proses adalah sinkronisasi jam (selain memakai ntpd), proses otomatis setiap jam, harian dan sebagainya.

Contoh kasus yang saya alami adalah, saya mempunyai instalasi moodle (moodle.org) dan diperlukan menjalankan proses admin/cli/cron.php secara rutin untuk melakukan notifikasi ke user dan proses proses lain.

Perintah penambahan di crontab, cukuplah sederhana

# crontab -e

1 */1 * * * php admin/cli/cron.php

Dengan mengabaikan konfigurasi pathnya, perintah cron diatas dapat dijalankan dengan normal diawal -awal waktu. Notifikasi terkirimkan dengan baik dan tidak ada masalah.

Seiring dengan waktu, notifikasi terkirim sampai tiga kali untuk pesan yang sama.

Analisa

Bahwa proses cron berjalan dengan baik dimana dilakukan setiap jam di menit pertama. Pengiriman pesan dilakukan bisa sampai tiga kali untuk pesan yang sama.

1. Uji coba dengan perintah sederhana, hasil menunjukkan bahwa setiap jam selama di menit pertama (detik diabaikan), perintah akan dilakukan terus, yaitu bisa lebih dari satu kali dalam waktu yang bersamaan.

Untuk mengatasi ini, maka diperlukan penguncian proses agar ketika ada proses sebelumnya maka proses yang kedua dan seterusnya akan dibatalkan.

Permalahan ini dapat diselesaikan dengan menggunakan aplikasi flock

flock (util-linux-ng 2.17.2)

Usage: flock [-sxun][-w #] fd#

flock [-sxon][-w #] file [-c] command…

flock [-sxon][-w #] directory [-c] command…

-s  –shared     Get a shared lock

-x  –exclusive  Get an exclusive lock

-u  –unlock     Remove a lock

-n  –nonblock   Fail rather than wait

-w  –timeout    Wait for a limited amount of time

-o  –close      Close file descriptor before running command

-c  –command    Run a single command string through the shell

-h  –help       Display this text

-V  –version    Display version

2. Jika proses perintah di cron cukup pendek, maka dalam rentan menit yang sama tersebut, setelah proses pertama selesai maka akan disusul proses yang kedua. Sehingga yang diharapkan perintah dijalankan cukup satu kali ternyata bisa dijalankan lebih dari satu kali.

Kalau diamati proses admin/cli/cron.php diawal-awal waktu memakan waktu cukup lama, bisa sampai lima menit, akan tetapi sekarang ini bisa diselesaikan dalam waktu kurang dari satu menit.

Permasalahan ini harus diselesaikan salah satu caranya dengan proses menunggu, yaitu apabila proses dijalankan kurang dari satu menit, maka tunggu atau perpanjang waktu proses agar lebih dari satu menit, yaitu dengan menggunakan printah sleep.

Implementasi

Dengan dua solusi diatas, maka perintah cron diubah menjadi sbb:

1 */1 * * * flock -n /var/run/moodle_cron.lck php admin/cli/cron.php; sleep 60s

Posted in Centos | No Comments »

MySQL DNBCLUSTER error karena shutdown server tidak normal

Posted by Prayitna Kuswidianta on June 11th, 2013

Sudah beberapa waktu lamanya menggunakan database MySQL dengan engine NDBCLUSTER berjalan dengan lancar, dengan berbagai macam kondisi perubahan status server, baik server node database maupun server cluster managernya, awal bulan ini yaitu tanggal 2 Juni 2013 dilakukan perawatan listrik dari PLN dan Genset dimana server secara mendadak dimatikan dari UPSnya.

Saat start semua kelihatan normal saja, database mysql berjalan lancar. Dua hari kemudian setelah cek beberapa aplikasi ternyata tidak semua database berjalan dengan baik, yaitu kususnya database mysql dengan engine ndbcluster, data tidak dapat diakses.

Sebagai gambaran saya memakai 1 cluster manager dan 2 node database mysql versi : 5.5.30-ndb-7.2.12-cluster-gpl MySQL Cluster Community Server (GPL). Kondisi yang dijumpai di server yaitu :

  • Cluster manager UP
  • Dua node database, mysql server berjalan dengan baik
  • Status dua node database tidak terhubung ke cluster manager
  • Saat dua node database, ndbcluster di start secara manual, maka pesan di cluster manager yaitu :
ndb_mgm> show
Cluster Configuration
———————
[ndbd(NDB)]     2 node(s)
id=2    @192.168.0.2  (mysql-5.5.30 ndb-7.2.12, starting, Nodegroup: 0)
id=3    @192.168.0.3  (mysql-5.5.30 ndb-7.2.12, starting, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.0.1  (mysql-5.5.30 ndb-7.2.12)
[mysqld(API)]   2 node(s)
id=4 (not connected, accepting connect from any host)
id=5 (not connected, accepting connect from any host)
ndb_mgm> Node 2: Forced node shutdown completed. Occured during startphase 4. Caused by error 2310: ‘Error while reading the REDO log(Ndbd file system inconsistency error, please report a bug). Ndbd file system error, restart node initial’.
Node 3: Forced node shutdown completed. Occured during startphase 4. Caused by error 2308: ‘Another node failed during system restart, please investigate error(s) on other node(s)(Restart error). Temporary error, restart node’.

Posted in Linux, My SQL | No Comments »

Cloning Centos 6, Solusi masalah seting jaringan

Posted by Prayitna Kuswidianta on February 26th, 2013

Sistem Operasi Linux Centos sudah semakin berkembang, yang selama ini memakai Versi 5.8 ternyata sudah sampai dengan versi 5.9.

Sementara itu untuk Centos versi 6 sudah mencapai versi 6.3, dimana yang selama ini berasumsi di versi 6 masih kemungkinan ada masalah kelihatannya sudah banyak yang stabil disana.

Fasilitas upgrade dari 5 ke 6 selama ini belum ada, dan solusi sederhana yang dilakukan untuk upgrade adalah dari fresh install.

Dalam Centos 6 ini aplikasi-aplikasi yang disertakan sudah berbeda versi dengan Centos 5, misalnya php di centos 5 adalah versi 5.1 dan di Centos 6 sudah memakai versi 5.3.

Insya Allah masalah versi bisa diatasi dengan melakukan downgrade versi agar aplikasi kita tetap bisa jalan seperti sebelumnya.

Ada sedikit masalah ketika saya sudah menyiapkan master Centos 6 dengan aplikasinya ternyata saat dilakukan cloning, dimana saya menggunakan Oracle VirtualBox, lancard tidak terdeteksi seperti saat menggunakan Centos 5.

Simtom yang terjadi yaitu :

Read the rest of this entry »

Posted in Centos, Linux | No Comments »

Membuat Backup Database OpenLDAP dengan Replica

Posted by Prayitna Kuswidianta on January 25th, 2013

Database LDAP yang sudah pusat database untuk otentifikasi akan menjadi titik tunggal kegagalan sistem apabila tidak diupayakan membuat backup database.

Backup bisa berupa off-line maupun on-line.

Backup off-line dapat dilakukan secara sederhana, yaitu :

  1. Matikan database ldap, yaitu dengan service ldap stop
  2. Salin konfigurasi file, yang biasanya terletak di /etx/openldap
  3. Salin database ldap, yang biasanya terletak di /var/lib/ldap
  4. Selesai dan Jalankan kembali ldap dengan service ldap start
Backup on-line disini didefinisikan sebagai backup yang dilakukan pada saat database ldap masih hidup. Ini dapat dilakukan dengan dua cara , yaitu :
1. menggunakan perintah slapcat
2. menggunakan fasilitas repika

Backup dengan SLAPCAT

Cara backup dengan slapcat cukup sederhana, yaitu :
  1. Database LDAP msih dalam kondisi hidup
  2. Jalankan perintah “slapcat -v -l backup.ldif“, dimana perintah ini akan membaca seluruh database LDAP dan dituliskan ke file backup.ldif
Cara restore atau memulihkan file backup.ldif ke database LDAP yaitu :
  1. Konsidi database LDAP adalah mati, yaitu dengan service ldap stop
  2. Siapkan LDAP server baru dan pastikan data masih kosong, yaitu dengan rm /var/lib/ldap/* -rf
  3. Tulis backup.ldif ke database LDAP dengan slapadd, yaitu dengan perintah slapadd -l backup.ldif
  4. Selesai, sebelum menjalankan database LDAP, pastikan bahwa pemilik file database LDAP adalah ldap, yaitu dengan perintah chown ldap:ldap/var/lib/ldap/*

Backup dengan Replika

Berbeda dengan cara slapcat, maka dengan metode replica ini dibutuhkab minimal dua database LDAP server, yaitu misalnya master-ldap dan slave-ldap.

Posted in Application, LDAP | No Comments »

Tuning File Sistem Centos agar melakukan fsck

Posted by Prayitna Kuswidianta on January 2nd, 2013

Apalikasi webbase cacti dan nagios adalah aplikasi faforit saya dalam melakukan monitorng sederhana sistem di NOC. Ada sebuah kendala dimana, dengan proses yang cukup banyak dalam melakukan pengecekan sistem, seperti ping, http check, database check, dan lain-lain juga dengan proses penulisan ke file yang cukup intensif seperti dalam pembuatan file gambar di cacti maupun perubahan di database mysql, yaitu server sering stuck tidak beroperasi.

OS dengan Centos 5.8 di VirtualBox, memori 1Gb HD 5Gb sebenarnya sudah cukup untuk kerja dengan baik. Dengan proses diatas, dengan pengealaman yang ada rata-rata sekitar satu bulan server akan berhenti bekerja. Simptom yang terjadi adalah file sistem rusak dan harus akses server dari terminal (RDP ke VirtualBox) dan lakukan perbaikan file sistem.

Proses perbaikan file sistem tidak lebih dari 5 menit, yaitu cukup login ke server, ketikkan perintah fsck -y dan tunggu hingga selesai dan reboot. Alhamdulillah semua berjalan dengan lancar kembali.

Proses sederhana akan tetapi cukup mengganggu. Hari ini dicoba solusi sederhana, yaitu lakukan fsck setiap minggu sekali pada hari minggu.

Read the rest of this entry »

Posted in Centos, Others | No Comments »