Showing posts with label linux. Show all posts
Showing posts with label linux. 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!

Setup Docker Registry menggunakan Nexus OSS 3.x



Halo sobat Nostra,
Pada kali ini saya akan berbagi cara membuat private docker registry menggunakan nexus oss 3.x. Docker Hub adalah original registry untuk semua images kontainer docker yang dapat bersifat publik atau private. Ada juga registry publik lainnya seperti Google Container Registry dan registry lainnnya. Kali ini kita akan membuat docker private registry untuk menyimpan image-image kita di server kita dengan menggunakan Nexus repository manager 3.6.2 yang sudah support docker repo. Keuntungannya ada karena image berada di jaringan lokal kita dapat mengurangi cost dan bandwith, lebih aman, mudah memanage user authentication, dan yang paling penting free.

Pada tutorial kali ini saya menggunakan Centos 7. Masuk ke server yang akan di install Nexus oss sebagai root.
Pastikan selinux kita sudah disabled 

nano /etc/sysconfi/selinux
SELINUX=disabled


Install Java Runtime Environment
Cek versi java dengan command
$ java -version

openjdk version "1.8.0_151"

OpenJDK Runtime Environment (build 1.8.0_151-b12)

OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

Jika server belum terinstall dapat mengikuti langkah di bawah ini
yum install java-1.8.0-openjdk.i686

Download nexus repository manager versi 3.6.2 (latest) dan extract file tersebut
cd /opt
wget http://download.sonatype.com/nexus/3/nexus-3.6.2-01-unix.tar.gz
tar xvf nexus-3.6.2-01-unix.tar.gz
mv nexus-3.6.2-01 nexus


Set konfigurasi di /opt/nexus/bin/nexus.rc sehingga nexus dapat run sebagai user root

nano /opt/nexus/bin/nexus.rc

run_as_user="root"


Untuk run nexus menggunakan systemd sebagai service kita akan membuat file nexus.service di folder /etc/systemd/system/nexus=
nano /etc/systemd/system/nexus.service

[Unit]

Description=nexus service
After=network.target

[Service]
Type=forking
ExecStart=/opt/nexus/bin/nexus start
ExecStop=/opt/nexus/bin/nexus stop
User=root
Restart=on-abort

[Install]
WantedBy=multi-user.target

Setelah Nexus start kita dapat mengakses melalui browser http://ipserver:8081/
untuk login sebagai admin dapat memasukkan username:admin dan password:admin123


Tambahkan  role untuk docker dengan cara memilih menu Roles lalu pilih create role. Isi sesuai dengan gambar dibawah ini. pada privileges ketik docker pada bagian filter lalu blok dan klik icon > sehingga privileges yg disebelah kiri pindah ke sebelah kanan.



Selanjutnya untuk menambah user pilih menu Users, create local user. isi sesuai dengan gambar di bawah ini.

Pilih icon pengaturan lalu ke Repositories dan create repository. Kemudian isi field sesuai dengan gambar di bawah ini. Kita akan menggunakan port 8080 untuk mengakses repo docker yg nantinya kita akan melakukan pull atau push image docker.

Kita harus menginstall terlebih dahulu menginstall service docker di sever kita.
Sekarang kita akan mencoba untuk melakukan push image ke repo docker. Pertama kita harus terlebih dahulu login ke docker nexus.

docker login localhost:8080

Pull image hello world dari docker hub dan kemudian kita push ke docker private kita.
docker images
docker pull tutum/hello-world
docker tag tutum/hello-world localhost:8080/tutum/hello-world

Mengecek apakah sudah masuk image yang kita push.
docker search localhost:8080/tutum/hello-world

Untuk pull image dapat menggunakan  perintah.
docker login localhost:8080

Melihat image yg ada di local

docker images



Sekian tutorial kali ini semoga bermanfaat. Terima kasih... :)






Thursday, December 14, 2017

Setup dan Mengatur OpenVPN dari Web


