Load Balance dengan NGINX 


Pada coretan kali ini, akan mencoba melakukan simulasi Load Balancer pada Virtual Machine. Untuk sistem operasi menggunakan CentoS7 .
Load Balancing adalah teknik untuk mendistribusikan beban trafik pada dua atau lebih jalur koneksi secara seimbang, agar trafik dapat berjalan dengan optimal, memaksimalkan troughput, dan memperkecil waktu tanggap dari server serta menghindari overload pada salah satu jalur koneksi.

Berikut topologi yang akan di gunakan :


Pada topologi di atas, di simulasikan dengan menggunakan virtual machine, dimana terdapat 3 buah vm dan saling terkoneksi
  • Load Balancer  = Nginx
  • Webserver 1     = Apache
  • Webserver 2     = Apache
Untuk instalasi Nginx pada server jalankan perintah berikut
  • yum install epel-release -y
  • yum install nginx -y
kemudian ubahlah konfigurasi berikut dengan memberikan tanda "#" pada 
  • vi /etc/nginx/nginx.conf

Setelah itu buatlah sebuah konfigurasi untuk setting LB nya
  • vi /etc/nginx/conf.d/load_balance.conf


upstream backend {
        server 192.168.100.10:80;
        server 192.168.100.20:80;
    }

    server {
        listen 80;
        server_name 192.168.100.30;
        access_log /var/log/nginx/access_log;
        error_log /var/log/nginx/error_log;

        location / {
            proxy_pass http://backend;
        }
    }

Jalankan Nginx
  • systemctl start nginx
  • systemctl enable nginx
  • systemctl status nginx
Jika ada kendala coba lakukan pengecekan SeLinux, atau dengan menambahkan firewall
  • firewall-cmd --add-port=80/tcp --permanent
  • firewall-cmd --reload
kemduian jalankan IP LB di browser 192.168.100.30

GIT 


Pada coretan kali ini akan membahas mengenai GIT, yang akan di terapkan pada sistem operasi linux CentOS.

Gitlab merupakan manager repository git berbasis web. Gitlab sudah memiliki fitur CI/CD sehingga memudahkan developer untuk mendeploy aplikasi ke server dengan cepat dan aman. Aman karena gitlab menyediakan fitur security seperti SAST DAST dan Dependency Scanning (versi enterprise).

Selain tersedia versi software as a service (SaaS), Gitlab juga dapat di install di on premise, sehingga pengguna dapat membuat private repository di local server mereka. Versi Gitlab on premise menawarkan 2 product, yaitu Gitlab community edition atau Gitlab CE dan Gitlab enterprise edition atau Gitlab EE. Gitlab EE memiliki fitur yang lebih advanced disbanding Gitlab CE, diantaranya fitur integrated SAST dan DAST, multiple Kubernetes cluster, dll.


Instalasi

  1. lakukan update epel-release
    #yum update epel-release
  2. Kemudian lakukan instalasi awal GIT
    #sudo yum install -y curl policycoreutils-python openssh-server

  3. Lakukan instalasi postfix
    #sudo yum install postfix
  4. Dan jalankan postfix
    #sudo systemctl enable postfix
    #sudo systemctl start postfix
  5. Tambahkan Repository GIT
    #curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
  6. Lakukan instalasi gitlab-ce
    #sudo EXTERNAL_URL="https://gitlab.example.com" yum install -y gitlab-ee
  7. Jika telah selesai jalankan pada browser dengan mengetikan
    #http://IP-server-git/
Jika masih bingung coba kunjungi situs resmi disini.

GRAFANA


Pada coretan kali ini, akan membahas instalasi grafana, yang berfungsi sebagai media antarmuka untuk melakukan monitoring.
Grafana adalah analitik open source multi-platform dan perangkat lunak visualisasi interaktif yang tersedia sejak 2014. Grafana menyediakan grafik, dan peringatan untuk web ketika terhubung ke sumber data yang didukung.

