Administrasi Server

Lab 8.19 Load Balancing with Reverse Proxy on Nginx

10.00 G.M.A 0 Comments



Assalammualaikum wr wb

Alhamdulillah bertemu lagi kita ini adalah akhir dari Lab Nginx, uh akhirnya selesai juga yah baguslah kalau udah selesai , tapi besok mulai ada tugas Lab baru. Dah kali ini materi yang akan saya bagikan adalah loadbalancing menggunakan reverse proxy tapi bukan hanya load balancing tapi juga ada fail overnya juga loh mantap kan dah pokoknya nikmatin aja.


Konfigurasi Server


Sebelum konfigurasi Load Balance, edit terlebih dahulu file konfigurasi DNS pada zona forward dan juga zona reverse untuk menambahkan domain node1, node2 dan node3

1) Pertama edit terlebih dahulu file forward dan reverse milik domain yang sudah kalian buat.




2) Edit file konfigurasi Web Server Nginx. Disini saya mengeditnya pada file Virtual Host yang sudah saya buat pada lab sebelumnya tapi anda juga bisa membuatnya jika anda mau tapi yang pasti harus di folder conf.d dan harus berektensi .conf. Lalu tambahkan syntax ini untuk mengatur fungsi masing - masing tiap server.


Keterangan:


  • upstream diatas berguna untuk membuat block untuk membuat cluster untuk proxy. Dan cluster disana, saya menamainya dengan ghifarbackend. Namanya bisa anda tentukan sesuka hati
  • server merupakan anggota (node) dari cluster yang telah dibuat. Disana saya mendaftarkan 3 anggota atau 3 server, yaitu node1.ghifar.net node2.ghifar.netdan node3.ghifar.net dengan port :80 ini artinya dalam cluster ghifarbackend dengan anggotanya akan menangani request melalui port 80.
  • Secara default, jika tidak menambahkan apa apa, hanya server serveranda:port maka controller akan mengatur agar server tersebut hanya menangani 1 kali request dari klien. Dan jika ditambahkan keterangan seperti misalnya weight=2 merupakan beban yang ditanggung sebuah anggota atau node. Misalnya diatas, saya mengatur node1 dengan weightnya 2. Ini artinya node1 akan menangani 2 kali request klien secara berurutan. Kalau backup merupakan option yang akan menangani request jika anggota atau node yang lain mati. Ibaratnya seperti failover, tapi dalam lingkup metode loadbalancing. Jadi node3 yang saya atur sebagai server backup dia akan mengambil alih request dari klien kalau node yang lain mati. Sedangkan kalau node1 dan node2 hidup, node3 tidak akan menangani request dari klien.
  • proxy_redirect off berguna agar controller tidak melakukan redirect pada suatu konten website. 
  • proxy_set_header berguna untuk mengizinkan mendefinisikan ulang atau menambahkan bidang ke header permintaan yang dikirimkan ke server proxy.
  • proxy_set_header X-Real-IP $remote_addr berguna untuk mengatur alamat IP dari klien sehingga proxy dengan benar dapat membuat keputusan atau masuk berdasarkan informasi ini. Variabel $remote_addr merupakan IP client yang mengakses server.
  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for maksudnya adalah Header X-Forwarded-For adalah daftar yang berisi alamat IP dari setiap server yang telah diprogramkan klien sampai saat ini. Pada contoh di atas, kami menetapkan variabel $ proxy_add_x_forwarded_for ini. Variabel ini mengambil nilai dari header X-Forwarded-For asli yang diambil dari klien dan menambahkan alamat IP server Nginx sampai akhir.
  • proxy_set_header Host $http_host Permintaan di atas menetapkan header "Host" ke variabel $http_host, yang berisi informasi tentang host asli yang diminta
  • proxy_pass_header node1,node2 berguna untuk mengizinkan lewat header yang dinonaktifkan dari server proxy ke client.
  • location / diatas menandakan konten website berada. Pada konfigurasi diatas, saya mengaturnya pada proxy_pass http://ghifarbackend/ .ini artinya saya mengaturnya kalau klien mengakses server controller, maka controller akan meneruskan request tersebut ke cluster ghifarbackend yang telah dibuat dengan beban yang telah ditentukan sebelumnya


