Showing posts with label johannes. Show all posts
Showing posts with label johannes. Show all posts

Saturday, December 16, 2017

Membatasi CPU Usage dengan CPULIMIT

Halo Sobat Nostra,

Pada kesempatan ini saya ingin mengulas tentang membatasi penggunaan cpu oleh sebuah proses. Hal ini adanya dilatarbelakangi oleh adanya kondisi tingginya penggunaan cpu oleh sebuah proses yang membuat kinerja OS menjadi lambat dan proses lain terganggu. Kasus yang pernah saya alamin itu proses remote ssh menjadi patah-patah atau lambat. Proses yang digunakan saat itu adalah java yang sangat lambat karena menggunakan cpu 99-100%.
Salah satu solusi untuk keadaan ini adalah dengan membatasi proses menggunakan software "cpulimit".

Berikut proses installasi tool cpulimit:
 $ sudo apt install cpulimit  

Sebagai contoh kita dapat melimit cpu usage dari proses berdasarkan pid.
Disini akan saya buat skenario simple penggunaan tool ini, dimana kita akan membuat proses yang menggunakan cpu secara besar.

Buat proses yang menggunakan cpu secara besar




=> Mari kita check daftar proses yang running di linux system. Tujuan kita adalah untuk melihat penggunaan cpu tiap proses terutama untuk PID 2329 (atau pid yang terbentuk di komputer anda) yang sudah kita buat.

Output tersebut menunjukkan PID yang kita buat menggunakan CPU sangat besar.

=> Membatasi penggunaan cpu sebagai berikut
 $ cpulimit --pid 2329 --limit 50 -b  

Output setelah cpu usage dibatasi

Tada.... cpu usage proses tersebut dapat di limit.

Berikut paramater yang mungkin perlu kita gunakan:
-p : untuk PID dari proses
-P : path dari file execute yang dijalankan
-b : Menjalankan cpulimit proses di background
-k : Nah ini untuk kill/stop proses ketika cpu usage melebihi nilai yang dibatasi

Semoga bermanfaat sob!

Friday, December 15, 2017

Service Discovery using Consul

Halo Sobat Nostra,

 Pada kesempatan ini saya ingin mengulas tentang Consul yang di provide oleh Hashicorp.
 Apa itu consul? Baik, consul adalah software yang terdiri dari beberapa komponen dimana secara keseluruhan berfungsi untuk discovering service dan konfigurasi service pada infrastruktur. Untuk fitur dari layanan consul ini, yaitu:

- Service Discovery, fitur untuk menemukan aplikasi seperti api, mysql atau aplikasi lainnya. Hal ini dilakukan dengan memanfaatkan dns dan http sehingga aplikasi dapat ditemukan dengan mudah.

- Health Check, fitur yang berguna untuk pengecekan kesehatan aplikasi baik tergantung dengan aplikasinya seperti webserver return status 200 ok, atau kondisi kesehatan mesin dari aplikasi.

- KV Store, fitur ini dapat digunakan untuk berbagai tujuan seperti dynamic configuration, feature flagging, coordination, leader election, atau yang intinya KV Store ini menyimpan nilai dan dapat diakses melalui http.

- Multi Datacenter, fitur ini adalah yang memungkinkan arsitektur consul di region berbeda. Sebagai catatan komunikasi-nya menggunakan protokol "Gossip" tipe WAN.



Untuk simulasi dapat dengan instalasi mode development
 $ consul agent -dev  
Pada mode ini agent akan berfungsi sebagai agent server dan client serta akan menyediakan layanan UI.

Pengecekan daftar member dapat dilakukan dengan
 $ consul members  

==> Pengimplementasian pada server production dapat dipikirkan beberapa pertimbangan sebagai berikut:
- Run service sebagai daemon (bisa menggunakan layanan systemd atau monit)
- Baiknya menggunakan fitur encrypt untuk pertimbangan keamanan (Bisa dilihat contoh config pada poin dibawah)
 $ consul keygen
   Bi1MEUBMlzmxqm854XIhrw==  