Jadi grafana ini berfungsi sebagai media antarmuka untuk melakukan monitoring, grafana mengambil data dari Exporter dan di baca dengan prometheus kemudian di tampilkan dalam bentuk grafik di grafana.

Instalasi 

  1. Buatlah sebuah repositori pada sistem operasi
    #vi /etc/yum.repos.d/grafana.repo
  2. Masukan konfigurasi berikut
    [grafana]

    name=grafana
    baseurl=https://packages.grafana.com/oss/rpm
    repo_gpgcheck=1
    enabled=1
    gpgcheck=1
    gpgkey=https://packages.grafana.com/gpg.key
    sslverify=1
    sslcacert=/etc/pki/tls/certs/ca-bundle.crt
  3. Lakukan instalasi dengan perintah
    #yum install grafana
  4. Jalankan dengan perintah
    #systemctl enable grafana-server
    #systemctl start grafana-server
  5. Untuk pengecekan bisa dilakaukn dengan perintah
    #systemctl status grafana
  6. Jalankan di browser dengan menggunakan http://Ip-Server:3000, default port untuk grafana 3000
  7. Agar tampilan grafana lebih menarik lakukan instalasi berikut
    #yum install fontconfig#yum install freetype*#yum install urw-fonts

Ex Error

  1. bukalah port grfana
    #firewall-cmd --add-port=3000/tcp --permanent
    #firewall-cmd --reload

Node_Exporter


Node_exporter adalah sebuah aplikasi yang di pasang pada server atau target yang akan dilakukan monitorin, juga bisa disebut sebagai agent dari prometheus. Ada banyak yang bisa digunakan sebagai Exporter, seperti mysqlexporter, tetapi pada coretan kali ini yang akan digunakan untuk memantau penggunaan memory disk pada server atau target


  1. Instalasi node_exporter dengan mendownload file pada situ resmi Link atau bisa menggunakan perintah
    #wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
  2. Jika proses telah selesai, maka extrak file yang telah di download dengan menggunakan perintah
    #tar -xvzf node_exporter-0.18.1.linux-amd64.tar.gz
  3. Salin atau pindahkan file node exporter dengan perintah
    #mv node_exporter-0.17.0.linux-amd64/node_exporter /usr/local/bin/
  4. Kemudian buatlah service node_exporter dengan perintah
    #vim /etc/systemd/system/node_exporter.service
  5. Isikan konfigurasi berikut

    [Unit]
    Description=Node Exporter
    After=network.target

    [Service]
    User=nodeusr
    Group=nodeusr
    Type=simple
    ExecStart=/usr/local/bin/node_exporter

    [Install]
    WantedBy=multi-user.target
  6. Lakukan restart dengan perintah berikut
    #systemctl start node_exporter
  7. Buka port node exporter
    #firewall-cmd --zone=public --add-port=9100/tcp --permanent
    #firewall-cmd --reload
  8. Agar node_exporter mengirimkan informasi mengenai perangkat atau server ke prometheus,  edit file prometheus dengan perintah
    #vim /etc/prometheus/prometheus.yml
  9. Kemudian tambah dengan konfigurasi berikut

    - job_name: 'node_exporter_centos'
        scrape_interval: 5s
        static_configs:
          - targets: ['10.94.10.209:9100']
  10. Lakukan restart Prometheus
    #systemctl restart prometheus

PROMETHEUS 


Kali ini saya akan berbagi pengalaman tentang instalasi dan konfigurasi prometheus.
Prometheus adalah sebuah aplikasi open source untuk monitoring system dan alerting yang dibuat oleh soundclouud. Pada awal tahun 2012 banyak perusahaan dan organisasi yang sudah mengadopsi  prometheus. Prometheus sangat aktif di development dan komunitas pengguna