Halo sobat Nostra,
Pada kali ini saya akan berbagi tutorial bagaimana menginstall admistrasi OpenVPN yang dapat kita akses melalui web untuk mengatur user, melihat visualisasi log, serta konfigurasi openvpn lainnya. seperti kita tau OpenVPN adalah aplikasi open source untuk Virtual Private Networking atau disingkat (OVPN) yang dimana nantinya dapat membuat sambungan PTP tunnel yang terenkripsi. Dengan ini nantinya kita dapat mengakses jaringan private server kita melalui jaringan publik. Dengan adanaya administrasi Openvpn kita juga dapat membuat masing-masing user memiliki key atau akses yang berbeda-beda serta lebih mudah untuk memanage user.

Ada beberapa hal yang dibutuhkan sebelum menginstall Openvpn, berikut list nya:

Prerequisite

- GNU/Linux with Bash and root access
- Fresh install of OpenVPN
- Web server (NGinx, Apache...)
- MySQL
- PHP >= 5.5 with modules:
- zip
- pdo_mysql
- bower
- unzip
- wget
- sed
- curl



Pada tutorial kali ini saya menggunakan OS Centos 7

Masuk ke server openvpn sebagai root.

Lakukan perintah di bawah ini untuk menginstall openvpn, database dan packages2 lainnya yang dibutuhkan:

 yum install epel-release  
 wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm  
 rpm -Uvh remi-release-7.rpmyum install openvpn httpd php-mysql mariadb-server php nodejs unzip git wget sed npm  
 npm install -g bower  
 systemctl enable mariadb  
 systemctl start mariadb  

Setup OpenVPN and the web application:

Masuk ke direktori home root dan download file instalasi openvpn dari github
 cd ~  
 git clone https://github.com/Chocobozzz/OpenVPN-Admin openvpn-admin  

Sebelum instalasi kita memerlukan web server, kita akan menggunakan apache tetapi kita juga bisa menggunakan nginx.
 yum install httpd  

Masuk ke folder dan jalankan script dibawah ini untuk instalasi sesuaikan dengan format commandnya ./install.sh www_base_dir web_user web_group .
 cd openvpn-admin  
 ./install.sh /var/www/html/ apache apache  

Setelah selesai instalasi ovpn kita selanjutnya akan membuat admin untuk web aplikasi dengan mengakses dari web http://ipserver-openvpn/index.php?installation

Start OpenVPN di server
 systemctl start openvpn@server  

Langkah-langkah menggunakan aplikasi web openvpn untuk adminstrasi:

Masuk ke web openvpn sebagai admin.

Buat user baru



Tampilan list semua user.



Untuk mendownload file key user untuk akses remote disesuaikan dengan tipe os yg akan digunakan mengakses.
Hasil downloadnya ada file .tgz yang isinya adalah ca.crt, client.conf, ta.key, update-resolv.sh.
Untuk tunneling kita memakai file client.conf dan tools openvpn (Linux) atau tunnelblick (Mac) untuk dapat connect openvpn server kita. Setelah berhasil connect kita dapat terhubung ke jaringa private.


Sekian tutorial setup openvpn dengan web interface kali ini terimakasih :)

setup gitlab runner pada linux untuk gitlab-ci


halo semua kali ini saya akan coba membuat tutorial tentang bagaimana cara membuat dedicated gitlab runner untuk keperluan gitlab-ci di repo gitlab baik yang berada di gitlab.com ataupun yang selfhost, untuk setup gitlab runner sendiri ada banyak metode namun kali ini saya akan menggunakan metode install gitlab runner dengan gitlab repository pada linux (centos,ubuntu,debian,redhat)

1
2
3
4
5
# For Debian/Ubuntu/Mint
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash

# For RHEL/CentOS/Fedora
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

lalu install latest version dari gitlab runner

1
2
3
4
5
# For Debian/Ubuntu/Mint
sudo apt-get install gitlab-runner