3) Lalu restart service Nginx agar konfigurasi berjalan



Konfigurasi Server Node1, Node2 dan Node3


Lalu file index Pada masing-masing node1, node2 dan node3 untuk verifikasi hasil konfigurasi






Verifikasi


1) Lakukan pengetsan pada Web Browser client dengan cara mengakses http://Domain.kita milik Server Controller


Maka hasilnya akan sesuai dengan yang sudah dikonfigurasi pada server controller, karna node1 diatur untuk menampung beban request client sebanyak 3 kali maka pada saat request ke 4, controller akan mengarahkan ke node2, sedangkan server node3 tidak akan digunakan, karna dia berperan sebagai backup yang hanya akan digunakan pada saat server lainnya sedang down atau tidak aktif



2) Sekarang coba matikan server node1


Karna node1 mati, maka konten web akan dibebankan pada node2, sedangkan node 3 masih belum digunakan, karna server balancing (controller) menganggap masih ada server yang aktif dan kemudian request client akan diserahkan pada server tersebut.

4) Nah sekarang coba matikan server node2


5) Setelah itu, akses kembali server controller pada web browser client


Pada saat ini lah server backup (node3) digunakan. Karena node1 dan node2 mati, maka server balancing (controller) akan mencari server backup dan menyerahkan request client pada server backup tersebut.

6) Lantas bagaimana jika semua server mati? jika ingin tahu coba matikan server node3nya maka hasilnya adalah  503 bad gateway


0 komentar:

Administrasi Server

Lab 8.18 Reverse Proxy Pass on Nginx

09.33 G.M.A 0 Comments



Assalamu'alaikum wr.wb

Apa kabs, yo pada postingan kali ini yo ane ingin berbagi yo materinya masih sama yo masih tentang nginx yo sabar aja yo tinggal 1 lab lagi yo, pokoknya kali ini kita akan membahas cara mengkonfigurasi nginx yo sebagai reverse proxy yo. Jadi disini tidak menggunakan aplikasi pihak ketiga, kita akan menggunakan module dari nginx, yaitu ngx_http_proxy_module.


*Konfigurasi Server Controller


Sebelum konfigurasi Reverse Proxy Pass, edit terlebih dahulu file konfigurasi DNS pada zona forward dan juga zona reverse untuk menambahkan host node1 agar bisa kita panggilmenggunakan hostname.

1) Pertama edit terlebih dahulu zona forward dan reverse yang sudah kalian buat




2) Restart service DNS agar konfigurasi yang baru berjalan dan jangan lupa di dig
systemctl restart named

3) Edit file konfigurasi Web Server Nginx, disini saya mengeditnya di file konfigurasi Virtual host yang sudah saya buat pada lab sebelumnya tapi anda juga bisa membuat file baru di directory yang sama dan harus berektensi .conf.
Kemudian masukan syntax untuk mengaktifkan module proxy seperti pada gambar



  • proxy_redirect off berguna agar controller tidak melakukan redirect pada suatu konten website. 
  • proxy_set_header berguna untuk mengizinkan mendefinisikan ulang atau menambahkan bidang ke header permintaan yang dikirimkan ke server proxy.
  • proxy_set_header X-Real-IP $remote_addr berguna untuk mengatur alamat IP dari klien sehingga proxy dengan benar dapat membuat keputusan atau masuk berdasarkan informasi ini. Variabel $remote_addr merupakan IP client yang mengakses server.
  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for maksudnya adalah Header X-Forwarded-For adalah daftar yang berisi alamat IP dari setiap server yang telah diprogramkan klien sampai saat ini. Pada contoh di atas, kami menetapkan variabel $ proxy_add_x_forwarded_for ini. Variabel ini mengambil nilai dari header X-Forwarded-For asli yang diambil dari klien dan menambahkan alamat IP server Nginx sampai akhir.
  • proxy_set_header Host $http_host Permintaan di atas menetapkan header "Host" ke variabel $http_host, yang berisi informasi tentang host asli yang diminta
  • proxy_pass_header node1 berguna untuk mengizinkan lewat header yang dinonaktifkan dari server proxy ke client.
  • location / berguna untuk mengatur halaman website. Garis miring (/) menandakan direktori root. Jadi / itu menandakan halaman utama web (index) dan subdirektori didalamnya diikuti dengan nama direktori tersebut.
  • proxy_pass http://node1.ghifar.net/ Menetapkan protokol dan tujuan akan diarahkan request dari klien. disini saya mengaturnya kalau klien mengakses server controller, maka controller akan meneruskan request tersebut ke http://node1.ghifar.net/ 

