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

menambah kapasitas volume pada project di openstack

hai, tutorial kali ini adalah menambahkan kapasitas volume pada project di openstack.

kasusnya adalah, sewaktu project di buat, kapasitas volume pada project tersebut hanya di buat sebesar 19 TeraByte. sementara, saya ingin membuat sebuah volume yang lebih besar dari itu. otomatis donk, jadi limited. untuk menambahkan, berikut caranya, mudah kok lewat GUI.

project openstack

project openstack

yang pertama, dari dashboard menuju menu admin, kemudian cari menu project, lalu kamu pilih project mana yang akan di edit jumlah volumenya.

edit

edit

setelah itu, pilih menu edit project > quotas. maka akan tampil seperti dibawah ini :

Screenshot_1053

kamu tinggal edit sesuai keinginan, lalu klik save. tapi yang perlu di ingat, kamu harus tau besaran fisik dari harddisk yang kamu miliki agar tidak over.

sampai disini, volume sudah berubah

Screenshot_1050

Bagikan saja, itu tidak berat

Membuat instance di openstack

tulisan kali ini adalah cara membuat instance di openstack. openstack itu virtualizor, sama seperti proxmox dan vmware vspare.

*PERHATIAN : tutorial ini hanya untuk orang yang belum pernah berurusan dengan openstack, yang sudah PRO dan hebat, harap SKIP*

sedangkan instance, adalah virtual private server.

pertama-tama, kamu harus login ke dashboard openstack.

login openstack

login openstack

setelah login, pastikan kamu mau buat intance nya di project mana. kemudian klik launch instance.

lauch

setelah itu, mulai memberi nama instance, pada percobaan kali ini, saya memang benar akan membuat server dummy untuk scan vulnerability di aplikasi berbasis web

name instance

name instance

kemudian memilih image, image disini maksudnya adalah jenis sistem operasi apa yang akan dijalankan di server.

image

image

setelah itu, memilih flavor, flavor artinya spesifikasi yang akan dimuat pada server

flavor

flavor

kemudian pilih network, network disini, pilihlah yang internal dari openstack, yaitu network yang berkomunikasi didalam lingkup openstack

network

network

kemudian, pilih keypair. kamu juga bisa inport keypair yang kamu miliki. keypair ini berguna untuk akses server nantinya

keypair

keypair

security group. ini adalah firewall, membatasi port mana saja yang bisa melewati server, defaultnya kita beri all saja, karena biasanya untuk firewall ada diperangkat terpisah.

security

setelah semua yang berbintang diisi, kemudian klik launch instance, tunggu beberapa detik/menit, maka instance akan terbentuk.

dummy server

setelah terbentuk, kemudian menambahkan network eksternal agak server bisa di remote. klik assosiate IP

assosiasi ip

assosiasi ip

klik logo tambah

tambah

jangan lupa diberi namabah, biar mudah tracenya. kemudian klik alocate IP

nama network

nama network

karena sistemnya DHCP, maka IP akan tertambah otomatis.

sukses penambahan ip

sampai tutorial ini selesai ditulis, server sudah bisa di remote menggunakan IP ( dijaringan internal ) dan keypair yang ditambahkan.

setelah selesai membaut instance, kamu bisa melakukan hardening server terlebih dahulu. banyak metodenya, bisa dimulai dari hardening SSH seperti dibawah ini

Hardening Server #1 . merubah default port akses SSH pada linux

atau melakukan instalasi malware detect seperti dibawah ini

Hardening Server #2 Instalasi dan konfigurasi Malware Detect pada linux server

 

 

Bagikan saja, itu tidak berat

cara mudah membuat virtual server di proxmox

halo, catatan kali ini tentang cara mudah membuat virtual server di proxmox

disini, saya asumsikan kalian sudah login dan mendapati tampilan awal dari proxmox.

ada dua metode untuk membuat virtual server di proxmox.

  1. create VM : adalah membuat virtual server manual, yaitu instalasi OS server dengan cara instalasi seperti biasanya.
  2. create CT : menggunakan container. container adalah image server linux yang sudah terinstall. jadi tinggal di input saja ke virtual server. tidak perlu repot install dari awal. dan ini yang saya gunakan. kalau ada yang susah, kenapa harus mudah 😀 😀

projika di klik Create VM, akan muncul seperti ini :

pro2dan jika di klik Create CT akan muncul seperti ini :

pro3nah, list OS yang kuning-kuning itu dari mana ? oke akan saya jelaskan dari mana asal muasalnya.

yaitu kita harus menambahkan sendiri pada sever proxmox kita melalui upload. La, itu kok listnya cuma dua mas ? mau berapa aja juga bisa, tinggal mau kita saja. kalau saya maunya dua, situ mau apa ? server-server saya, hehehehe

jadi cara menambahkannya seperti ini :

pro4untuk menu upload , ada yang namanya upload iso ( iso yaitu file OS yang akan digunakan jika ingin membuat virtual server secara manual ) , ada juga menu upload container ( nah, ini yang asik. kita bisa membuat container sendiri yang kita kustom untuk kita upload diserver proxmox )

ada juga menu template, dimana template di sediakan oleh website proxmox, jadi kita tinggal download ke server proxmox kita. begini tampilannya :

pro5sangat lengkap. kurang mudah apa coba. hehehe..

sekian tulisan dari saya tentang cara mudah membuat virtual server di proxmox

untuk instalasinya, akan saya bahas di lain artikel.

Bagikan saja, itu tidak berat