- Untuk menjalankan agent server menggunakan file server, contoh isi file
{        
        "bootstrap": false,        
        "server": true,        
        "datacenter" : "arjuna-01",        
        "data_dir": "/var/consul",        
        "encrypt": "Bi1MEUBMlzmxqm854XIhrw==",       
        "log_level": "INFO",        
        "enable_syslog": true,        
        "start_join": ["172.16.130.2", "172.16.130.3"]
}

Config diatas dapat di save di file /etc/consul.d/server/config.json

Demikian ulasan tentang consul, bagaimana mengimplementasikannya dengan simpel serta hal-hal yang perlu diperhatikan bila ingin menjalankan di production.


Friday, September 15, 2017

Glusterfs - File System Terdistribusi

Halo Sobat Nostra,
Kali ini saya akan mengulas teori dan skenario implementasi glusterfs. GlusterFS adalah software yang berfungsi sebagai file system yang terdistribusi atau dapat juga dikatakan sebagai cloud storage. Mengapa kita membutuhkan software ini? Mudahnya kita ingin menjamin ketersediaan data file tetap utuh. Untuk lebih memahaminya, ambil segelas kopi dan mari perhatikan skenario dibawah ini.


Pada gambar tersebut dapat dilihat ada 2 mesin (server1 & server2) yang berperan sebagai glusterfs dengan membuat 1 volume yang di mount oleh mesin klien (server3) pada folder /data/picture Berikut saya akan memandu cara install & konfigurasi dengan skenario menggunakan 3 mesin sebagai berikut:

- server1: OS=Ubuntu16, IP=172.16.30.1
- server2: OS=Ubuntu16, IP=172.16.30.2
- server3: OS=Ubuntu16, IP=172.16.30.3

Langkah 1: Install glusterfs pada mesin1 & mesin2
sudo apt-get install python-software-properties –y
sudo add-apt-repository ppa:gluster/glusterfs-3.10
sudo apt-get update
sudo apt-get install gluster-server  
- package "python-software-properties" berupa depedencies yang dibutuhkan untuk menjalankan software glusterfs
- Perintah "add-apt-repository ppa:gluster/glusterfs-3.10" untuk mendaftarkan repository gluster versi 3.10 (latest stable version saat ini)
- :) Glusterfs telah terinstall pada mesin anda

Langkah 2: Set peer pada glusterfs
Login pada mesin1 lalu jalankan perintah dibawah
sudo gluster peer probe 172.16.30.2
Note: Disarankan IP dapat diganti dengan hostname

Cek status peer pada mesin dengan perintah
sudo gluster peer status
Hasil yang diharapkan adalah "State: Peer in Cluster (Connected)"

Langkah 3: Buat volume & Jalankan volume yang dibuat
sudo gluster volume create volume1 replica 2
transport tcp 172.16.30.1:/exp1 172.16.30.2:/exp2 force
Cek status volume dengan perintah "sudo gluster volume status"

Untuk menjalankan volume dengan perintah berikut
sudo gluster volume start volume1
Lalu cek kembali status volume dengan perintah "sudo gluster volume status"

Langkah 4: Mount volume yang dibuat tadi pada client (mesin3)
Buat folder mount poin
sudo mkdir -p /data/picture
Mount volume tersebut dengan perintah berikut
sudo mount -t glusterfs 172.16.30.1:/volume1 /data/picture

Cek volume sudah terdaftar dengan benar dengan perintah "df -h"

Sekian dari saya, semoga bermanfaat. :)

Transfer file using script with tool "Expect"

Hallo Sobat Nostra,
Expect adalah program yang bersifat interaktif dimana program ini memunkinkan berdialog dengan program lain saat dijalankan. Sebagai contoh saat kita melakukan ssh ke mesin A maka kita akan diminta untuk mengisi password. Bila kita ingin membuat script yang menjalankan secara otomatis, maka ini akan menjadi kendala.
Mengapa tidak menggunakan cara kunci publik & privat agar tidak perlu password atau menggunakan tool sshpass saja?