Tahapan instalasi dari prometheus banyak sekali caranya, tetapi dalam coretan kali ini saya membagikan pengalaman cara instalasi prometheus berdasarkan pengalaman. Didalam coretan ini saya menggunakan prometheus di sistem operasi CentOS. Berikut tahapan instalasi dan konfigurasinya.
  1. Sebelum melakukan instalasi prometheus, download dahulu prometheus dengan menggunakan perintah berikut
    "wget https://github.com/prometheus/prometheus/releases/download/v2.15.2/prometheus-2.15.2.linux-amd64.tar.gz " atau bisa mengunjungi situs Prometheus
  2. kemudian cek SeLinux, untuk mengeceknya sudah di jelaskan pada coretan disini. 
  3. Buatlah sebuah directory atau folder
     mkdir /etc/prometheus 
     mkdir /var/lib/prometheus 
  4. Ubah ownernya sesuai dengan user yang digunakan contohnya
    chown irfan:irfan /etc/prometheus
    chown irfan:irfan /var/lib/prometheus 
  5. Extrak hasil download tadi dengan perintah
    tar -xvzf prometheus-2.15.2.linux-amd64.tar.gz
  6. Untuk memudahkan, ubahlah prometheus prometheus-2.15.2.linux-amd64 dengan perintah
    mv prometheus-2.15.2.linux-amd64 prometheus package 
  7. Salin file yang ada pada directory prometheuspackage
    cp prometheuspackage/prometheus /usr/local/bin
    cp prometheuspackage/promtool /usr/local/bin
    cp -r prometheuspackage/consoles  /etc/prometheus
    cp -r prometheuspackage/console_libraries  /etc/prometheus
  8. Kemudian ubah kembali ownernya
    chown irfan:irfan /usr/local/bin/prometheus
    chown irfan:irfan /usr/local/bin/promtool
    chown -R irfan:irfan /
    etc/prometheus/consoles
    chown -R irfan:irfan /etc/prometheus/console_libraries
  9. Buatlah sebuah file prometheus.yml
    touch /etc/prometheus/prometheus.yml dan buka dengan perintah vi /etc/prometheus/prometheus.yml
  10. Kemudian isikan seperti berikut ini

    global: 
        scrape_interval: 10s

    scrape_configs:
       
       -  job_name: 'prometheus_master'
         
          scrape_interval: 5s
         
          static_configs:
              -  targets: ['localhost:9090']
  11. Lalu buat sebuah service prometheus agar dapat dijalankan secara otomatis
    vi /etc/systemd/system/prometheus.service
  12. Isikan dengan perintah berikut

    [Unit]
    Description=Prometheus
    Wants=network-online.target
    After=network-online.target

    [Service]
    User=irfan
    Group=irfan
    Type=simple
    ExecStart=/usr/local/bin/prometheus --config.file /etc/prometheus/prometheus.yml --storage.tsdb.path /var/lib/prometheus/ --web.console.templates=/etc/prometheus/consoles --web.console.libraries=/etc/prometheus/console_libraries

    [install]
    WantedBy=multi-user.target
  13. Jalankan service daemon dan jalankan service prometheus
    systemctl daemon-reload
    systemctl enable prometheus
    systemctl start prometheus
  14. Lakukan pengecekan dengan perintah
    systemctl status prometheus
  15. Kemudian buka pada web browser dengan memasukan IP address dan port, untuk default port prometheus 9090
    contoh 192.168.10.1:9090

EX ERROR

Jika terjadi error, coba lakukan pengecekan SeLinux atau membuka port 9090 pada firewall
  1. SeLinux 
  2. Untuk Firewall bisa dengan perintah
    firewall-cmd --add-port=9090/tcp --permanent
    firewall-cmd --reload
  3. Coba buka kembali.

SeLinux CentOS 7


SeLinux adalah suatu fitur pengaturan keamanan yang membatasi akses ke modul kernel tertentu. fitur ini biasanya digunakan secara standar pada sistem operasi CentOS dan RHEL, yang berguna untuk memberikan keamanan tambahan untuk sistem operasi tersebut. 
Di dalam seLinux terdriri dari policies , yaitu peraturan yang memperbolehkan atan tidaknya penggunakan aplikasi tertentu. 
Terdapat tiga status dalam SeLinux, antara lain :
  • Enforcing, artinya semua akses tanpa memberikan hak kepada seseorang yang menggunakan sistem, dengan di ikuti peringatan
  • Permissive, artinya membolehkan akses tanpa memberikan hak kepada seseorang yang menggunakan sistem, dengan diikuti peringatan.
  • Disable, artinya memberikan hak kepada seseorang tanpa memberi peringatan

