Extend disk CentOS Virtual Server pada VMWare Vsphere

menambahkan disk pada virtual server centos logical volume di VMWare Vsphere

tulisan ini sebagai catatan pekerjaan agar tidak lupa dan sebagai Portofolio, kali aja ada yang lirik 😀

  1. harus login dulu ke dashboard Vspere nya.
  2. kemudian, pilih VM yang akan di extend disknya, dan klik kanan, dan pilih edit setting.

Screenshot_737

Screenshot_738

lalu kamu bisa edit jumlah disknya mau jadi berapa. setalh itu , klik Oke.

 

5. lanjut, SSH ke CentOS servernya. ketik fdisk -l untuk mengetahui diskname dan apakah disk sudah tertambah

[root@localhost /]# fdisk -l

Disk /dev/sda: 2199.0 GB, 2199023255552 bytes, 4294967296 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0009a189

 Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 419430399 208665600 8e Linux LVM

Disk /dev/mapper/centos-root: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-swap: 8455 MB, 8455716864 bytes, 16515072 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-home: 151.5 GB, 151523426304 bytes, 295944192 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

oke, sudah tertambah ya jadi 2 TB. lanjut ketik fdisk /dev/sda dan seperti langkah2 dibawah ini

[root@localhost /]# fdisk /dev/sda

WARNING: The size of this disk is 2.2 TB (2199023255552 bytes).
DOS partition table format can not be used on drives for volumes
larger than (2199023255040 bytes) for 512-byte sectors. Use parted(1) and GUID 
partition table format (GPT).

Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p

Disk /dev/sda: 2199.0 GB, 2199023255552 bytes, 4294967296 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0009a189

 Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 419430399 208665600 8e Linux LVM

Command (m for help): n
Partition type:
 p primary (2 primary, 0 extended, 2 free)
 e extended
Select (default p): p
Partition number (3,4, default 3): 3
First sector (419430400-4294967295, default 419430400): 419430400
Last sector, +sectors or +size{K,M,G} (419430400-4294967294, default 4294967294): 4294967294
Partition 3 of type Linux and of size 1,8 TiB is set

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

kamu bisa reboot VM nya, atau ketik partprobe , saya pilih reboot saja biar hackul yakin.

kemudian ketik vgs untuk mengetahui volume groups

[root@localhost ~]# vgs
 VG #PV #LV #SN Attr VSize VFree
 centos 1 3 0 wz--n- <199,00g 4,00m

oke, disitu nama volume groupnya centos

kemudian, ketik lsblk, untuk mengetahui letak dan nama disknya yang baru