4) lalu restart service nginx agar konfigurasi yang baru saja kita tambahkan bisa running.




Konfigurasi node1


Di server ini pastikan service nginx sudah terinstall dan sudah berjalan.

1) Disini node1 saya menggunakan konfigurasi dari lab sebelumnya. Maka dari itu edit file index.html untuk konten Web Nginx yang secara defaultnya terletak di directory /usr/share/nginx/html/  karena itu adalah lokasi yang saya tetapkan pada file vhost.conf




2) Lalu kita verifikasi di client.  Dengan cara membukanya di browser dengan http://namadomain.kita .




0 komentar:

Administrasi Server

Lab 8.17 Installation Php-fpm on Nginx

09.02 G.M.A 0 Comments



Assalamualaikum wr wb.

Halooha kali ini saya mau berbagi tentang cara tentang instalasi Php-fpm yang merupakan gabungan php dan file cgi . yah pokoknya begitulah untuk lebih lanjutnya lihat aja di postingan di bawah ini. Silahkan dinikmati.  


*Definisi


PHP (Hypertext Preprocessor) adalah bahasa skrip yang dapat ditanamkan atau disisipkan ke dalam HTML. Dengan kata lain, PHP merupakan bahasa pemrograman script server-side yang didesain untuk pengembangan web.
PHP-FPM (PHP FastCGI Proccess Manager) adalah alternatif implementasi PHP FastCGI dengan tambahan fitur yang berguna untuk halaman website.

*Konfigurasi

1) Untuk konfigurasi ini pastikan anda sudah meginstall / memasang repo epel. Install php, php-mbstring, php-pear dan php-fpm sebagai paket yang dibutuhkan untuk php-fpm. dan enable repo epel dengan menambahkan option --enablerepo=epel. Package Php-fpm juga terdapat pada repository remi jadi ente tinggal pilih mau susah nginstall repo remi atau tidak .


2) Konfigurasi php-fpm di /etc/php-fpm.d/www.conf . Disini kita akan mengubah user dan grup untuk php-fpm tersebut. Karena disini kita menggunakan Nginx, maka ubah dari defaultnya yaitu apache menjadi nginx. Cari baris seperti dibawah ini


















3)Jalankan Php Fpm kemudian enable agar berjalan otomatis saat komputer restart.


4) Edit file konfigurasi Web Server Nginx, disini saya mengeditnya di file Virtual Host yang sudah saya buat sebelumnya. Tambahan syntak yang sudah saya tandai pada gambar dibawah ini


  • location ~ \.php$ berguna untuk membuat block konfigurasi untuk file .php yang akan dieksekusi dan ditampilkan ke client.
  • fastcgi_pass 127.0.0.1:9000 berguna untuk mendefinisikan server fastcgi. Disini karena saya menginstallnya didalam server yang sama, maka saya mengaturnya menjadi ip loopback atau localhost. Ente juga bisa mengaturnya menjadi IP atau domain server cgi beserta portnya.
  • fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name berguna untuk mengatur parameter SCRIPT_FILENAME yang kemudian akan diberikan ke server FastCGI untuk dieksekusi. Parameter SCRIPT_FILENAME merupakan parameter yang digunakan dalam PHP untuk menentukan nama script. Maka dari itu terdapat value $fastcgi_script_name dan $document_rootmerupakan letak direktori konten website tersebut.
  • fastcgi_param PATH_INFO $fastcgi_path_info berguna untuk memberikan informasi letak dari konten php tersebut dan mengirimkannya ke server fastcgi.
  • include fastcgi_params berguna untuk memasukkan parameter fastcgi yang telah diatur.