# For RHEL/CentOS/Fedora
sudo yum install gitlab-runner

namun jika kalian ingin install version lain dari gitlab runner kali bisa menggunakan cara dibawah ini

1
2
3
4
5
6
7
# for DEB based systems
apt-cache madison gitlab-runner
sudo apt-get install gitlab-runner=10.0.0

# for RPM based systems
yum list gitlab-runner --showduplicates | sort -r
sudo yum install gitlab-runner-10.0.0-1

jika sudah selanjutnya kalian perlu register gitlab runner ke repo gitlab, karena saya menggunakan repo gitlab dari gitlab.com

1
sudo gitlab-runner register

lalu selanjutnya masukan gitlab instance url, jika kalian menggunakan gitlab self host maka masukkan domain dari gitlab repo self host kalian

1
2
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com, https://you_domain_gitlab_repo.com )
https://gitlab.com

selanjutnya masukan token yang kalian dapatkan dari project repo kalian

1
2
Please enter the gitlab-ci token for this runner
xxx

masukan description dari runner yang kalian setup

1
2
Please enter the gitlab-ci description for this runner
[hostame] my-runner

masukan tag untuk runner yang kalian setup

1
2
Please enter the gitlab-ci tags for this runner (comma separated):
my-tag,another-tag

selanjutnya pilih "true" pada option dibawah

1
2
Whether to run untagged jobs [true/false]:
[false]: true

selanjutnya kalian akan ditanyakan apakah akan lock runner yang kalian setup hanya untuk 1 project atau tidak, saran dari saya pilih false

1
2
Whether to lock Runner to current project [true/false]:
[true]: false

selanjutnya kalian akan ditanya metode yang kalian inginkan dalam gitlab-ci, disini saya memilih docker

1
2
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
docker

selanjutnya kalian akan ditanyakan akan memilih image docker apa, disini saya memilih image docker:latest


1
2
Please enter the Docker image (eg. ruby:2.1):
alpine:latest

selanjutnya untuk memastikan apakah runner nya sudah terhubung dengan project gitlab repo kalian bisa melakukan pengecekan pada setting > ci/cd > runner setting

sekian tutorial setup gitlab runner pada linux os kali ini terimakasih :)

Sunday, September 17, 2017

Elasticsearch Snapshot and Restore Data



Halo Sobat Nostra, pada kali in saya akan berbagi tutorial bagaimana cara membuat snapshot (backup) dan restore data pada elasticsearch dengan mudah. Apa itu elasticsearch? elasticsearch adalah adalah salah satu database yang masuk ke dunia NoSQL dengan fokus di search engine database. Kenapa kita memerlukan backup data? Apabila suatu ketika kita memiliki kerusakan data atau kehilangan data kita dapat mengambil kembali dari data yang sudah kita backup sebelumnya. Karena data itu sangat penting sehingga kita harus memiliki backup. Snapshot juga dapat kita lakukan apabila kita ingin migrasi ke elastic versi yang lebih baru. Sebelum kita mulai, elasticsearch harus sudah terinstall dan pastikan sudah listen di port default elasticsearch 9200 dan 9300. Mari kita mulai tutorialnya.

Hal pertama yang kita lakukan adalah menambahkan lokasi repo.path di elasticsearch.yml. Path ini adalah filesystem lokal dimana snapshot akan disimpan.

Kita buat folder di /home/elasticsearch/backup
 mkdir –p /home/elasticsearch/backup  
 chown -R elasticsearch. /etc/elasticsearch/backup  

Tambahkan konfigurasi di elasticsearch.yml
 path.repo: ["/etc/elasticsearch/backup"]  

Restart service elasticsearch
 systemctl restart elasticsearch  


Setup the snapshot repository