[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 2T 0 disk 
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 199G 0 part 
│ ├─centos-root 253:0 0 50G 0 lvm /
│ ├─centos-swap 253:1 0 7,9G 0 lvm [SWAP]
│ └─centos-home 253:2 0 141,1G 0 lvm /home
└─sda3 8:3 0 1,8T 0 part 
sr0 11:0 1 1024M 0 rom

sda3 adalah nama disk yang baru itu. lalu, kita tambahkan disk yang baru itu pada volume group centos dengan perintah :

[root@localhost ~]# vgextend centos /dev/sda3
 Volume group "centos" successfully extended

lanjut, kita lihat dulu, apakah command diatas berhasil, yaitu volume goups sudah tertambah :

[root@localhost ~]# vgdisplay centos | grep Free
 Free PE / Size 473088 / 1,80 TiB

sudah tertambah ya, jadi 1.8 TB. lanjut , kita extend, nah disini bebas, mau extend full, atau beberapa sesuai kebutuhan, dan juga, yang di extend sesuai mount point, ya istilahnya bagi-bagi kuelah. ada beberapa mount point pada volujme group, khususnya centos, ada root,swap, dan home disini saya akan extend yang root saja dengan menambahkan 500GB dari 1.8 TB.

[root@localhost ~]# lvextend -L+500G /dev/centos/root 
 Size of logical volume centos/root changed from 50,00 GiB (12800 extents) to 550,00 GiB (140800 extents).
 Logical volume centos/root successfully resized.

setelah di tambahkan, tinggal proses sync meta data dengan perintah growfs

[root@localhost ~]# xfs_growfs /dev/centos/root
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=3276800 blks
 = sectsz=512 attr=2, projid32bit=1
 = crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=13107200, imaxpct=25
 = sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=6400, version=2
 = sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 13107200 to 144179200

kemudian lihat, apakah sudah tertambah

[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3,9G 0 3,9G 0% /dev
tmpfs 3,9G 0 3,9G 0% /dev/shm
tmpfs 3,9G 8,8M 3,9G 1% /run
tmpfs 3,9G 0 3,9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 550G 50G 501G 10% /
/dev/sda1 1014M 194M 821M 20% /boot
/dev/mapper/centos-home 142G 109G 33G 77% /home
tmpfs 783M 0 783M 0% /run/user/0

 

Bagikan saja, itu tidak berat

Mitigasi host yang menjadi bot

awalnya saya hanya melakukan rutinitas pengecekan firewall di kantor yang saya tangani.

dari hasil monitoring, ada lalu lintas yang tidak wajar dari salah satu host. kemudian saya mencoba mencari tau lebih jauh.

aktifitas tidak wajar

aktifitas tidak wajar

dari gambar diatas, dapat diketahui bahwa host tersebut berasal dari farmserver, dimana aktifitas outgoing yang tidak normal menuju port tertentu.

mitigasi selanjutnya saya remote SSH server tersebut. hal pertama yang saya cek adalah konsumsi resource

resource penuh

resource penuh

selain resource penuh, ada proses yang tidak wajar berjalan pada server, saya mitigasi lebih jauh terkait proses tersebut dengan melihat lebih rinci dengan perintah :

ps aux | grep netsnd

proses tidak wajar

proses tidak wajar

hasilnya adalah gambar diatas.  ada proses yang menjalankan file tttt yang targetnya random. oke, disini sudah jelas kalau memang aneh. saya lanjutkan migitasinya dengan mencari keberadaan file tttt dan kemudian membaca isi file tersebut,

letak file tttt dan rekan2 nya

letak file tttt dan rekan2 nya

dari hasil pencarian, menemukan letak file tersebut, kemudian saya membaca isi dari file tersebut dan file-file lainnya.

menjalankan nmap

menjalankan nmap

dari sana dapat dibaca, bahwasannya, proses yang tidak wajar tersebut adalah menjalankan perintah nmap pada host random di internet.

proses tersebut akan memakan resource, baik CPU, RAM dan Network.

darisana sudah bisa disimpulkan, bahwa server tersebut sudah menjadi ROBOT yang dikendalikan oleh orang lain diluar sana untuk proses-proses yang dia inginkan.

oiya, selain menjalankan perintah nmap, rupanya server tersebut juga digunakan untuk mining

miner

miner

siapa pelakunya ? bagaimana cara masuknya ? 

diperlukan mitigasi lebih dalam untuk mengetahui pelakunya, sementara ini, server tersebut saya karantina agar tidak berproses sementara waktu, dengan demikian, aplikasi diserver tersebut juga tidak dapat diakses sampai dengan waktu yang belum ditentukan.

terima kasih telah mau membaca. :*

Bagikan saja, itu tidak berat

Script Kill all processes of deleted files that are still open | skrip menghapus semua proses delete file yang berjalan

 

Berawal dari matinya service postgresql pada salah satu server, disebabkan karena partisi pada disk penuh.

penyebab penuhnya kala itu adalah kesalahan konfigurasi pada network yang menyebabkan attack ter-record pada log web server hingga puluhan GB.

solusi cepatnya adalah memperbaikin konfig network, kemudian menghapus file log yang menjadi penyebab partisi penuh.

namun, setelah dihapus, partisi masih terlihat penuh saat di lihta menggunakan perintah :

[root@localhost var]# df -h

Screenshot_430

padahal….

Screenshot_431

oke, kemudian saya melihat list open file yang berjalan.

Screenshot_432

akeh cuk, kalau kill satu persatu, bisa lelah jari eike yang lembut ini.

kira-kira perintahnya begini : kill -9 82363

oke, saya bikin aja dalam bentuk bash script, nantinya bash script ini juga bisa dijalankan di server lain. bikin file dengan ekstensi .sh , terserah. misalnya jancuk.sh, bikin permisinya 777, lalu tambahkan code, begini codenya,

#!/bin/bash

lsof|grep deleted|awk {print $2}|xargs kill -9

simpan, dan buang jalankan.

sebelum kamu copy pasti script diatas, pastikan kamu memahami apa isinya, jangan asal copas, bisa jadi itu script buat delete seluruh folder / mu 🙂

Continue reading

Bagikan saja, itu tidak berat

Analisa Sistem dan Infrastruktur untuk pemecahan masalah ( khusus pemula )

halo semua, seperti biasa, nulis untuk kebutuhan catatan saja bagi saya. atau bisa juga sebagai Portofolio, kali aja artikel saya ini di lirik sama seseorang yang sedang membutuhan jasa saya. hehehe wkwkwk. judulnya itu analisa sistem dan infrastruktur untuk pemecahan masalah.

oiya, artikel ini khusus pemula, untuk yang sudah Pro = Profesional, jangan dibaca. karena saya bisa diketawain. wkwkwkwkw begitu. karena ini analisa abal-abal alias sembarangan. saya sendiri baru pertama kali melakukan analisa se kompleks ini. permasalah ini sudah beberapa bulan terjadi, dan saya baru sempat nulisnya sekarang.

berawal dari laporan client, bahwa aplikasinya lambat di akses. errornya itu lo yang bikin menarik. :

error tcp

error tcp

dari error diatas, rata-rata mahluk hidup di muka bumi ini pasti menduga ada masalah dengan jaringan, lalu mereka akan berasumsi bahwa bandwith di servernya bermasalah. karena mereka buka yutub aman kok, dan web-web lain aman. bandwith servernya nih pasti. gitchu~~~

btw, wait… eh, itu di akses jam 11 malam loh, (lihat pojok kiri atas). harusnya, jam segitu bandwith server gak tinggi. oke deh, untuk memanstikan, saya terpaksa hubungi pihak provider, apakah benar, pada jam segitu bandwith mentok. dan jawabannya, tidak. mentoknya kalo siang wkwkwkw.

oke, kita bahas yang benerannya, error tersebut terjadi karena ada lost koneksi dari client (HP) ke server aplikasi. penyebabnya ? bisa jaringan di client, jaringan di server, query, bandwith, daaaaaaaann server yang terlalu sibuk, gak tau deh ngapain dan lain-lain, banyak deh. oke, kita eliminasi masalah, ini yang penting, bisa eliminasi. seperti indonesian idol aja ya. wkwkkw

A. eliminasi permasalahan

  1. internet client bermasalah? tidak mungkin. karena doi bisa buka yutub dan web web lain
  2. trafik network server bermasalah, ? tidak mungkin juga. karena itu diakses jam 11 malam, yang begitu di konfirmasi ke pihak provider juga aman.
  3. logic dari aplikasi, ? bisa jadi. mari kita cek untuk memastikan.
  4. utilitas server bermasalah ? bisa jadi, mari kita cek untuk memastikan.

B. cek utilisasi server

kemudian, saya akses server. hal pertama yang dilakukan adalah ketik htop . wkwkw, ini perintah paling lazim dilakukan untuk liat kondisi server.

dan ternyata, benar… resourcenya CPU nya tinggi banget. nah, ada apa ini ? wah wah.. kok bisa. ini yang bikin error disisi usernya

mentok cuk

mentok cuk

wealah, kok bisa ya CPU 16 core mentok. ini server ngapain ya ? seperti sedang dipakai mining Bitcoin ajah, wkwkkw. sek. kok ya jadi kepikiran ya mining Bitcoin pake server, lumayan juga buat nambah asupan gizi dimasa pandemi gini, wkwkwkw. wes wes sadar.

agak aneh bagi saya, dan bagi teman-teman yang saya tanyai. apalagi setelah melihat dari fungsi aplikasi, kegunaan, jumlah user akses, dan logicnya. 16 core VCPU harusnya udah lebih dari cukup.

nah, bagi orang yang panikan, biasanya langsung buru-buru untuk menjustifikasi masalah pada cpu yang penuh, dan harus di tambah, tidak main-main, 4 kali lipat sekaligus. wew, emangnya mau bikin Data Center Bos pakai 64 core ??? 😀 lagian, belum tentu kan masalahnya teratasi ????. tenang, mari kita cari tau masalahnya lebih dalam.

C. cek aplikasi yang memakan resource

ada dua aplikasi yang tertinggi memakan resource dari server tersebut, yang pertama database, yang kedua web server. saya melakukan penangkapan slow query log pada kedua aplikasi tersebut. yang pertama backend web server hasilnya :

Screenshot_2

benar, aplikasi tersebut menggunakan engine php untuk menjalankannya. perlu diingat, php itu bukan akronim dari Pemberi Harapan Palsu , ya.

dari error php tersebut mengarah ke database.

Screenshot_1

benar, satu query di eksekusi sampai dengan 15 -20 detik, panteslah error disisi clientnya TCP error.karena server gagal melayani permintaan dari client.

sampai disini, sysadmin harus berkomunikasi dengan Programmer dan Database Engineer. harus ada hubungan yang harmonis antara ketiga elemen tersebut.

hubungan ini tidak akan terjadi jika sebuah project hanya di handle oleh satu orang saja. biasa di sebut Full Stack Developer. dia programmernya, dia database enginernya, dia juga sysadminnya. bisa mabok darat doi. wkwkwkw

sysadmin menanyakan kepada Database engineer, apakah query pada aplikasi sudah di sederhanakan secara maksimal. jika jawabannya sudah, namun masih terdapat error slow query log. maka harus mencari penyebab lainnya.

D. pengecekan di sisi perangkat.

pengecekan dilanjutkan disisi perangkat. yang berhubungan dengan itu adalah perangkat Input Output. ada dua, NIC dan Disk. saya cek NIC terlebih dahulu. setelah di cek, NIC dalam kondisi baik. NIC dengan 10 Gbps dapat dilewati dengan mulus oleh data-data yang di transfer.

kemudian say cek Disk. untuk cek disk, bisa menggunakan hdparm, fdisk, dll, banyak toolsnya, disini saya menggunakan fio. yaitu aplikasi untuk mengecek Read & Write pada Disk. dan, setelah di cek ini hasilnya :

iops

iops

FYI, server ini masih menggunakan HDD , IOPS segitu untuk digunakan aplikasi yang trafik dan Read Write datanya tinggi, sangat jelek, bahkan bisa dikatakan jeblok. lihat saja Readnya, hanya 38.

beberapa orang yang pasrah dengan keadaan, maksudnya ya hanya punya server itu dan gak mungkin upgrade, maka akan mengakali dengan memecahnya menjadi banyak bagian aplikasi pada server.

untuk aplikasi, bisa menggunakan teknologi kekinian yang biasa di kenal Microservices. bisa di baca disini : https://medium.com/codelabs-unikom/microservices-apaan-tuh-b9f5d56e8848

untuk database, bisa upgrade ke yang lebih mumpuni untuk pengolahan data besar, Postgresql, atau Monggo DB lebih sangat bagus. setelah itu di cluster. Read dan Write database di pisah, menggunakan Proxy. pasti akan jadi pekerjaan berat nan keren. ya gimana lagi, adanya server itu. wkwkwkw

solusi yang kedua, upgrade SSD, maka masalah IOPS beres. begini penampakan IOPS yang menggunakan SSD

iops2

jauh banget kan ya ? hehehe

oke. lanjut.

pada kasus ini, server sudah upgrade menggunakan SSD, dan ternyata, aplikasi sudah beres, aman dan kenceng.

coba deh di lihat CPU nya, pasti tidak load mentok lagi. karena query yang di Read dan Write di Dsik tidak antri, tidak lama lagi waktunya, otomatis, CPU juga tidak bekerja keras lagi. dan loadnya menurun.

sampai disini saya tidak cek server lagi dari sisi sistem Operasi, karena sudah di handle oleh sysadminnya. saya hanya menyediakan SSD.

jadi, tidak perlu upgrade CPU kan ? bayangkan saja jika harus upgrade CPU, larang regone Rekkkkkk. dan kerjaannya ribet Rekkkk. kudu backup data, matiin server, bongkar, halah, mumet. semetara aplikasi diburu kudu running dan yang lebih kacau, bisa jadi setelah upgrade CPU masalah tidak teratasi.

Mal Praktek Rekkkk jenenge neng dunia kedokteran. 😀

yoweslah, sekian aja, yang penting client udah tersenyum lebar karena aplikasinya udah aman. disitu saya merasa dipuasin oleh client . walaupun clientnya LANANGAN.

Bagikan saja, itu tidak berat

High avaibility moodle server using nginx load balancer and nfs server

nah loh, judulnya pakai bahasa inggris , yaitu High avaibility moodle server using nginx load balancer and nfs server , biar keren aja sih, karena saya akan tetap menulisnya dalam bahasa indonesia, saya kan cinta negeri ini, hehehe

oiya, hari ini saya sedang cukup bahagia, sebabnya saya iseng-iseng cek judul artikel, eh, muncul di page one nya google. gimana gak bahagia coba, artikel saya bersaing paling banyak di lihat dengan website-website kelas kakap di dunia. hahaha.

http://mandrivaputri.info

http://mandrivaputri.info

artikel yang mana ? yang ini http://mandrivaputri.info/2018/07/cara-load-balancing-web-server-dengan-haproxy-dan-glusterfs/

nah, artikel yang saya tulis ini adalah sambungan dari artikel diatas, hanya berbeda metode dan kebutuhan. maksudnya tetap sama.

selamat membaca dan selamat berbahagia untuk kalian yang sedang berlibur panjang dengan keluarga. salam hangat dari saya yang tersandar sendirian di kamar kosan. apalah daya, keluarga jauh. semoga harapan kita semua bisa tercapai 🙂 🙂 🙂 🙂 🙂 😉 😉 🙁 🙁 ;'(

jadi, saya mendapatkan tugas, ya sekalian saya anggap sebagai tantangan, sejauh mana kemampuan otak dan tenaga saya mampu menyelesaikan tugas tersebut.

tugasnya adalah : membangun dan mengoptimasi website learning manajement system dengan moodle

sebelumnya, website ini sudah ada, tapi diaksesnya lambat, dan terdapat beberapa trouble yang lumayan bikin bingung untuk mengatasinya.

sebelum melakukan aksi, terlebih dahulu saya menggali informasi tentang aplikasi tersebut, khususnya user akses. yang perlu di ketahui adalah :

  1. berapa banyak user yang akan mengakses aplikasi tersebut ?
  2. apakah random, atau concurrent ?
  3. berapa besar BW internet yang tersedia?
  4. berapa besar resource server yang tersedia ?

dari analisa diatas, dapat dihitung kebutuhannya. misalnya BW yang dibutuhkan, jumlah core CPU, jumlah RAM dan disk. disini saya memutuskan awal menggunakan total RAM 15 GB , CPU 4 core pada setiap server.

setelah melakukan analisa, saya mulai mengeksekusi tugas tersebut. oh, hal ini yang dinamakan analis sistem. tugasnya seorang sistem analis, tapi pada kasus kebanyakan, yang analis juga yang mengeksekusi, wkwkwkw. ya gapapalah, yang penting nambah ilmu, minimal jadi portofolio kali aja saya ditendang dari sini dan pindah ke tempat baru hahahaha

solusi dari permasalah diatas adalah saya menawarkan load balancing server. karena menggunakan moodle, yaitu sebuah aplikasi open source, maka kita tidak terlalu banyak bisa mengoptimasi sari sisi codingnya.

nah, mahalnya disini. ketika ada solusi. 😀 , kalau eksekusi kan hanya tinggal jalankan saja.

load balancing adalah membagi beban aplikasi yang di distribusikan ke beberapa server. 

begini diagramnya.

begini diagramnya.

metode diatas menggunakan tiga buah server apps, satu buah server load balancer, satu buah server database, dan satu buah server NFS. akan lebih baik jika server databasenya juga ada tiga, di cluster. tapi ya itu nantilah, dipengembangan berikutnya, dan seberapa penting ini aplikasi digunakan :p

senjata yang saya gunakan adalah :

  1. nginx
  2. nfs
  3. postgresql
  • server load balancer IP 192.168.85.10
  • server A IP 192.168.85.1
  • server B IP 192.168.85.2
  • server C IP 192.168.85.3
  • server NFS IP 192.168.87.3
  • server database IP 192.168.87.4

A. install dan konfig server load balancer

yang pertama adalah instalasi nginx load balancer pada server load balancer. ini instalasi nginx seperti biasa, hanya script untuk configurasinya menggunakan load balancer dengan metode round robind. yang pernah kuliah harusnya tau nih :p . ada beberapa metode, seperti least conn, ya tergantung kebutuhan aja sih, silangkan di explore.

ant@loadbalancer:~$ yum update -y

ant@loadbalancer:~$ yum install -y nginx

ant@loadbalancer:~$ systemctl enable nginx

ant@loadbalancer:~$ systemctl start nginx

ant@loadbalancer:~$ systemctl status nginx

 

nginx

nginx

membuat script configurasi vhost pada nginx

ant@loadbalancer:~$ vi /etc/nginx/conf.d/loadbalancer.conf

isinya :

upstream backend {

server 192.168.85.1;
server 192.168.85.2;
server 192.168.85.3;
}

server {
listen 80;
server_name xxxx.id;
return 301 https://$server_name$request_uri;
location / {
proxy_buffering on;
proxy_buffer_size 1k;
proxy_buffers 24 4k;
proxy_busy_buffers_size 8k;
proxy_max_temp_file_size 2048m;
proxy_temp_file_write_size 32k;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://backend;
}
}

upstream backendssl {

server 192.168.85.1:443;
server 192.168.85.2:443;
server 192.168.85.3:443;
}

server {
listen 443 ssl;
server_name xxxx.id;
ssl_certificate /etc/nginx/serti/bundle.crt;
ssl_certificate_key /etc/nginx/serti/priv.key;

location / {
proxy_buffering on;
proxy_buffer_size 1k;
proxy_buffers 24 4k;
proxy_busy_buffers_size 8k;
proxy_max_temp_file_size 2048m;
proxy_temp_file_write_size 32k;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://backendssl;
}
}

 

disini, SSL dari aplikasi akan di handle oleh server loadbalancer.

B. Instalasi nginx pada semua server A,B,C

ant@server-A:~$ yum update -y

ant@server-A:~$ yum install -y nginx

ant@server-A:~$ systemctl enable nginx

ant@server-A:~$ systemctl start nginx

ant@server-A:~$ systemctl status nginx

membuat konfigurasi vhost pada server A,B dan C

server {
listen *:443 ssl;
listen [::]:443 ssl;
root /usr/share/nginx/html/moodle/moodle/;
index index.php index.html index.htm;
server_name 192.168.85.1;

ssl_certificate /etc/nginx/serti/bundle.crt;
ssl_certificate_key /etc/nginx/serti/priv.key;

location / {
try_files $uri $uri/ =404;
}

location /dataroot/ {
internal;
alias /data/moodledata/;
}

location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
include fastcgi_params;
proxy_buffering on;
proxy_buffer_size 1k;
proxy_buffers 24 4k;
proxy_busy_buffers_size 8k;
proxy_max_temp_file_size 2048m;
proxy_temp_file_write_size 32k;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

}

disini, moodledata diarahkan pada server NFS.

C. instalasi postgresql server.

ant@db-server:~$ rpm -Uvh https://yum.postgresql.org/11/redhat/rhel-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

ant@db-server:~$ yum -y install postgresql11-server postgresql11

ant@db-server:~$ /usr/pgsql-11/bin/postgresql-11-setup initdb

ant@db-server:~$ systemctl enable postgresql-11.service

ant@db-server:~$ systemctl start postgresql-11.service

konfigurasi agar server database postgresql dapat di akses dari luar server. tutorialnya banyak di google, hehe

D. instalasi dan konfigurasi server NFS ke server A,B,C

ant@nfs-server:~$ yum install nfs-utils

ant@nfs-server:~$ mkdir /data/moodledata

ant@nfs-server:~$ vi /etc/exports

/data/moodledata 192.168.85.1(rw,sync,no_root_squash,no_all_squash)
/data/moodledata 192.168.85.2(rw,sync,no_root_squash,no_all_squash)
/data/moodledata 192.168.85.3(rw,sync,no_root_squash,no_all_squash)

ant@nfs-server:~$ systemtl enable nfs-server

ant@nfs-server:~$ systemctl start nfs-server

disini, saya membuat folder /data/moodledata untuk di mount ke server A,B,C

E. mounting disk pada server NFS ke server A,B,C

ant@nfs-server:~$ mkdir /data

ant@nfs-server:~$ mount 192.168.87.3:/data/moodledata /data

tambahkan script ini agar auto mount saat server restart

ant@nfs-server:~$ vi /etc/fstab

192.168.87.3:/data/moodledata /data nfs  defaults    0       0

cek, apakah disk server NFS sudah termount dengan perintah df -h

Screenshot_24

fuih,, capek ya. selanjutnya, siap untuk instalasi moodle nya.

oiya, saya males nulis tutorial install moodle, karena sudah banyak di internet, bisa di pelajari disini : https://docs.moodle.org/39/en/Installing_Moodle

yang perlu diperhatikan pada saat instalasi moodle :

  1. pastikan database sudah di buat di server database postgresql
  2. arahkan moodledata pada folder /data
  3. arahkan database pada IP 192.168.87.4

udah, sekian dulu, kalau tidak berhasil alias gagal, coba di perhatikan gagalnya dimana, atau bisa bertanya pada kolom komentar ya. capek banget saya nulisnya wkwkwkwk.

sekian dulu tulisan tentang High avaibility moodle server using nginx load balancer and nfs server.

sampai bertemu di lain artikel…. :*

 

 

Bagikan saja, itu tidak berat

Postgresql database auto restore

Halo, hari yang lelah, setelah membuat automation dump restore database mariadb/mysql, kali ini membuat script untuk auto dump dan restore untuk database Postgresql.

saya tidak akan mengulang, saya mau merujuk dari artikel saya sebelumnya : http://mandrivaputri.info/2020/08/membangun-data-ware-house-yang-aman/

artikel diatas memang sulit di pahami, karena basic nya saya memang bukan penulis apalagi pengajar, wkwkwkw, tapi setidaknya ini catatan bagi saya jika suatu saat ada pekerjaan serupa, jadi saya bisa lihat lagi dokumentasi saya. atau catatan ini bisa jadi portofolio saya jika saya hendak melamar pekerjaan di tempat lain :p

langsung saja ke script yah, script ini di jalankan di server :

{DATA WARE HOUSE}

yang pertama, kamu pastikan dulu kalau database server untuk postgresqlnya sudah terinstall.

bisa membaca artikel disini : https://computingforgeeks.com/how-to-install-postgresql-12-on-centos-7/

setelah itu, jalankan script dan cronjobnya pada user postgres

[root@db-warehouse ~]# su postgres

bash-4.2$ vi importpostgre.sh
#import db postgre
echo “halo bos”
dropdb database
createdb database
echo “buat db selesai”
cd /home/postgre/db
tar -xf *.tar.bz2
echo “extrac rampung”
rm -rf *.tar.bz2
echo “tar bz sudah di hapus”
for i in `find /home/postgre/db -type f -ctime -1`
do
psql database < $i
done
cd /home/postgre/db
rm -rf *
echo “rampung”

nah, jadi seperti itu scriptnya. jalankan di cronjob pada user postgres.

bash-4.2$ crontab -e

ya pokoknya gitulah, hehehe :*

Bagikan saja, itu tidak berat

Membangun data Ware House yang aman

Halo, kebetulan saat ini saya sedang membangun sebuah data Ware House.

apa itu data ware house ? yaitu sekumpulan database dari bermacam aplikasi yang di kumpulkan dalam satu server.

tujuan adalah untuk melakukan pengolahan data yang sumber datanya di ambil dari bermacam aplikasi tersebut. besar dong ? tentu, namanya juga ware house = gudang data.

kenapa tidak dilakukan pengolahan langsung di aplikasinya ? -sudah, tapi terkadang ada kebutuhan khusus diluar dari aplikasi. karena untuk melakukan perubahan di Production aplikasi sangat tidak di sarankan. SANGAT TIDAKKKKKKKK. JANGAN, TIDAK BOLEH. TITIK.

caranya bagaimana, ? logikanya simple, implementasinya yang gak simple wkwkwkwk

bahan-bahan yang di butuhkan :

1. server Production Aplikasi

2. server backup

3. server data ware house

tahapannya adalah :

{SERVER PRODUCTION}

  1. melakukan backup rutin pada server aplikasi production, caranya : http://mandrivaputri.info/2019/07/membuat-auto-backup-database-server-mariadb/

hal diatas dilakukan di semua server aplikasi yang ingin ditarik databasenya. oh ya, tutorial diatas adalah server dengan database mysql. jika databasenya berbeda, postgre misalnya, lakukan backup dengan cara yang ada di gugel, gampang, asalkan mau.

{SERVER BACKUP}

2. menarik ( get ) database hasil backup di server aplikasi production ke server backup, ini pakai rsync. contohnya seperti ini :

rsync -rzhav –update -e ‘ssh -p 220’ root@192.168.10.3:/home/centos/backupdb/ /data/192.168.10.3/db/

script diatas adalah contoh. jalankan ini di server backup, jalankan di cronjob secara rutin pakai bash script. cara nya cari di google, banyak.

kemudian, mengirim file hasil tarikan di server backup ke server Data ware house.

Screenshot_71

oh iya, siapa bilang sysadmin itu gak perlu ngerti programming. sysadmin harus ngerti programming, komunikasi antar mesin, itu perlu programming, bahasa pemograman yang sering digunakan untuk mesin adalah Python dan Shell Script. diatas adalah sedikit contoh bahasa pemograman shell script dengan bash command.

soalnya saya nyari-nyari di google gak nemu, akhirnya saya bongkar kitab lama saya. hahaha

saya jabarkan code diatas :

untuk i , temukan file yang modifikasi waktunya -1 hari di dalam folder /data/192.168.10.3/db

lalu

kirim data yang di temukan tersebut ke user root yang berada di server 192.168.11.4 di folder /root/db

selesai

{SERVER DATA WARE HOUSE}

setelah server Data ware house menerima kiriman backup database server Production dari server Backup, server Data Ware House bertugas untuk melakukan import database kiriman itu ke database server di Server Data Ware House. bingung ? ngopi dulu gih~~

saya membuat sebuah bash script yang saya jalankan secara rutin. oiya, timing waktu sangat penting, antara :

-server production melakukan backup internal

-server backup menarik data dari server production

-server backup mengirim data ke server data ware house

-server data ware house melakukan import database

timing waktu harus di perhatikan agar tidak miskom. hehehe

begini scriptnya :

Screenshot_72

penjabaran :

baris pertama : melakukan penghapusan database

baris kedua : membuat database baru

baris ketiga : untuk i , temukan file yang modifikasi waktunya -1 hari di dalam folder /root/xxx

baris ke empat : maka

baris ke lima : import file database hasil backupan di folder i ke database server

baris ke enam : selesai

baris ke tujuh : masuk ke folder /root/xxx

baris ke delapan : hapus semua file di folder tsb.

sampai disini, data ware house sudah selesai di bangun, kamu bebas mengolah data di data ware house tersebut tanpa harus menyentuh database aplikasi production. lebih aman bukan ?

disini kamu bisa mengolah data dengan melakukan query, terserah, mau pakai PHP, atau pun tools pengolah data seperti tableau.

sistem ini berjalan secara automatic, data di update sesuai dengan data asli di aplikasi production dengan waktu yang di tentukan oleh cronjob.

kamu tinggal bobok manis, biarkan tim pengolah data yang menggunakan layanan ini, kamu paling tinggal troubleshoot tipis-tipis aja kalau ada masalah. 🙂

Bagikan saja, itu tidak berat

Disable akses root pada phpMyAdmin

phpmyadmin

phpmyadmin

jutaan orang tidak menyadari, bahwa root akses dapat membayakan dirinya sendiri..

melakukan disable root, baik itu login maupun akses, itu memang pedih. bagi sebagian orang yang tidak tau, hehe

metode ini disebut-sebut merenggut kenyamanan dari seorang developer, padahal, yang namanya developer, itu kan sebelum live di production, ya dibuatnya di developer. nah, di production, itu memang harus benar-benar di konfigurasi dengan aman, salah satunya dengan disable root login/akses. jadi kalau production, jangankan root akses, phpmyadmin juga pasti tidak ada, port database juga tidak ada. ya pokoknya seperti itulah, hehehe,

mudah-mudahan kalian mengerti, karena saya tidak sedang berhasrat menulis saat ini. 😀

studi kasusnya linux ubuntu 16

pertama, edit file konfigurasi :

vi /etc/phpmyadmin/config.inc.php

allowroot

allowroot

temukan kata-kata tersebut dalam file yang di edit, pastikan valuenya FALSE

jika belum ada, bisa ditambahkan sendiri

$cfg[‘Servers’][$i][‘AllowRoot’] =FALSE;

kemudian save, dan restart web servernya.

systemctl restart apache2

 

Bagikan saja, itu tidak berat

menambahkan kapasitas “diluar jangkauan” pada nextcloud

kasusnya begini, pada server nextcloud yang saya buat, kapasitas penyimpanan hanya saya sediakan sebesar 10 TeraByte, sementara ada user yang meminta kapasitas penyimpanan lebih besar daripada itu, saya juga bingung, doi mau nyimpan apa di server sampai minta sebesar itu, film india kali, hehehehe…

untuk menyelesaikan kasus tersebut. hal yang saya lakukan adalah :

  1. menambahkan kapasitas harddisk server nextcloud
  2. membuat pastisi terpisah pada server untuk user tersebut
  3. attach harddisk tersebut pada akun yang meminta.

point 1 saya selesaikan dengan membuat volume, FIY , cloud servernya menggunakan openstack, jadi saya bisa membuat volume untuk saya attach pada server nexcloudnya. tutorialnya belum ada, nanti nyusul deh.

point ke 2, saya selesaikan setelah membuat volume pada point satu, caranya :

Mempartisi harddisk linux yang lebih dari 2 TB

point ke 3, saya selesaikan dengan langkah-langkah berikut :

login nextcloud

login nextcloud

yang pertama harus login admin dulu, tanpa login admin, kamu bukan apa-apa,. hehehe

setelah login, pada admin, pilih menu settings

setting

setting

kemudian, kamu pilih menu external storages pada Administration

nextcloud

nextcloud

kemudian mulai untuk attach pada akun nextcloud. disini karena bentuknya volume yang saya atatach pada server tersebut, maka saya pilih metodenya local , memasukkan folder berikut akun mana yang di kehendaki. lalu klik centang di sebelahnya.

external storages

external storages

Bai the wayyy, selain metode local, ada juga metode-metode lain, misalnya SFTP , amazon dan lain lain.

sampai disini , sudah selesai. mudah kan.?

Bagikan saja, itu tidak berat

Mempartisi harddisk linux yang lebih dari 2 TB

halo, pada tutorial kali ini adalah cara bagaimana mempartisi harddisk linux yang lebih dari 2 TB.

kasusnya adalah saya membuat volume hdd sebesar 20 TB dan saya attach ke instance server, namun gagal mempartisi menggunakan perintah yang umum, yaitu fdisk.

setelah saya cari tau melalui om google, perintah untuk mempartisi harddisk di linux yang lebih dari 2 TB itu menggunakan perintah parted. oke, cekidot.

fdisk

fdisk

langkah awal adalah memastikan hdd sudah ada di server dan termuat dalam disk mana dengan mengetik perintah :

fdisk -l

dari gambar diatas, hdd sudak berada diserver yang termount di /dev/vdc sebesar 20 TB

parted

parted

langkah selanjutnya adalah mengetikkan perintah parted :

parted /dev/vdc

lalu masukkan perintah-perintah seperti gambar diatas sampai dengan perintah quit.

setelah quit, kini saatnya membuat file system pada harddisk dengan perintah :

mkfs.ext4 /dev/vdc

mkfs.ext4 /dev/sdb1

mkfs.ext4 /dev/vdc

sampai done.

kemudian membuat folder untuk mounting harddisk tersebut, bisa juga di folder yang telah ada, misalnya /media atau /mnt. setelah folder tersedia, berikutnya ketikkan perintah mount :

mount /dev/vdc /mnt

kemudian cek dengan perintah : df -h

Screenshot_1059

harddisk sudah termounting ke folder dan dapat digunakan.

Bagikan saja, itu tidak berat