5) Restart sevice nginx agar konfigurasi yang baru berjalan



6) Untuk pengujiannya, disini saya membuat file info.php yang akan menampilkan versi php pada web browser.


7) Lalu tinggal kita test melalui browsser . Buka dengan domain/info.php .



0 komentar:

Administrasi Server

Lab 8.16 Configure HTTPS on NGINX

08.28 G.M.A 0 Comments


Assalammualaikum wr wb
Yahoo \(^o^)\  ketemu lagi di postingan yang setengah hati buatan saya. Kali ini kita akan melanjutkan konfigurasi pada nginx, tenang aja tinggal 3 lab lagi buat nginx jadi semangat.. Kali ini kita juga akan kembali mempelajari tentang HTTPS.


Assalamu'alaikum Wr Wb

Yah ane balik lagi. Setelah sebelumnya saya telah posting beberapa lab tentang Web server Apache kali ini juga masih lannjut, pokoknya lanjut terus sampai lab 8.19. Kali ini saya akan berbagi cara mengkonfigurasi HTTPS di Apache, yah pokoknya silahka dinikmati sampai mual.

*Definisi



HTTPS (Hyper Text Transfer Protocol Secure) yaitu protokol yang mengatur komunikasi antara client dan server. Hampir sama seperti HTTP tapi ada yang berbeda yaitu keamanannya karena HTTPS menggunakan 2 protokol tambahan yaitu SSL (Secure Socket Layer) atau Transport Layer Security (TLS) yang memungkinkan adanya Enkapsulasi dan menambahkan keamanan sebuah jaringan yang diakses pada browser.

Berikut Topologi yang saya buat



*Konfigurasi


1) Pertama pindah terlebih dahulu, ke directory /etc/pki/tls/certs/ karena disitulah letak file make yang berfungsi untuk membuat Certificied SSL. Sekarang buat file .key yang akan berguna untuk  kunci / password yang akan membuat certificate kita aman. Lalu nanti akan diminta password untuk file key tersebut, maka dari itu masukan saja passwordnya terserah kalian. Lalu jangan lupa buat menjadi rsa key (Allgoritma encryption) .




2) Sekarang buat file .csr nya. File csr ini merupakan identitas dari certificate yang nantinya akan kita pasang bada web kita. Maka nanti kalian akan diminta untuk memasukan beberapa identitas, Seperti Negara, Email, Organisasi, etc.


3) Nah sekarang buat file .crt yang adalah certificate yang terbuat dari gabungan file .csr dan .key yang sudah dibuat tadi dengan menggunakan openssl



Keterangan :

  • x509 merupakan format public key certificates atau sertifikat yang digunakan
  • -in merupakan sumber dari identitas yang nantinya akan di include kedalam sertifikatnya
  • -out merupakan certifikat, atau hasil dari generate dari file .csr dan .key.
  • -req -signkey merupakan file keynya.
  • -days merupakan lease time untuk sertifikat tersebut dalam hitungan hari

4) Sekarang konfigurasi HTTPS untuk domain tertentu, disini saya mengkonfigurasinya pada file konfigurasi Virtual host yang sudah saya buat pada lab sebelumnya. Jika kalian ingin mengeditnya di tempat konfigurasi global nginx juga tidak apa apa.



  • listen 443 ssl berarti suatu domain dikonfigurasi untuk mendengarkan atau membaca service https pada port 443
  • ssl_protocol TLSv1 TLSv1.1 TLSv1.2 merupakan standarisasi protocol yang digunakan oleh HTTPS yaitu ssl dan juga TLS (Transport Layer Security)
  • ssl_certificate merupakan letak dari file sertifikat .crt yang telah dibuat dan dikonfigurasi
  • ssl_certificate_key merupakan letak key dari sertifikat ssl tersebut