Sebelum kita snapshot dan restore, kita harus mendaftarkan path repository di Elasticsearch dengan menggunakan perintah:

 curl -XPUT "http://localhost:9200/_snapshot/es_backup" -H 'Content-Type: application/json' -d'  
 {  
   "type": "fs",  
   "settings": {  
     "location": ["/etc/elasticsearch/backup "  
     , "compress": true  
   }  
 }'  

Untuk mengeceknya dengan command:
curl -XGET 'localhost:9200/_snapshot/es_backup?pretty'

Take snapshots

Sekarang kita sudah bisa melakukan backup atau restore. Kita lanjut cara backup data (index).
cek list index pada elasticsearch
 curl -XGET 'localhost:9200/_cat/indices?v&pretty'  

Create snapshot dengan perintah:
 curl -XPUT 'localhost:9200/_snapshot/es_backup/snapshot_1?wait_for_completion=true&pretty'  

Defaultnya semua index yang open dan start akan disnapshot. Kita dapat membuat snapshot hanya index yang kita ingin backup dengan cara dibawah ini:
 curl -XPUT 'localhost:9200/_snapshot/es_backup/snapshot_1?pretty' -H 'Content-Type: application/json' -d'  
 {  
  "indices": "index_1,index_2",  
  "ignore_unavailable": true,  
  "include_global_state": false  
 }'  

Untuk melihat hasil semua snapshot dengan perintah:
 curl -XGET 'localhost:9200/_snapshot/es_backup/_all?pretty'  

Untuk menghapus snapshot dapat menggunakan:
 curl -XDELETE 'localhost:9200/_snapshot/es_backup/snapshot_1?pretty'  

Restore snapshots

Kita akan merestore data dari snapshot ke elasticsearch. Ada yang harus kita perhatikan sebelum restore data. Pertama index yang kita snapshot sebelumnya akan memiliki nama yang sama dengan  index pada elasticsearch sehingga kita harus close atau delete index tersebut.
 curl -XPOST 'localhost:9200/my_index/_close'  

Kemudian lakukan restore snapshot:
 curl -XPOST 'localhost:9200/_snapshot/es_backup/snapshot_1/_restore?pretty'  

Untuk memonitor progress restore/snapshot dengan perintah:
 curl -XGET 'localhost:9200/_snapshot/es_backup/snapshot_1?pretty'  

Jika kita ingin memindahkan hasil snapshot ke mesin lain, hal yang kita lakukan adalah dengan mencopy folder dimana snapshot kita simpan ke mesin tersebut dan selanjutnya merestore snapshot ke elasticsearch.


Elasticdump

Ada cara lain untuk membackup data elasticsearch yaitu dengan menggunakan elasticdump. Kekurangan elasticdump adalah sulit untuk restore. Jadi apabila kita hanya ingin menyimpan datanya tanpa ingin restore kita dapat menggunakan elasticdump. Hasil dari backup index tersebut akan berupa json dan dapat kita buat langsung ke dalam gzip file.

Pertama install terlebih dahulu service elasticdump:
 npm install elasticdump –g  

Kemudian lakukan backup:
 elasticdump \  
  --input=localhost:9200/my_index \  
  --output=$ \  
  | gzip > /home/elasticsearch/backup/my_index.json.gz  

Sekian dari saya semoga apa yang saya share dapat bermanfaat.
Terima kasih :)        

References:
  • https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-snapshots.html
  • https://www.npmjs.com/package/elasticdump

Monitoring Perfomance Server with Collectd, Graphite, & Grafana