Ada kondisi dimana kita tidak dapat menggunakan cara kunci publik dan private, saya mengalaminya saat saya ingin melakukan ssh dan scp ke target dengan OS windows (telah terinstall tool openssh).
Walau saya sudah membuat dan konfig file .ssh\authorized_keys di home user target namun tetap tidak bisa menggunkaan cara ini.

Selanjutnya mengapa tidak menggunakan tool passwordpass? Alasannya tool expect lebih secure karena password disimpan pada file script sedangkan sshpass disisipkan pada perintah di terminal. Bila melihat history command pada terminal maka password yang menggunakan tool sshpass akan langsung terlihat.

Berikut script tool expect serta penjelasannya:


Terima kasih & semoga bermanfaat.

Sunday, June 18, 2017

Cockpit - Interaktif Interface untuk Server Admin

Beberapa waktu lalu saya sedang mencari penyelesaian solusi dan pada komentar pembahasan ada yang menjelaskan bahwa ada software simple untuk mengelola server bernama cockpit, setelah saya coba menggunakan ternyata software ini membantu bagi kita yang ingin mengelola server linux dengan interaktif.

Cockpit adalah software yang free dengan fungsi untuk mengelola linux server dari web browser dengan mudah. Melalui penjelasan tersebut saya rasa sudah cukup jelas fungsinya. Dengan cockpit kita dapat start/stop/restart service, ganti hostname dan memonitor disk, cpu, network traffic dan beberapa fitur lainnya. Tidak lupa, di cockpit ini juga menyediakan interface layaknya terminal sehingga bila kita sudah login di web cockpit kita tidak perlu membuka terminal dan ssh ke target tapi cukup menggunakan terminal window yang disedian oleh software cockpit.

Berikutnya bagaimana cara menginstal cockpit, cara menggunakan juga tampilan serta fitur yang ditawarkan.

Pada skenario ini saya menginstall cockpit pada sistem operasi ubuntu server dengan spesifikasi berikut:
- IP: 192.168.56.121
- Akun root : root/password1
- Akun user : zoro/password1

Untuk menginstall instruksikan command berikut :
sudo apt-get update
sudo apt-get install cockpit

Setelah selesai terinstall maka buka browser dan akses alamat alamat IP cockpit dengan port default 9090.
url : https://192.168.56.121:9090/

Pada halaman login, masukkan username/password user pada ubuntu. Sekedar informasi bila ingin memonitoring performa server saja maka dapat dilakukan dengan akun user biasa, namun bila ingin mengelola service dengan mudah atau ganti hostname maka perlu login dengan root user.

Halaman beranda setelah login
Pada halaman beranda ini kita dapat mengganti hostname, restart/shutdown dan melihat current status dari cpu, memory, disk, serta network traffic.


Halaman Logs
Pada halaman ini pengguna dapat melihat log terbaru dari status errors, warnings, notices.


Halaman Storage
Pada halaman ini pengguna dapat melihat informasi detail tentang storage server, dan bila ingin informasi lebih spesifik dan detail lagi dapat meng-klik pada opsi di dalam jendela filesystems, raid devices, drivers, dan other devices.


Halaman accounts
Pada halaman ini ditampikan daftar user yang ada pada sistem operasi dan button untuk membuat user baru.


Halaman services
Pada halaman ini ditampilkan daftar service yang terinstall, sedang aktif dan sedang non-aktif. Disini kita dapat start/stop/restart/reload service.


Halaman terminal
Pada halaman ini pengguna dapat mengeksekusi perintah-perintah pada terminal linux server tanpa harus ssh ke linux server melalui terminal laptop pengguna. Mudah bukan?

Demikianlah artikel ini saya buat, semoga bermanfaat dan mudah dipahami oleh pembaca. :)


Referensi:
- http://cockpit-project.org/
- https://github.com/cockpit-project/cockpit