Mematikan SeLinux

Ada beberapa cara dalam mematikan seLinux, yaitu secara sementara dan  permanen, jika dimatikan secara sementara, kita tidak perlu mengorbankan kemanan dari server, seLinux akan kembali aktif setelah sistem dinyalakan ulang (restart). Jika dimatikan secara permanen, kita dapat melakukan apapun di server tanpa mendapat peringatan, akan tetapi, server tidak terlindungi dengan semurna.

Cara Disable Sementara

sebelum melakukan disable, cek dahulu status SeLinux dengan perintah
  • sestatus
jika dalam status tersebut seLinux masih dalam keadaan enforcing, maka untuk melakukan disable sementara dengan menjalankan perintah 
  • setenforce 0
selanjutnya cek kembali apakah sudah berubah menjadi permissive

Cara Disable Permanen

Sama halnya dengan sebelumnya, cek dahulu status seLinux. 
Untuk melakukan disable permanen dengan menggunakan perintah
  • vi /etc/sysconfig/selinux   "vi" adalah text edito

yang perlu diubah dari SeLinux adalah dengan mengganti value SELINUX menjadi disable
  • SELINUX=disable

.....Sekian Terimakasih......

Web Server CentOS 7



Sedikit pengetian dari Web server
Web server merupakan sebuah software yang memberikan layanan berbasis data serta berfungsi untuk menerima permintaan HTTP atau HTTPS pada klient yang dikenal dan sering kita kenal dengan web browser (Google Chrome, Mozilla Firefox, dll).

Dalam coretan kali ini, saya coba menerapkan webserver dalam server centoOS 7
  • Instalasi 
  1. Lakukan Update menggunakan perintah "yum update" tunggu sampai proses selesai
  2. Jalankan perintah "yum install httpd" perintah ini untuk melakukan instalasi webserver pada server centOS
  3. pilih "y" untuk melanjutkan
  4. setelah enable httpd agar aktif otomatis ketika server restart/reboot dengan mengetikan perintah "systemctl enable httpd"
  5. untuk mengaktifkan nya dengan perintah  "systemctl start httpd".
  6. lakukan pengecekan dengan mengetikan perintah "systemctl status httpd"
  • Melakukan pergantian Port (jika diperlukan)
Proses ini dilakukan jika kita membutuhkan port berbeda, pada awalnya httpd atau webserver memiliki port 80, maka pada coretan ini akan di ubah dengan menggunakan port 8899
  1. Buka file httpd dengan menggunakan tools text editor, saya menggunakan "vi", sehingga perintahnya "vi /etc/httpd/conf/httpd.conf" lalu enter
  2. kemudian edit pada bagian "Listen 80" ganti dengan "Listen 8899" simpan dengan perintah ":wq" lalu enter
  3. restart httpd dengan perintah "systemctl restart httpd"
  4. untuk mengujinya silahkan buka web browser, lalu ketikan "http://ip-server:8899"
EX ERROR
Jika pada saat melakukan restart httpd erorr port, maka lakukan perintah berikut
  1. Lakukan Instalasi  "yum install policycoreutils-python -y" pada terminal
  2. Kemudian daftarkan port yang telah dibuat dengan perintah " semanage port -a -t http_port_t -p tcp 8899(port baru)" dan " semanage port -m -t http_port_t -p tcp 8899 "
  3. Jika masih belum bisa, dapat dengan membuka port pad firewall " firewall-cmd --add-port=8899/tcp --permanent"
  4. Dapat juga dengan mematikan seLinux "setenforce 0" lalu enter