Halo sobat Nostra!
Di postingan perdana kali ini saya ingin memebrikan tutorial bagaimana cara membuat monitoring perfomansi server dengan menggunakan produk opensource (gratisan). Server monitoring adalah server yang berfungsi untuk melihat perfomansi dari sever yang berjalan seperti CPU, RAM, Disk, Network dan lain-lain. Kenapa kita butuh untuk memonitor perfomansi server? Karena server adalah backbone dari bisnis anda kita perlu memberikan perhatian tinggi. Dengan adanya server monitor kita akan dapat melihat apa yang terjadi secara langsung. Kita juga dapat mendeteksi masalah-masalah sebelum berakibat fatal. Data yang kita dapatkan dari server monitoring, kita juga dapat mengambil keputusan penting untuk mengurangi resiko terjadinya kegagalan server. Saat ini banyak perusahaan yang menyediakan layanan untuk memonitor server anda tetapi masalahnya adalah berbayar. Jangan takut di linux banyak sekali tools yang opensource yang akan memanjakan anda. Pada tutorial kali ini kita akan memakai tools collectd, grapite, dan grafana. Sebelum kita mulai untuk instalasi, saya akan menjelaskan masing-masing fungsi dari ke-3 produk tersebut. Collectd akan mengumpulkan dan mengirim metric ke Graphite. Graphite akan menyimpan data tersebut. Selanjutnya pada Grafana kita akan mengolah data menggunakan Graphite sebagai storage backend untuk membuat grafik sesuai dengan yang kita inginkan.

Oh iya pada tutorial kali ini saya menggunakan OS Ubuntu 14.04 LTS

Collectd

Collectd adalah salah satu daemon terbaik untuk mengumpulkan metric sistem secara periodik dan store informasi.

Install collectd
 sudo apt-get update  
 apt-get install collectd collectd-utils  

Start service collctd
 service collectd start  

Configure collectd
 sudo nano /etc/collectd/collectd.conf  

Kita dapat comment out plugin lainnya. Pastikan jika anda ingin menggunakan plugin, konfigurasi pluginnya harus benar dan berjalan baik jika tidak collectd tidak bisa up.
 LoadPlugin battery  
 LoadPlugin cpu  
 LoadPlugin df  
 LoadPlugin interface  
 LoadPlugin load  
 LoadPlugin memory  
 LoadPlugin swap  
 LoadPlugin irq  
 LoadPlugin processes  
 LoadPlugin users  
 LoadPlugin write_graphite  

Tambahkan konfigurasi di collectd untuk mengirim metric ke graphite
 <Plugin write_graphite>  
     <Node "graphite">  
         Host "127.0.0.1"  
         Port "2003"  
         Protocol "tcp"  
         LogSendErrors true  
         Prefix "collectd."  
         StoreRates true  
         AlwaysAppendDS false  
         EscapeCharacter "_"  
     </Node>  
 </Plugin>  

Pada konfigurasi Collectd kita dapat menambahkan plugin lainnya untuk menambah metric-metric apa yang kita ingin tambahkan untuk didapat datanya. Untuk lebih lanjut dapat dilihat list plugin collectd.


Restart service collectd
 service collectd restart  


Graphite

Graphite is an open source enterprise-scale monitoring tool that does two things:
- Store numeric time-series data
- Render graphs or API responses of this data on demand

Graphite terdiri dari 3 komponen yang semuanya menggunakan phyton:
1. Carbon : Daemon yang me listen data time series
2. Whisper : database yang menyimpan data time series (desain mirip RRD)
3. Graphite webapp : Django webapp yang menampilkan data menggunakan cairo yang diakses dari web

Graphite sangat mudah di install menggunakan native packages. pertama kita butuh semua packages yang dibutuhkan:
 sudo apt-get update  
 sudo apt-get -y install apache2 libapache2-mod-wsgi graphite-web graphite-carbon  

Edit carbon cache service file:
 sudo nano /etc/default/graphite-carbon  

Kita ini akan membuat carbon cache aktif ketika service auto start.
Tambahkan konfigurasi ini:
 CARBON_CACHE_ENABLED=true  


Edit file konfigurasi Carbon cache:
 sudo nano /etc/carbon/carbon.conf  

Ubah konfigurasi seperti dibawah ini:
 ENABLE_LOGROTATION = true  
 MAX_CREATES_PER_MINUTES = 600  
Kemudian save file dan exit

Copy file default storage-aggregation.conf
 sudo cp /usr/share/doc/graphite-carbon/examples/storage-aggregation.conf.example /etc/carbon/storage-aggregation.conf  


Kita harus membuat graphite mengatur data yang diterima dari collectd dengan membuat skema penyimpanan
 sudo nano /etc/carbon/storage-schemas.conf  

Tambahkan konfigurasi dibawah ini
 [collectd]  
 pattern = ^collectd.*  
 retentions = 10s:1d,1m:7d,10m:1y  


Start carbon cache service:
 sudo service carbon-cache start  



Edit file konfigurasi graphite web:
 sudo nano /etc/graphite/local_settings.py  

Uncomment SECRET_KEY
 SECRET_KEY = 'secret_key_for_salting_hashes'  

Uncomment dan atur time zone yang akan ditampilkan di graph
 TIME_ZONE = 'Asia/Jakarta'  

Inisialisasi konfigurasi DB Graphite
 sudo graphite-manage syncdb  

Akan muncul promted untuk membuat akun superuser. Pilih yes dan masukkan kredensial. Ini akan digunakan pada interface Graphite untuk menyimpan grafik.

Buat kepemilikan untuk akses user _graphite:
 sudo chown _graphite:_graphite /var/lib/graphite/graphite.db  

Konfigurasi Apache
 sudo a2dissite 000-default  
 sudo cp /usr/share/graphite-web/apache2-graphite.conf /etc/apache2/sites-available  
 sudo a2ensite apache2-graphite  

Ubah port apache yang akan digunakan:
 sudo nano /etc/apache2/ports.conf  

Edit sepert dibawah ini:
 Listen 81  

Tambahkan konfigurasi http untuk vhost graphite
 sudo nano /etc/apache2/sites-available/apache2-graphite.conf  

Ubah jadi seperti ini:
 <VirtualHost *:81>  

Reload service Apache
 sudo service apache2 reload  



Untuk melihat apakah collectd sudah berjalan dengan benar mengirim metric ke graphite kita dapat melihatnya di dalam folder Metrics akan terdapat folder collectd. Akses graphite web menggunakan localhost:81.





Grafana

Grafana adalah sebuah software opensource yang membaca sebuah data matrics untuk dibuat menjadi sebuah grafik atau sebuah data tertulis. Grafana banyak sekali digunakan untuk melakukan analisis data dan monitoring. Grafana mendukung banyak storage backends yang berbeda untuk data time series (Source Data). Setiap source data memiliki Query Editor tertentu yang disesuaikan untuk fitur dan kemampuan tertentu.



Install Grafana

Tambahkan list repo file di /etc/apt/sources.list.
 deb https://packagecloud.io/grafana/stable/debian/ jessie main  
 curl https://packagecloud.io/gpg.key | sudo apt-key add -  

Install package grafana
 sudo apt-get update  
 sudo apt-get install grafana  

Jalankan service dengan perintah systemd:
 systemctl daemon-reload  
 systemctl start grafana-server  
 systemctl status grafana-server  

Enable service grafana untuk auto up ketika reboot.
 sudo systemctl enable grafana-server.service  

Grafana Web
Akses Grafana dari web dengan url localhost:3000. Untuk login gunakan username/password : admin/admin






Edit data source dan pilih Graphite sebagai storage backend.




Untuk membuat Grafiknya kita perlu melakukan explore lebih jauh lagi terhadap grafana. Dengan data metric yang ada kita bebas untuk membuat grafik seperti yang kita inginkan dan butuhkan.


Salah satu yang sulit dan lama yaitu mengubah data metric menjadi grafik.
Sebagai referensi kita dapat melihat dashboard yang telah dibuat dan dishare oleh orang lain dapat kita temukan di https://grafana.com/dashboards.

Sekian tutorial kali ini bagaimana membuat monitoring server perfomance.
Semoga bermanfaat dan selamat mencoba.
Terima kasih :)

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. :)