5) Jika sudah, sekarang restart nginxnya



6) Daftarkan Service https pada firewall dan jangan lupad i reload agar bisa service berjalan.


7) Lalu buat file indexnya sesuai lokasi yang ditentukan




7) Lalu kita test pada browser client  Nah maka akan ada peringatan Connection is not private karena SSL yang kita buat bersifat local dan belum terdaftarkan. Untuk yang menggunakan browser Google Chrome, klik Advanced kemudian klik Proced to "domain" (unsafe)





8) Sekarang coba di inspect pagenya, kemudian pada tab security akan ada caution broken HTTPS. Jika ingin melihat sertifikatnya klik View certificate




























0 komentar:

Konfigurasi Chat Server Ejabberd

05.12 G.M.A 0 Comments





Assalamualaikum wr.wb.

Hai semua. Kembali lagi diblog ini :v wkwkwk. Pada kesempatan kali ini saya akan menjelaskan tentang ejabberd.
Ejabberd adalah suatu chat server yang bisa digunakan untuk obrolan secara online atau local. Untuk melakukan installasi Ejabberd ini kita butuh sebuah Server dan Client dengan menggunakan aplikasi spark atau pidgin sebagai pelantaranya.

Berikut topologinya kurang lebih seperti dibawah ini.



YUK udah liat kan mari kita lanjutkan guys :v

Server
1. Pertama kita update dulu agar packagenya / repository juga terupdate install paket-paket ejabberd
"apt-get -y install ejabberd"





2. Ketika sudah didownload paketnya maka kita akan meregister akun admin kita dengan cara
"ejabberdctl registert admin localhost password"




Keterangan:
  • admin = nama user yang akan dibutuhkan
  • localhost = lanjutan dari nama admin yaitu akan menjadi pas di web login admin@localhost
  • 123 = password
3. Setelah itu kita edit beberapa kata di file .cfg di /etc/ejabberd 
"nano /etc/ejabberd/ejabberd.cfg"


4. Kita edit dibagian yang saya sudah tandai digambar




Keterangan :
  • admin = user yang tadi diregister
  • localhost = penamaan hostname
5. Kita restart service ejabberd tersebut agar sinkron sesuai yang kita konfigurasi
"service ejabberd restart"


6. Buka web brower dan ketik di address bar ip server anda dengan port default 5280 dan langsung di file /admin
"ipaddress:5280/admin"
Keterangan:
Ketika sudah masuk kita masukan user yang dibuat tadi yaitu admin@localhost dengan password anda

7. Berikut Tampilan Ejabberd di web browser

8. Untuk membuat user kita buat di  "Virtual Host > nama host > pengguna /user" . Dan kita buat yang saya udah tandain yaitu dipenguna dan sandi lalu tambahkan pengguna.




9. Berikut user yang saya buat 2 user yaitu


Client 1
Untuk keterangan lebih lanjut cek di postingan sebelumnya.
1. lalu kita buka pidginlalu konfigurasi pidgin dan tambahkan user dengan klik add

2. Lalu muncul pop up itu registrasi akun yang kita sudah buat tadi dan isi bagian pertama lalu klik yang pop up kedua

Keterangan: 
  • username = nama
  • domain = nama server anda
  • resource = ip server anda
  • password = password yang anda buat di web tadi.
3. Lalu Klik di advanced dan kita isi dibagian connect server dengan ip server anda dan ketika sudah semua klik add
4. Ketika ingin lihat akun yang kita sudah add tadi klik bagian "account" dan lihat user yang sudah kita tambahkan

5. Untuk menambahkan teman klik " Buddies > Add Buddy ".Tambahkan Buddy name atau username sesuai teman anda dan klik add. Bagian ini ketika teman anda sudah mereply balik pertemanan anda dan kita setting di client 2. Lalu anda langsung bisa chatting dengan client  lain.

Sekian tutorial dari saya. Apabila ada kekurangan atau apa mohon dikomentar. 
Wassalamualaikum wr.wb.

0 komentar: